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.

results matching ""

    No results matching ""