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.

results matching ""

    No results matching ""