mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Add Portenta WiFi examples.
This commit is contained in:
parent
5e024e22db
commit
cc3e4f1522
19
scripts/examples/Arduino/Portenta-H7/40-WiFi/connect.py
Normal file
19
scripts/examples/Arduino/Portenta-H7/40-WiFi/connect.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Connect Example
|
||||||
|
#
|
||||||
|
# This example shows how to connect your OpenMV Cam with a WiFi shield to the net.
|
||||||
|
|
||||||
|
import network
|
||||||
|
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect. Note this may take a while...")
|
||||||
|
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
|
||||||
|
# We should have a valid IP now via DHCP
|
||||||
|
print("WiFi Connected ", wlan.ifconfig())
|
||||||
20
scripts/examples/Arduino/Portenta-H7/40-WiFi/dns.py
Normal file
20
scripts/examples/Arduino/Portenta-H7/40-WiFi/dns.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# DNS Example
|
||||||
|
#
|
||||||
|
# This example shows how to get the IP address for websites via DNS.
|
||||||
|
|
||||||
|
import network, usocket
|
||||||
|
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect. Note this may take a while...")
|
||||||
|
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
|
||||||
|
# We should have a valid IP now via DHCP
|
||||||
|
print("WiFi Connected ", wlan.ifconfig())
|
||||||
|
print(usocket.getaddrinfo("www.google.com", 80)[0][4])
|
||||||
39
scripts/examples/Arduino/Portenta-H7/40-WiFi/http_client.py
Normal file
39
scripts/examples/Arduino/Portenta-H7/40-WiFi/http_client.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Simple HTTP client example.
|
||||||
|
|
||||||
|
import network, socket
|
||||||
|
|
||||||
|
# AP info
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
|
||||||
|
PORT = 80
|
||||||
|
HOST = "www.google.com"
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect. Note this may take a while...")
|
||||||
|
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
|
||||||
|
# We should have a valid IP now via DHCP
|
||||||
|
print("WiFi Connected ", wlan.ifconfig())
|
||||||
|
|
||||||
|
# Get addr info via DNS
|
||||||
|
addr = socket.getaddrinfo(HOST, PORT)[0][4]
|
||||||
|
print(addr)
|
||||||
|
|
||||||
|
# Create a new socket and connect to addr
|
||||||
|
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
client.connect(addr)
|
||||||
|
|
||||||
|
# Set timeout
|
||||||
|
client.settimeout(3.0)
|
||||||
|
|
||||||
|
# Send HTTP request and recv response
|
||||||
|
client.send("GET / HTTP/1.1\r\nHost: %s\r\n\r\n"%(HOST))
|
||||||
|
print(client.recv(1024))
|
||||||
|
|
||||||
|
# Close socket
|
||||||
|
client.close()
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
# Simple HTTPS client example.
|
||||||
|
import network, socket, ussl
|
||||||
|
|
||||||
|
# AP info
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
|
||||||
|
PORT = 443
|
||||||
|
HOST = "www.google.com"
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect. Note this may take a while...")
|
||||||
|
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
|
||||||
|
# We should have a valid IP now via DHCP
|
||||||
|
print("WiFi Connected ", wlan.ifconfig())
|
||||||
|
|
||||||
|
# Get addr info via DNS
|
||||||
|
addr = socket.getaddrinfo(HOST, PORT)[0][4]
|
||||||
|
print(addr)
|
||||||
|
|
||||||
|
# Create a new socket and connect to addr
|
||||||
|
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
|
||||||
|
client.connect(addr)
|
||||||
|
|
||||||
|
# Set timeout
|
||||||
|
client.settimeout(3.0)
|
||||||
|
|
||||||
|
client = ussl.wrap_socket(client, server_hostname=HOST)
|
||||||
|
|
||||||
|
# Send HTTP request and recv response
|
||||||
|
request = "GET / HTTP/1.1\r\n"
|
||||||
|
request += "HOST: %s\r\n"
|
||||||
|
request += "User-Agent: Mozilla/5.0\r\n"
|
||||||
|
request += "Connection: keep-alive\r\n\r\n"
|
||||||
|
# Add more headers if needed.
|
||||||
|
client.write(request%(HOST)+"\r\n")
|
||||||
|
|
||||||
|
response = client.read(1024)
|
||||||
|
for l in response.split(b"\r\n"):
|
||||||
|
print(l.decode())
|
||||||
|
|
||||||
|
# Close socket
|
||||||
|
client.close()
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
# MJPEG Streaming
|
||||||
|
#
|
||||||
|
# This example shows off how to do MJPEG streaming to a FIREFOX webrowser
|
||||||
|
# Chrome, Firefox and MJpegViewer App on Android have been tested.
|
||||||
|
# Connect to the IP address/port printed out from ifconfig to view the stream.
|
||||||
|
import sensor, image, time, network, socket, sys
|
||||||
|
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
HOST ='' # Use first available interface
|
||||||
|
PORT = 8080 # Arbitrary non-privileged port
|
||||||
|
|
||||||
|
# Init sensor
|
||||||
|
sensor.reset()
|
||||||
|
sensor.set_framesize(sensor.QVGA)
|
||||||
|
sensor.set_pixformat(sensor.GRAYSCALE)
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect... (This may take a while)...")
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
|
||||||
|
# We should have a valid IP now via DHCP
|
||||||
|
print("WiFi Connected ", wlan.ifconfig())
|
||||||
|
|
||||||
|
# Create server socket
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
|
||||||
|
|
||||||
|
# Bind and listen
|
||||||
|
s.bind([HOST, PORT])
|
||||||
|
s.listen(5)
|
||||||
|
|
||||||
|
# Set server socket to blocking
|
||||||
|
s.setblocking(True)
|
||||||
|
|
||||||
|
def start_streaming(s):
|
||||||
|
print ('Waiting for connections..')
|
||||||
|
client, addr = s.accept()
|
||||||
|
# set client socket timeout to 5s
|
||||||
|
client.settimeout(5.0)
|
||||||
|
print ('Connected to ' + addr[0] + ':' + str(addr[1]))
|
||||||
|
|
||||||
|
# Read request from client
|
||||||
|
data = client.recv(1024)
|
||||||
|
# Should parse client request here
|
||||||
|
|
||||||
|
# Send multipart header
|
||||||
|
client.sendall("HTTP/1.1 200 OK\r\n" \
|
||||||
|
"Server: OpenMV\r\n" \
|
||||||
|
"Content-Type: multipart/x-mixed-replace;boundary=openmv\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.
|
||||||
|
while (True):
|
||||||
|
clock.tick() # Track elapsed milliseconds between snapshots().
|
||||||
|
frame = sensor.snapshot()
|
||||||
|
cframe = frame.compressed(quality=35)
|
||||||
|
header = "\r\n--openmv\r\n" \
|
||||||
|
"Content-Type: image/jpeg\r\n"\
|
||||||
|
"Content-Length:"+str(cframe.size())+"\r\n\r\n"
|
||||||
|
client.sendall(header)
|
||||||
|
client.sendall(cframe)
|
||||||
|
print(clock.fps())
|
||||||
|
|
||||||
|
while (True):
|
||||||
|
try:
|
||||||
|
start_streaming(s)
|
||||||
|
except OSError as e:
|
||||||
|
print("socket error: ", e)
|
||||||
|
#sys.print_exception(e)
|
||||||
32
scripts/examples/Arduino/Portenta-H7/40-WiFi/mqtt_pub.py
Normal file
32
scripts/examples/Arduino/Portenta-H7/40-WiFi/mqtt_pub.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# MQTT Example.
|
||||||
|
# This example shows how to use the MQTT library to publish to a topic.
|
||||||
|
#
|
||||||
|
# 1) Copy the mqtt.py library to OpenMV storage.
|
||||||
|
# 2) Run this script on the OpenMV camera.
|
||||||
|
# 3) Install the mosquitto client on PC and run the following command:
|
||||||
|
# mosquitto_sub -h test.mosquitto.org -t "openmv/test" -v
|
||||||
|
#
|
||||||
|
# NOTE: If the mosquitto broker is unreachable, try another broker (For example: broker.hivemq.com)
|
||||||
|
import time, network
|
||||||
|
from mqtt import MQTTClient
|
||||||
|
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect. Note this may take a while...")
|
||||||
|
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
|
||||||
|
# We should have a valid IP now via DHCP
|
||||||
|
print("WiFi Connected ", wlan.ifconfig())
|
||||||
|
|
||||||
|
client = MQTTClient("openmv", "test.mosquitto.org", port=1883)
|
||||||
|
client.connect()
|
||||||
|
|
||||||
|
while (True):
|
||||||
|
client.publish("openmv/test", "Hello World!")
|
||||||
|
time.sleep_ms(1000)
|
||||||
39
scripts/examples/Arduino/Portenta-H7/40-WiFi/mqtt_sub.py
Normal file
39
scripts/examples/Arduino/Portenta-H7/40-WiFi/mqtt_sub.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# MQTT Example.
|
||||||
|
# This example shows how to use the MQTT library to subscribe to a topic.
|
||||||
|
#
|
||||||
|
# 1) Copy the mqtt.py library to OpenMV storage.
|
||||||
|
# 2) Run this script on the OpenMV camera.
|
||||||
|
# 3) Install the mosquitto client on PC and run the following command:
|
||||||
|
# mosquitto_pub -t "openmv/test" -m "Hello World!" -h test.mosquitto.org -p 1883
|
||||||
|
#
|
||||||
|
# NOTE: If the mosquitto broker is unreachable, try another broker (For example: broker.hivemq.com)
|
||||||
|
import time, network
|
||||||
|
from mqtt_update import MQTTClient
|
||||||
|
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect. Note this may take a while...")
|
||||||
|
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
|
||||||
|
# We should have a valid IP now via DHCP
|
||||||
|
print("WiFi Connected ", wlan.ifconfig())
|
||||||
|
|
||||||
|
client = MQTTClient("openmv", "test.mosquitto.org", port=1883)
|
||||||
|
client.connect()
|
||||||
|
|
||||||
|
def callback(topic, msg):
|
||||||
|
print(topic, msg)
|
||||||
|
|
||||||
|
# must set callback first
|
||||||
|
client.set_callback(callback)
|
||||||
|
client.subscribe("openmv/test")
|
||||||
|
|
||||||
|
while (True):
|
||||||
|
client.check_msg() # poll for messages.
|
||||||
|
time.sleep_ms(1000)
|
||||||
33
scripts/examples/Arduino/Portenta-H7/40-WiFi/ntp.py
Normal file
33
scripts/examples/Arduino/Portenta-H7/40-WiFi/ntp.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# NTP Example
|
||||||
|
#
|
||||||
|
# This example shows how to get the current time using NTP with the WiFi shield.
|
||||||
|
|
||||||
|
import network, socket, ustruct, utime
|
||||||
|
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
|
||||||
|
TIMESTAMP = 2208988800+946684800
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect... (This may take a while)...")
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
# We should have a valid IP now via DHCP
|
||||||
|
print("WiFi Connected ", wlan.ifconfig())
|
||||||
|
|
||||||
|
# Create new socket
|
||||||
|
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
|
||||||
|
# Get addr info via DNS
|
||||||
|
addr = socket.getaddrinfo("pool.ntp.org", 123)[0][4]
|
||||||
|
|
||||||
|
# Send query
|
||||||
|
client.sendto('\x1b' + 47 * '\0', addr)
|
||||||
|
data, address = client.recvfrom(1024)
|
||||||
|
|
||||||
|
# Print time
|
||||||
|
t = ustruct.unpack(">IIIIIIIIIIII", data)[10] - TIMESTAMP
|
||||||
|
print ("Year:%d Month:%d Day:%d Time: %d:%d:%d" % (utime.localtime(t)[0:6]))
|
||||||
16
scripts/examples/Arduino/Portenta-H7/40-WiFi/scan.py
Normal file
16
scripts/examples/Arduino/Portenta-H7/40-WiFi/scan.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Scan Example
|
||||||
|
#
|
||||||
|
# This example shows how to scan for networks with the WiFi shield.
|
||||||
|
|
||||||
|
import time, network
|
||||||
|
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
|
||||||
|
while (True):
|
||||||
|
scan_result = wlan.scan()
|
||||||
|
for ap in scan_result:
|
||||||
|
print(ap)
|
||||||
|
print()
|
||||||
|
time.sleep_ms(1000)
|
||||||
33
scripts/examples/Arduino/Portenta-H7/40-WiFi/static_ip.py
Normal file
33
scripts/examples/Arduino/Portenta-H7/40-WiFi/static_ip.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# NTP Example using static IP.
|
||||||
|
#
|
||||||
|
# This example shows how to get the current time using NTP with the WiFi shield.
|
||||||
|
|
||||||
|
import network, socket, ustruct, utime
|
||||||
|
|
||||||
|
SSID='' # Network SSID
|
||||||
|
KEY='' # Network key
|
||||||
|
|
||||||
|
TIMESTAMP = 2208988800+946684800
|
||||||
|
|
||||||
|
# Init wlan module and connect to network
|
||||||
|
print("Trying to connect... (This may take a while)...")
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.deinit()
|
||||||
|
wlan.active(True)
|
||||||
|
# ifconfig must be called before connect()
|
||||||
|
wlan.ifconfig(('192.168.1.200', '255.255.255.0', '192.168.1.1', '192.168.1.1'))
|
||||||
|
wlan.connect(SSID, KEY, timeout=30000)
|
||||||
|
|
||||||
|
# Create new socket
|
||||||
|
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
|
||||||
|
# Get addr info via DNS
|
||||||
|
addr = socket.getaddrinfo("pool.ntp.org", 123)[0][4]
|
||||||
|
|
||||||
|
# Send query
|
||||||
|
client.sendto('\x1b' + 47 * '\0', addr)
|
||||||
|
data, address = client.recvfrom(1024)
|
||||||
|
|
||||||
|
# Print time
|
||||||
|
t = ustruct.unpack(">IIIIIIIIIIII", data)[10] - TIMESTAMP
|
||||||
|
print ("Year:%d Month:%d Day:%d Time: %d:%d:%d" % (utime.localtime(t)[0:6]))
|
||||||
Loading…
Reference in New Issue
Block a user