class WINC – sterownik nakładki WiFi

Klasa WINC steruje modułem WiFi Atmel WINC1500 802.11 b/g/n na nakładce OpenMV WiFi Shield. Dostępna na OpenMV Cam M4, M7, H7, H7 Plus i Pure Thermal (płytki STM32, dla których zaprojektowano nakładkę WiFi). Dla płytek z wbudowanym WiFi (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) użyj zamiast tego WLAN.

Przykład – połączenie z punktem dostępowym i wypisanie adresu:

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())

Przykład – uruchomienie otwartego punktu dostępowego i oczekiwanie na klienta:

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))

Konstruktory

class network.WINC(mode: int = WINC.MODE_STA) None

Tworzy obiekt sterownika WINC i uruchamia nakładkę WiFi.

mode wybiera tryb pracy, w którym moduł się uruchamia:

Informacja

W trybie AP WINC1500 ma sprzętowe ograniczenia:

  • Jednocześnie może być podłączony tylko jeden klient.

  • Obsługiwane są tylko zabezpieczenia OPEN lub WEP.

  • Błąd w oprogramowaniu układowym modułu WiFi powoduje, że wszystkie powiązane gniazda przestają działać po rozłączeniu klienta. Ustaw limit czasu na gnieździe serwera, aby zgłaszało wyjątek, którego możesz użyć do jego ponownego otwarcia.

Metody

active(is_active: bool | None = None) bool

Włącza lub wyłącza nakładkę WiFi.

Bez argumentu zwraca bieżący stan – True, gdy nakładka jest zainicjowana, a radio działa, w przeciwnym razie False.

active(True) wykonuje uzgadnianie oprogramowania układowego WINC1500 przez SPI i uruchamia radio w skonfigurowanym trybie mode. Nie wykonuje żadnej operacji, jeśli interfejs jest już aktywny. connect() wywołuje tę metodę automatycznie, jeśli nie została jeszcze wywołana; dla każdej innej metody (scan(), rssi(), netinfo(), …) musisz najpierw wywołać active(True).

active(False) ponownie wyłącza radio (WINC przechodzi do trybu samego BSP) i zwalnia piny SPI.

connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None

Łączy się z siecią WiFi ssid przy użyciu hasła key, trybu zabezpieczeń security (jednego z OPEN, WPA_PSK lub stałej 802.1X) na kanale radiowym channel. security i channel są wyłącznie nazwane.

Po połączeniu użyj modułu socket, aby otworzyć porty TCP/UDP.

Ta metoda blokuje wykonanie do czasu zakończenia lub niepowodzenia połączenia.

config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None

Alias connect(). Udostępniony dla zgodności z kodem wywołującym config na innych interfejsach network.

start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None

Alias connect() używany po utworzeniu obiektu z mode=MODE_AP w celu skonfigurowania i uruchomienia punktu dostępowego. AP obsługuje tylko zabezpieczenia OPEN lub WEP; jeśli używany jest WEP, wymagany jest key.

disconnect() None

W trybie STA rozłącza się z aktualnie powiązanym punktem dostępowym. Nakładka pozostaje aktywna; wywołaj connect(), aby ponownie się połączyć. Nie wykonuje żadnej operacji, gdy nie ma aktywnego połączenia.

isconnected() bool

W trybie STA zwraca True, gdy nawiązano połączenie z punktem dostępowym oraz uzyskano adres IPv4 (przez DHCP lub ifconfig()). Zwraca False podczas fazy uwierzytelniania / łączenia / DHCP.

connected_sta() List[str]

W trybie AP zwraca listę zawierającą adres IP aktualnie podłączonego klienta (lub pustą listę, jeśli żaden klient nie jest podłączony).

wait_for_sta(timeout: int | None) List[str]

W trybie AP blokuje wykonanie do czasu podłączenia klienta i zwraca listę zawierającą adres IP klienta. timeout to maksymalny czas oczekiwania w milisekundach; przekaż None, aby czekać w nieskończoność.

ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]

Pobiera lub ustawia parametry interfejsu IPv4. 4-elementowa krotka zawiera (ip, subnet, gateway, dns) jako łańcuchy w notacji kropkowej.

Wywołana bez argumentu: zwraca bieżącą konfigurację.

Wywołana z 4-elementową krotką: ustawia statyczną konfigurację IP w miejsce uzyskanej przez DHCP.

Przykład – przypisanie statycznego IP przed połączeniem:

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)

