comunicación wifi
Tutorial en video 12 - Transmisión inalámbrica de imágenes por WIFI: https://singtown.com/learn/50005/
Tutorial en video 39 - Programación WIFI para depuración remota de OpenMV: https://singtown.com/learn/50899/
Tutorial en video 30 - Placa de expansión de transmisión de imágenes por cable: https://singtown.com/learn/50521/
Tutorial en video 31 - Placa de expansión de transmisión inalámbrica de imágenes: https://singtown.com/learn/50535/
La placa de expansión oficial de OpenMV utiliza el módulo ATWINC1500, que puede transmitir imágenes.
Información detallada:http://singtown.cc/product/openmv-wifi扩展板/\ Si prefieres usar el ESP8266, puedes usar comunicación serie sin problema.
escaneo wifi


transmisión inalámbrica de imágenes



transmisión inalámbrica de coordenadas de una pequeña bola
import csi
import time
import network
import socket
import json
csi0 = csi.CSI()
SSID ='OPENMV_AP' # SSID de la red
KEY ='1234567890' # Clave de la red (debe tener 10 caracteres)
HOST = '' # Usar la primera interfaz disponible
PORT = 8080 # Puerto arbitrario no privilegiado
green_threshold = ( 0, 80, -70, -10, -0, 30)
# Reiniciar el sensor
csi0.reset()
csi0.framesize(csi.QQVGA)
csi0.pixformat(csi.GRAYSCALE)
# Inicializar el módulo wlan en modo AP.
wlan = network.WLAN(network.AP_IF)
wlan.config(ssid=SSID, key=KEY, channel=2)
wlan.active(True)
print("AP mode started. SSID: {} IP: {}".format(SSID, wlan.ifconfig()[0]))
# Puedes bloquear la ejecución esperando a que se conecte un cliente
# print(wlan.wait_for_sta(100000))
def response(client):
# Leer la solicitud del cliente
data = client.recv(1024)
# Aquí se debería analizar la solicitud del cliente
# Enviar cabecera multipart
client.send("HTTP/1.1 200 OK\r\n" \
"Server: OpenMV\r\n" \
"Content-Type: application/json\r\n" \
"Cache-Control: no-cache\r\n" \
"Pragma: no-cache\r\n\r\n")
# Reloj de FPS
clock = time.clock()
# Comenzar a transmitir imágenes
# NOTA: Deshabilita la vista previa del IDE para aumentar los FPS de la transmisión.
img = csi0.snapshot()
blobs = img.find_blobs([green_threshold])
if blobs:
for b in blobs:
img.draw_rectangle(b[0:4]) # rect
img.draw_cross((b[5], b[6])) # cx, cy
client.send(json.dumps(blobs))
client.close()
server = None
while True:
if server is None:
# Crear el socket del servidor
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Enlazar y escuchar
server.bind([HOST, PORT])
server.listen(5)
# Configurar el socket del servidor como bloqueante
server.setblocking(True)
try:
print("Waiting for connections..")
client, addr = server.accept()
except OSError as e:
server.close()
server = None
print("server socket error:", e)
continue
try:
# configurar el tiempo de espera del socket del cliente a 2s
client.settimeout(5.0)
print("Connected to " + addr[0] + ":" + str(addr[1]))
response(client)
except OSError as e:
client.close()
print("client socket error:", e)
# sys.print_exception(e)
De forma similar a la transferencia de imágenes, ingresa IP:PUERTO en el navegador; la IP se puede ver en la terminal. Si se trata de una placa de expansión Wi-Fi: 192.168.1.1:8080. Si es OpenMV RT: 192.168.4.1:8080, podrás obtener los datos en formato json

Si quieres obtener los datos en tu propio código, simplemente haz una petición GET a la URL y obtendrás el JSON.
Por ejemplo, en python:
import requests
r = requests.get('192.168.1.1:8080')
transmitir solo una imagen
import csi
import time
import network
import socket
import json
csi0 = csi.CSI()
SSID ='OPENMV_AP' # SSID de la red
KEY ='1234567890' # Clave de la red (debe tener 10 caracteres)
HOST = '' # Usar la primera interfaz disponible
PORT = 8080 # Puerto arbitrario no privilegiado
green_threshold = ( 0, 80, -70, -10, -0, 30)
# Reiniciar el sensor
csi0.reset()
csi0.framesize(csi.QQVGA)
csi0.pixformat(csi.GRAYSCALE)
# Inicializar el módulo wlan en modo AP.
wlan = network.WLAN(network.AP_IF)
wlan.config(ssid=SSID, key=KEY, channel=2)
wlan.active(True)
print("AP mode started. SSID: {} IP: {}".format(SSID, wlan.ifconfig()[0]))
# Puedes bloquear la ejecución esperando a que se conecte un cliente
# print(wlan.wait_for_sta(100000))
def response(client):
# Leer la solicitud del cliente
data = client.recv(1024)
# Aquí se debería analizar la solicitud del cliente
# Enviar cabecera jpeg
client.send("HTTP/1.1 200 OK\r\n" \
"Server: OpenMV\r\n" \
"Content-Type: image/jpeg\r\n\r\n")
frame = csi0.snapshot()
cframe = frame.to_jpeg(quality=35, copy=True)
client.send(cframe)
client.close()
server = None
while True:
if server is None:
# Crear el socket del servidor
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Enlazar y escuchar
server.bind([HOST, PORT])
server.listen(5)
# Configurar el socket del servidor como bloqueante
server.setblocking(True)
try:
print("Waiting for connections..")
client, addr = server.accept()
except OSError as e:
server.close()
server = None
print("server socket error:", e)
continue
try:
# configurar el tiempo de espera del socket del cliente a 2s
client.settimeout(5.0)
print("Connected to " + addr[0] + ":" + str(addr[1]))
response(client)
except OSError as e:
client.close()
print("client socket error:", e)
# sys.print_exception(e)
Si se trata de una placa de expansión Wi-Fi: ingresa 192.168.1.1:8080 en el navegador. Si es OpenMV RT: ingresa 192.168.4.1:8080 en el navegador. Podrás ver una imagen.