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 Shield). Для плат із вбудованим 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 Shield.modeвибирає режим роботи, в якому запускається модуль:WINC.MODE_STA– режим станції / клієнта. Підключення до точки доступу за допомогоюconnect(). Це режим за замовчуванням.WINC.MODE_AP– режим точки доступу. Налаштуйте 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 Shield.
Без аргументу повертає поточний стан –
True, поки модуль ініціалізований і радіо активне,Falseінакше.active(True)виконує рукостискання мікропрограми WINC1500 через SPI та вмикає радіо в налаштованомуmode. Є no-op, якщо інтерфейс вже активний.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для налаштування та запуску точки доступу. AP підтримує лише безпекуOPENабо WEP; при використанні WEP параметрkeyє обов’язковим.
- disconnect() None¶
У режимі STA від’єднується від поточної точки доступу. Модуль залишається активним; викличте
connect()для повторного підключення. Є no-op, коли не підключено.
- 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)у вигляді рядків dotted-quad.Викликається без аргументу: повертає поточну конфігурацію.
Викликається з 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-адреса у вигляді рядка dotted-quad.
- 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_BSP: int¶
Ініціалізує лише пакет підтримки плати WINC – радіо не вмикається. Використовується в процесі оновлення мікропрограми.
- MODE_FIRMWARE: int¶
Режим оновлення мікропрограми. Необхідний для
fw_dump()таfw_update().