class WINC – драйвер WiFi-шилда¶
Класс WINC управляет WiFi-модулем Atmel WINC1500 802.11 b/g/n на OpenMV WiFi Shield. Доступно на OpenMV Cam M4, M7, H7, H7 Plus и Pure Thermal (платы STM32, для которых был разработан WiFi-шилд). Для плат со встроенным WiFi (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) используйте WLAN.
Пример – подключение к точке доступа и вывод адреса:
import network
wlan = network.WINC()
wlan.connect("SSID", "KEY", security=network.WINC.WPA_PSK)
print("status: ", "connected" if wlan.isconnected() else "off")
print("rssi: ", wlan.rssi(), "dBm")
print("interface: ", wlan.ifconfig())
print("netinfo: ", wlan.netinfo())
Пример – поднятие открытой точки доступа и ожидание клиента:
import network
wlan = network.WINC(mode=network.WINC.MODE_AP)
wlan.start_ap("OpenMV-Cam", security=network.WINC.OPEN, channel=6)
print("waiting for a station to associate...")
print(wlan.wait_for_sta(timeout=None))
Конструкторы¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Создаёт объект драйвера
WINCи поднимает WiFi-шилд.modeвыбирает режим работы, в котором запускается модуль:WINC.MODE_STA– станция / клиент. Подключение к точке доступа с помощьюconnect(). Это значение по умолчанию.WINC.MODE_AP– точка доступа. Настройте точку доступа с помощьюstart_ap(), затем принимайте подключения клиентов.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– поднятие только BSP (без радио).WINC.MODE_FIRMWARE– режим обновления прошивки; требуется дляfw_dump()иfw_update().
Примечание
В режиме AP у WINC1500 есть аппаратные ограничения:
Одновременно может подключиться только один клиент.
Поддерживается только защита
OPENили WEP.Из-за ошибки в прошивке WiFi-модуля любые привязанные сокеты перестают работать при отключении клиента. Установите тайм-аут на серверный сокет, чтобы он вызывал исключение, которое можно использовать для его повторного открытия.
Методы¶
- active(is_active: bool | None = None) bool¶
Поднимает или опускает WiFi-шилд.
Без аргумента возвращает текущее состояние –
True, пока шилд инициализирован и радио поднято, иначеFalse.active(True)выполняет квитирование с прошивкой WINC1500 по SPI и поднимает радио в настроенном режимеmode. Не выполняет никаких действий, если интерфейс уже активен.connect()автоматически вызывает это, если оно ещё не было вызвано; для любого другого метода (scan(),rssi(),netinfo(), …) необходимо сначала вызватьactive(True).active(False)снова выключает радио (WINC переходит в режим только BSP) и освобождает выводы SPI.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Ассоциируется с WiFi-сетью
ssid, используя парольkey, режим защитыsecurity(один изOPEN,WPA_PSKили константа 802.1X) на радиоканалеchannel.securityиchannelявляются только именованными.После подключения используйте модуль
socketдля открытия портов TCP/UDP.Этот метод блокируется до завершения или сбоя ассоциации.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Псевдоним для
connect(). Предоставлен для совместимости с кодом, который вызываетconfigна других интерфейсахnetwork.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Псевдоним для
connect(), используемый после создания объекта сmode=MODE_APдля настройки и запуска точки доступа. Точка доступа поддерживает только защитуOPENили WEP; если используется WEP, требуетсяkey.
- disconnect() None¶
В режиме STA отсоединяется от текущей ассоциированной точки доступа. Шилд остаётся активным; вызовите
connect()для повторной ассоциации. Не выполняет никаких действий, если в данный момент нет ассоциации.
- isconnected() bool¶
В режиме STA возвращает
True, когда есть ассоциация с точкой доступа и получен адрес IPv4 (через DHCP илиifconfig()). ВозвращаетFalse, пока продолжается фаза аутентификации / ассоциации / DHCP.
- connected_sta() List[str]¶
В режиме AP возвращает список, содержащий IP-адрес текущего подключённого клиента (или пустой список, если ни один клиент не подключён).
- wait_for_sta(timeout: int | None) List[str]¶
В режиме AP блокируется до подключения клиента и возвращает список, содержащий IP-адрес клиента.
timeout— это максимальное время ожидания в миллисекундах; передайтеNoneдля бесконечного ожидания.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Получает или устанавливает параметры интерфейса IPv4. Кортеж из 4 элементов содержит
(ip, subnet, gateway, dns)в виде строк в формате с точками.Вызванный без аргумента: возвращает текущую конфигурацию.
Вызванный с кортежем из 4 элементов: устанавливает статическую конфигурацию IP вместо полученной через DHCP.
Пример – закрепление статического IP перед подключением:
wlan = network.WINC() wlan.ifconfig(("192.168.1.100", "255.255.255.0", "192.168.1.1", "192.168.1.1")) wlan.connect(SSID, key=KEY, security=network.WINC.WPA_PSK)
Примечание
WINCне реализует современный APIAbstractNIC.ipconfig(); здесь используйтеifconfig().
- netinfo() Tuple[int, int, str, str, str]¶
Возвращает кортеж из 5 элементов, описывающий текущую ассоциацию:
[0]RSSI в виде целого числа (дБм).[1]Режим защиты – одна из констант защиты.[2]Строка SSID.[3]BSSID в виде MAC-строки"XX:XX:XX:XX:XX:XX".[4]Адрес IPv4 в виде строки в формате с точками.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Сканирует ближайшие точки доступа. Возвращает список кортежей из 6 элементов:
[0]Строка SSID.[1]BSSID в виде MAC-строки"XX:XX:XX:XX:XX:XX".[2]Номер канала.[3]RSSI в дБм.[4]Режим защиты – одна из констант защиты.[5]Зарезервировано (всегда1).
Может быть вызван без предварительной ассоциации с сетью.
- rssi() int¶
Возвращает RSSI в дБм текущей ассоциированной точки доступа. Грубо:
-30— отлично,-67— нормально для потоковой передачи,-80— на грани,-90и ниже — непригодно для использования. Имеет смысл только в режиме STA, покаisconnected()равноTrue.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Возвращает кортеж из 7 элементов, описывающий версии прошивки и драйвера WINC1500:
[0]Старшая версия прошивки.[1]Младшая версия прошивки.[2]Версия исправления прошивки.[3]Старшая версия драйвера.[4]Младшая версия драйвера.[5]Версия исправления драйвера.[6]Аппаратная ревизия чипа.
- fw_dump(path: str) None¶
Считывает внутреннюю флеш-память WINC1500 и записывает полученный образ прошивки в файл по пути
pathв файловой системе OpenMV. Используйте это для резервного копирования установленного образа перед вызовомfw_update().Требует, чтобы модуль был создан с
mode=MODE_FIRMWARE.
- fw_update(path: str) None¶
Стирает внутреннюю флеш-память WINC1500 и программирует её двоичным образом по пути
path. Образ должен соответствовать структуре, ожидаемой прошивкой OpenMV (обычно поставляется Atmel / Microchip с WINC SDK).Вызов блокируется на несколько секунд, пока флеш-память программируется и проверяется. После возврата из вызова выполните перезагрузку питания OpenMV Cam, чтобы WINC1500 запустился из нового образа.
Требует, чтобы модуль был создан с
mode=MODE_FIRMWARE.
Константы¶
- OPEN: int¶
Значение защиты для незашифрованной сети. Передайте в аргумент
securityметодовconnect()/start_ap().
- WPA_PSK: int¶
Значение защиты для WPA/WPA2 с предварительно разделённым ключом. Значение по умолчанию для
connect().
Примечание
Также существует значение защиты WPA/WPA2 Enterprise (802.1X). Прошивка предоставляет его под именем
802_1X, которое не является допустимым идентификатором Python – обращайтесь к нему черезgetattr(network.WINC, "802_1X").- MODE_STA: int¶
Режим станции – подключение к точке доступа в качестве клиента. Режим конструктора по умолчанию.
- MODE_AP: int¶
Режим точки доступа – WINC становится точкой доступа, с которой ассоциируются клиенты.
- MODE_BSP: int¶
Инициализирует только пакет поддержки платы WINC – радио не поднимается. Используется в процессе обновления прошивки.
- MODE_FIRMWARE: int¶
Режим обновления прошивки. Требуется для
fw_dump()иfw_update().