Informacja

WINC nie implementuje nowoczesnego API AbstractNIC.ipconfig(); użyj tutaj ifconfig().

netinfo() Tuple[int, int, str, str, str]

Zwraca 5-elementową krotkę opisującą bieżące połączenie:

  • [0] RSSI jako liczba całkowita (dBm).

  • [1] Tryb zabezpieczeń – jedna ze stałych zabezpieczeń.

  • [2] Łańcuch SSID.

  • [3] BSSID jako łańcuch MAC "XX:XX:XX:XX:XX:XX".

  • [4] Adres IPv4 jako łańcuch w notacji kropkowej.

scan() List[Tuple[str, str, int, int, int, int]]

Skanuje w poszukiwaniu pobliskich punktów dostępowych. Zwraca listę 6-elementowych krotek:

  • [0] Łańcuch SSID.

  • [1] BSSID jako łańcuch MAC "XX:XX:XX:XX:XX:XX".

  • [2] Numer kanału.

  • [3] RSSI w dBm.

  • [4] Tryb zabezpieczeń – jedna ze stałych zabezpieczeń.

  • [5] Zarezerwowane (zawsze 1).

Może być wywołana bez wcześniejszego połączenia z siecią.

rssi() int

Zwraca RSSI w dBm aktualnie powiązanego punktu dostępowego. Z grubsza: -30 jest doskonałe, -67 jest wystarczające do strumieniowania, -80 jest graniczne, -90 i poniżej jest bezużyteczne. Ma znaczenie tylko w trybie STA, gdy isconnected() zwraca True.

fw_version() Tuple[int, int, int, int, int, int, int]

Zwraca 7-elementową krotkę opisującą wersje oprogramowania układowego i sterownika WINC1500:

  • [0] Wersja główna oprogramowania układowego.

  • [1] Wersja pomocnicza oprogramowania układowego.

  • [2] Wersja poprawki oprogramowania układowego.

  • [3] Wersja główna sterownika.

  • [4] Wersja pomocnicza sterownika.

  • [5] Wersja poprawki sterownika.

  • [6] Wersja sprzętowa układu.

fw_dump(path: str) None

Odczytuje wewnętrzną pamięć flash WINC1500 i zapisuje powstały obraz oprogramowania układowego do pliku pod ścieżką path w systemie plików OpenMV. Użyj tego, aby utworzyć kopię zapasową aktualnie zainstalowanego obrazu przed wywołaniem fw_update().

Wymaga, aby moduł został utworzony z mode=MODE_FIRMWARE.

fw_update(path: str) None

Kasuje wewnętrzną pamięć flash WINC1500 i programuje ją obrazem binarnym pod ścieżką path. Obraz musi być zgodny z układem oczekiwanym przez oprogramowanie układowe OpenMV (zwykle dostarczanym przez Atmel / Microchip wraz z WINC SDK).

Wywołanie blokuje wykonanie na kilka sekund podczas programowania i weryfikacji pamięci flash. Po powrocie z wywołania wykonaj cykl zasilania OpenMV Cam, aby WINC1500 uruchomił się z nowego obrazu.

Wymaga, aby moduł został utworzony z mode=MODE_FIRMWARE.

Stałe

OPEN: int

Wartość zabezpieczeń dla sieci nieszyfrowanej. Przekaż do argumentu security w connect() / start_ap().

WPA_PSK: int

Wartość zabezpieczeń dla WPA/WPA2 z kluczem współdzielonym. Wartość domyślna dla connect().

Informacja

Istnieje również wartość zabezpieczeń WPA/WPA2 Enterprise (802.1X). Oprogramowanie układowe udostępnia ją pod nazwą 802_1X, która nie jest poprawnym identyfikatorem Python – uzyskaj do niej dostęp za pomocą getattr(network.WINC, "802_1X").

MODE_STA: int

Tryb stacji – połączenie z punktem dostępowym jako klient. Domyślny tryb konstruktora.

MODE_AP: int

Tryb punktu dostępowego – WINC staje się AP, z którym łączą się klienci.

MODE_P2P: int

Tryb WiFi-Direct (peer-to-peer).

MODE_BSP: int

Inicjuje tylko pakiet wsparcia płytki WINC – radio nie jest uruchamiane. Używany w procesie aktualizacji oprogramowania układowego.

MODE_FIRMWARE: int

Tryb aktualizacji oprogramowania układowego. Wymagany przez fw_dump() i fw_update().