اتصال WIFI
الفيديو التعليمي 12 - نقل الصور لاسلكيًا عبر WIFI: https://singtown.com/learn/50005/
الفيديو التعليمي 39 - برمجة WIFI لتصحيح أخطاء OpenMV عن بُعد: https://singtown.com/learn/50899/
الفيديو التعليمي 30 - لوحة توسعة نقل الصور السلكية: https://singtown.com/learn/50521/
الفيديو التعليمي 31 - لوحة توسعة نقل الصور اللاسلكية: https://singtown.com/learn/50535/
تستخدم لوحة توسعة OpenMV الرسمية وحدة ATWINC1500، التي يمكنها نقل الصور.
معلومات تفصيلية:http://singtown.cc/product/openmv-wifi扩展板/\ إذا كنت تميل لاستخدام ESP8266، فيكفي استخدام الاتصال التسلسلي (serial).
مسح شبكات wifi


نقل الصور لاسلكيًا



نقل إحداثيات الكرة الصغيرة لاسلكيًا
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)
على غرار نقل الصور، أدخل IP:PORT في المتصفح، ويمكن رؤية عنوان IP في الطرفية (terminal). إذا كانت لوحة توسعة Wi-Fi: 192.168.1.1:8080 وإذا كانت OpenMV RT: 192.168.4.1:8080، ستحصل على بيانات JSON

إذا كنت تريد الحصول على البيانات في الكود الخاص بك، فما عليك سوى إرسال طلب GET إلى الرابط وستحصل على JSON.
على سبيل المثال، بلغة python:
import requests
r = requests.get('192.168.1.1:8080')
نقل صورة واحدة فقط
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)
إذا كانت لوحة توسعة Wi-Fi: أدخل 192.168.1.1:8080 في المتصفح. إذا كانت OpenMV RT: أدخل 192.168.4.1:8080 في المتصفح. يمكنك عرض صورة واحدة.