OpenMV Wi-Fi Shield: подключение, настройка и начало работы
Используйте Wi-Fi Shield для подключения камеры OpenMV к мировой паутине. Доступ в интернет позволит камере машинного зрения выступить в роли полноценного сетевого устройства: общаться с компьютерами, принтерами, сервисами в интернете и другими сетевыми ресурсами.
Беспроводной модуль поддерживает скорость до 48 Мб/c, что позволит передавать по сети фото и видео с камерного модуля в режиме реального времени.
Подключение и настройка
Wi-Fi Shield предназначен и совместим со всеми камерами машинного зрения от компании OpenMV. В качестве примера рассмотрим коммуникацию экрана с платформой OpenMV H7.
Шаг 1
Припаяйте контактные колодки к камере OpenMV H7.
Шаг 2
Оденьте Wi-Fi Shield сверху и снизу на платформу OpenMV H7 методом бутерброда.
Шаг 3
Примеры работы
Wi-Fi модуль может работать в двух режимах:
- STA — Режим клиента, т.е. Wi-Fi модуль подключается к уже созданной сети. IP-адрес Wi-Fi модулю выдаст соответствующее устройство, все подробности отразятся в консоли OpenMV IDE.
- AP — Режим точки доступа, т.е. Wi-Fi модуль самостоятельно создаёт новую Wi-Fi сеть. IP-адрес для подключения по умолчанию: 192.168.1.1:8080.
Поиск Wi-Fi сетей
Для начала выполните поиск доступных Wi-Fi сетей.
- Откройте пример:
- scan.py
# Scan Example # # This example shows how to scan for networks with the WiFi shield. import time, network wlan = network.WINC() print("\nFirmware version:", wlan.fw_version()) while (True): scan_result = wlan.scan() for ap in scan_result: print("Channel:%d RSSI:%d Auth:%d BSSID:%s SSID:%s"%(ap)) print() time.sleep(1000)
- Загрузите скрипт в плату.
- Беспроводной модуль выполнит поиск всех доступных Wi-Fi сетей и отобразит список в консоли.
Передача видео (STA-режим)
Далее попробуем транслировать видео с камерного модуля по Wi-Fi на смартфон. Камера OpenMV в режиме клиента.
- Откройте пример:
- mjpeg_streamer.py
# 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, usocket, sys SSID ='' # Network SSID KEY ='' # Network key HOST ='' # Use first available interface PORT = 8080 # Arbitrary non-privileged port # Reset sensor sensor.reset() # Set sensor settings sensor.set_contrast(1) sensor.set_brightness(1) sensor.set_saturation(1) sensor.set_gainceiling(16) sensor.set_framesize(sensor.QQVGA) sensor.set_pixformat(sensor.GRAYSCALE) # Init wlan module and connect to network print("Trying to connect... (may take a while)...") wlan = network.WINC() wlan.connect(SSID, key=KEY, security=wlan.WPA_PSK) # We should have a valid IP now via DHCP print(wlan.ifconfig()) # Create server socket s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) # 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 2s client.settimeout(2.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.send("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.send(header) client.send(cframe) print(clock.fps()) while (True): try: start_streaming(s) except OSError as e: print("socket error: ", e) #sys.print_exception(e)
- Дополните код: введите имя вашей домашней сети (SSID) и пароль (KEY).
- Загрузите скрипт в плату.
- В консоли отобразится IP-адрес, который присвоился Wi-Fi модулю.
Обратите внимания, в окне изображение картинка отсутствует.
- Откройте браузер на любом мультимедийном устройстве и введите IP-адрес присвоенный Wi-Fi модулю. Единственный критерий девайс должен находится в одной сети с камерой OpenMV. В нашем случае это смартфон, а IP-адрес: 192.168.1.10:8080.
- После подключения мультимедийного устройства к OpenMV, буфер изображения с камеры начнет транслироваться в программе OpenMV IDE и дублироваться на дисплей смартфона по Wi-Fi.
Передача видео (AP-режим)
В этом примере продолжим транслировать видео с камерного модуля по Wi-Fi на смартфон. Но камера OpenMV в режиме точки доступа.
- Откройте пример:
- mjpeg_streamer_ap.py
# MJPEG Streaming AP. # # This example shows off how to do MJPEG streaming in AccessPoint mode. # Chrome, Firefox and MJpegViewer App on Android have been tested. # Connect to OPENMV_AP and use this URL: http://192.168.1.1:8080 to view the stream. import sensor, image, time, network, usocket, sys SSID ='OPENMV_AP' # Network SSID KEY ='1234567890' # Network key (must be 10 chars) HOST = '' # Use first available interface PORT = 8080 # Arbitrary non-privileged port # Reset sensor sensor.reset() # Set sensor settings sensor.set_contrast(1) sensor.set_brightness(1) sensor.set_saturation(1) sensor.set_gainceiling(16) sensor.set_framesize(sensor.QQVGA) sensor.set_pixformat(sensor.GRAYSCALE) # Init wlan module in AP mode. wlan = network.WINC(mode=network.WINC.MODE_AP) wlan.start_ap(SSID, key=KEY, security=wlan.WEP, channel=2) # You can block waiting for client to connect #print(wlan.wait_for_sta(10000)) def start_streaming(s): print ('Waiting for connections..') client, addr = s.accept() # set client socket timeout to 2s client.settimeout(2.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.send("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.send(header) client.send(cframe) print(clock.fps()) while (True): # Create server socket s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) try: # Bind and listen s.bind([HOST, PORT]) s.listen(5) # Set server socket timeout # NOTE: Due to a WINC FW bug, the server socket must be closed and reopened if # the client disconnects. Use a timeout here to close and re-create the socket. s.settimeout(3) start_streaming(s) except OSError as e: s.close() print("socket error: ", e) #sys.print_exception(e)
- Запомните имя создаваемой сети (SSID) и пароль (KEY).
- Загрузите скрипт в плату.
- Подключитесь с интересующего мультимедийного устройства к созданной Wi-Fi сети. В нашем случае это смартфон, имя сети
OPENMV_AP
, а пароль1234567890
. - Откройте браузер на смартфоне и введите IP-адрес: 192.168.1.1:8080.
- После подключения телефона к OpenMV, буфер изображения с камеры начнет транслироваться в программе OpenMV IDE и дублироваться на дисплей смартфона по Wi-Fi.
Дополнительно
- Для увеличения разрешения картинки, замените строку
sensor.set_framesize(sensor.QQVGA)
на
sensor.set_framesize(sensor.VGA)
.
- Для изменения картинки с ЧБ на цветную, замените строку
sensor.set_pixformat(sensor.GRAYSCALE)
на
sensor.set_pixformat(sensor.RGB565)
.
Обновление прошивки
Модуль Wi-Fi поддерживает обновление но новые версии программного обеспечения. Обновление пригодится когда при прошивки пользовательского скрипта возникает ошибка в инициализации чипа или вы просто хотите новую версию ПО.
.
Для обновления ПО на Wi-Fi модуле понадобится microSD карта.
- Подключите и настройте камеру машинного зрения.
- Найдите директорию с прошивками для Wi-Fi модуля:и выберите самую последнюю версию. В нашем случае это версия .
- Скопируйте отмеченный файл в корень microSD карты.
- Отключите платформу OpenMV от питания по USB.
- Вставьте карту памяти в разъём для SD-карты на плате камеры OpenMV.
- Подключите платформу OpenMV к питанию по USB.
- Откройте пример:
- Загрузите скрипт в плату. После чего обновление Wi-Fi модуля начнётся автоматически, а весь статус процесса отобразится в консоли.
- Это значит всё получилось и можно переходить к примерам работы с Wi-Fi шилдом.
Элементы платы
Wi-Fi модуль
Wi-Fi Shield выполнен на модуле ATWINC1500-MR210PB, который включает в себя чип ATWINC1500 с внешней Flash-памятью на 4 МБ и PCB антенну в виде змейки.
Контактные колодки
Wi-Fi Shield подключается к камерам машинного зрения OpenMV через две параллельных 8-пиновых контактных колодки. Контроллер беспроводного модуля общается с микроконтроллером по шине SPI с дополнительными пинами. Остальные GPIO контакты остаются доступны для коммуникации с другими платами и модулями. Все подробности про назначения контактов читайте в разделе распиновка.
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
ST | Информационный светодиод, мигает при передаче и приёме данных по Wi-Fi |
Распиновка
Пин OpenMV | Пин Wi-Fi Shield | Описание |
---|---|---|
P0 | MOSI | Приём данных из микроконтроллера в Wi-Fi модуль на шине SPI |
P1 | MISO | Передача данных в микроконтроллера из Wi-Fi модуля на шине SPI |
P2 | SCK | Линия последовательного тактового сигнала на шине SPI |
P3 | CS | Активация Wi-Fi модуля на шине SPI |
P4 | NC | Не используется |
P5 | NC | Не используется |
P6 | EN | Включение и отключения Wi-Fi модуля |
3V3 | 3V3 | Питание дисплея |
RST | NC | Не используется |
BOOT | NC | Не используется |
SYN | NC | Не используется |
P9 | NC | Не используется |
P8 | IRQ | Сигнал прерывания |
P7 | RST | Аппаратный сброс Wi-Fi модуля |
VIN | NC | Не используется |
GND | GND | Общая земля |
Принципиальная и монтажная схемы
Габаритный чертёж
Характеристики
- Wi-Fi модуль: ATWINC1500-MR210PB
- Стандарт Wi-Fi: 802.11 b/g/n
- Шифрование: 802.11 WEP/WPA/WPA2
- Частотный диапазон: 2,4 ГГц
- Интерфейс: SPI с дополнительными пинами
- Ток потребления в фоновом режиме: <80 мА
- Ток потребления в активном режиме: <100 мА
- Габариты: 27×36×20 мм