Comunicação wifi
Tutorial em vídeo 12 - Transmissão de imagem sem fio via WIFI: https://singtown.com/learn/50005/
Tutorial em vídeo 39 - Programação WIFI para depuração remota da OpenMV: https://singtown.com/learn/50899/
Tutorial em vídeo 30 - Placa de expansão de transmissão de imagem com fio: https://singtown.com/learn/50521/
Tutorial em vídeo 31 - Placa de expansão de transmissão de imagem sem fio: https://singtown.com/learn/50535/
A placa de expansão oficial da OpenMV usa o módulo ATWINC1500, que pode transmitir imagens.
Informações detalhadas:http://singtown.cc/product/openmv-wifi扩展板/\ Se preferir usar o ESP8266, a comunicação serial também funciona.
Varredura de wifi


Transmissão sem fio de imagens



Transmissão sem fio das coordenadas de uma pequena bola
import csi
import time
import network
import socket
import json
csi0 = csi.CSI()
SSID ='OPENMV_AP' # Network SSID
KEY ='1234567890' # Network key (must be 10 chars)
HOST = '' # Use first available interface
PORT = 8080 # Arbitrary non-privileged port
green_threshold = ( 0, 80, -70, -10, -0, 30)
# Reset sensor
csi0.reset()
csi0.framesize(csi.QQVGA)
csi0.pixformat(csi.GRAYSCALE)
# Init wlan module in AP mode.
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]))
# You can block waiting for client to connect
# print(wlan.wait_for_sta(100000))
def response(client):
# Read request from client
data = client.recv(1024)
# Should parse client request here
# Send multipart header
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")
# FPS clock
clock = time.clock()
# Start streaming images
# NOTE: Disable IDE preview to increase streaming FPS.
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:
# Create server socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Bind and listen
server.bind([HOST, PORT])
server.listen(5)
# Set server socket to blocking
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:
# set client socket timeout to 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 semelhante à transferência de imagens, digite IP:PORT no navegador, e o IP pode ser visto no terminal. Se for uma placa de expansão Wi-Fi: 192.168.1.1:8080 Se for a OpenMV RT: 192.168.4.1:8080, você pode obter os dados json

Se quiser obter os dados no seu próprio código, basta fazer um GET na URL e você receberá o JSON.
Por exemplo, em Python:
import requests
r = requests.get('192.168.1.1:8080')
Transmitir apenas uma imagem
import csi
import time
import network
import socket
import json
csi0 = csi.CSI()
SSID ='OPENMV_AP' # Network SSID
KEY ='1234567890' # Network key (must be 10 chars)
HOST = '' # Use first available interface
PORT = 8080 # Arbitrary non-privileged port
green_threshold = ( 0, 80, -70, -10, -0, 30)
# Reset sensor
csi0.reset()
csi0.framesize(csi.QQVGA)
csi0.pixformat(csi.GRAYSCALE)
# Init wlan module in AP mode.
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]))
# You can block waiting for client to connect
# print(wlan.wait_for_sta(100000))
def response(client):
# Read request from client
data = client.recv(1024)
# Should parse client request here
# Send jpeg header
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:
# Create server socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Bind and listen
server.bind([HOST, PORT])
server.listen(5)
# Set server socket to blocking
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:
# set client socket timeout to 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)
Se for uma placa de expansão Wi-Fi: digite 192.168.1.1:8080 no navegador. Se for a OpenMV RT: digite 192.168.4.1:8080 no navegador. Você poderá ver uma imagem.