Communication wifi
Tutoriel vidéo 12 - Transmission d'images sans fil WIFI : https://singtown.com/learn/50005/
Tutoriel vidéo 39 - Programmation WIFI pour le débogage à distance d'OpenMV : https://singtown.com/learn/50899/
Tutoriel vidéo 30 - Carte d'extension de transmission d'images filaire : https://singtown.com/learn/50521/
Tutoriel vidéo 31 - Carte d'extension de transmission d'images sans fil : https://singtown.com/learn/50535/
La carte d'extension officielle OpenMV utilise le module ATWINC1500, qui peut transmettre des images.
Informations détaillées : http://singtown.cc/product/openmv-wifi扩展板/\ Si vous préférez utiliser un ESP8266, la communication série suffit.
Scan wifi


Transmission sans fil d'images



Transmission sans fil des coordonnées d'une petite balle
import csi
import time
import network
import socket
import json
csi0 = csi.CSI()
SSID ='OPENMV_AP' # SSID du réseau
KEY ='1234567890' # Clé du réseau (doit comporter 10 caractères)
HOST = '' # Utilise la première interface disponible
PORT = 8080 # Port arbitraire non privilégié
green_threshold = ( 0, 80, -70, -10, -0, 30)
# Réinitialise le capteur
csi0.reset()
csi0.framesize(csi.QQVGA)
csi0.pixformat(csi.GRAYSCALE)
# Initialise le module wlan en mode 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]))
# Vous pouvez bloquer en attendant qu'un client se connecte
# print(wlan.wait_for_sta(100000))
def response(client):
# Lit la requête du client
data = client.recv(1024)
# La requête du client devrait être analysée ici
# Envoie l'en-tête 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")
# Horloge FPS
clock = time.clock()
# Démarre le streaming d'images
# REMARQUE : Désactivez l'aperçu dans l'IDE pour augmenter le FPS de streaming.
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:
# Crée le socket serveur
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Lie et écoute
server.bind([HOST, PORT])
server.listen(5)
# Définit le socket serveur en mode bloquant
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:
# définit le délai d'expiration du socket client à 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 même que pour le transfert d'images, entrez IP:PORT dans le navigateur, l'IP est visible dans le terminal. S'il s'agit d'une carte d'extension Wi-Fi : 192.168.1.1:8080. S'il s'agit d'OpenMV RT : 192.168.4.1:8080, vous pouvez obtenir les données JSON

Si vous voulez obtenir les données dans votre propre code, il suffit de faire un GET sur l'URL et vous obtiendrez du JSON.
Par exemple, en python :
import requests
r = requests.get('192.168.1.1:8080')
Transmettre une seule image
import csi
import time
import network
import socket
import json
csi0 = csi.CSI()
SSID ='OPENMV_AP' # SSID du réseau
KEY ='1234567890' # Clé du réseau (doit comporter 10 caractères)
HOST = '' # Utilise la première interface disponible
PORT = 8080 # Port arbitraire non privilégié
green_threshold = ( 0, 80, -70, -10, -0, 30)
# Réinitialise le capteur
csi0.reset()
csi0.framesize(csi.QQVGA)
csi0.pixformat(csi.GRAYSCALE)
# Initialise le module wlan en mode 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]))
# Vous pouvez bloquer en attendant qu'un client se connecte
# print(wlan.wait_for_sta(100000))
def response(client):
# Lit la requête du client
data = client.recv(1024)
# La requête du client devrait être analysée ici
# Envoie l'en-tête 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:
# Crée le socket serveur
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Lie et écoute
server.bind([HOST, PORT])
server.listen(5)
# Définit le socket serveur en mode bloquant
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:
# définit le délai d'expiration du socket client à 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)
S'il s'agit d'une carte d'extension Wi-Fi : entrez 192.168.1.1:8080 dans le navigateur. S'il s'agit d'un OpenMV RT : entrez 192.168.4.1:8080 dans le navigateur. Vous pouvez visualiser une image.