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.

results matching ""

    No results matching ""