klasa WLAN – sterowanie wbudowanymi interfejsami WiFi¶
Klasa WLAN obsługuje wbudowane moduły radiowe WiFi w nowoczesnych kamerach OpenMV Cam. Ta sama klasa opakowuje dwa różne sterowniki niskiego poziomu, w zależności od układu MCU WiFi danej płytki:
CYW43 (moduł WiFi Infineon CYW43xxx firmy Murata). Używany przez OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision oraz Arduino Giga R1 WiFi.
NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Używany przez Arduino Nano RP2040 Connect.
Oba sterowniki udostępniają te same nazwy metod, lecz różnią się kilkoma argumentami oraz zestawem akceptowanych kluczy config(). Różnice są zaznaczone poniżej.
Kamery OpenMV ze starszą nakładką WiFi WINC1500 (M4 / M7 / H7 / H7 Plus / Pure Thermal) używają zamiast tego klasy WINC.
Przykład użycia:
import network
# Enable the station interface and connect to a WiFi AP.
nic = network.WLAN(network.WLAN.IF_STA)
nic.active(True)
nic.connect("your-ssid", "your-key")
while not nic.isconnected():
pass
print(nic.ipconfig("addr4"))
Konstruktory¶
- class network.WLAN(interface_id: int = WLAN.IF_STA) None¶
Tworzy obiekt interfejsu
WLAN.interface_idwybiera interfejs, na którym ma działać:WLAN.IF_STA– tryb stacji / klienta. Połącz się z nadrzędnym punktem dostępowym za pomocąconnect(). To jest wartość domyślna.WLAN.IF_AP– tryb punktu dostępowego. Skonfiguruj AP za pomocąconfig()i przyjmuj połączenia klientów.
Oba interfejsy obsługuje to samo fizyczne radio; utworzenie jednego nie wyklucza drugiego.
Metody¶
- active(is_active: bool | None = None) bool¶
Włącza lub wyłącza radio WiFi.
Bez argumentu zwraca bieżący stan –
True, gdy radio jest włączone,Falsew przeciwnym razie.active(True)włącza zasilanie układu MCU WiFi, ładuje jego oprogramowanie układowe (CYW43 pobiera blob oprogramowania układowego z pamięci flash; NINA weryfikuje aktualnie wgraną wersję oprogramowania układowego) i uruchamia interfejs lwIP netif dla tego interfejsu. Wszystkie pozostałe metody –connect(),scan(),ipconfig()i pokrewne – wymagają, aby interfejs był aktywny.active(False)ponownie wyłącza zasilanie radia. Na interfejsie STA powoduje to także odłączenie od bieżącego AP i zwolnienie netif.
- connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None¶
Łączy interfejs STA z podanym punktem dostępowym.
ssid– SSID sieci (ciąg znaków lub bajty).key– hasło / klucz współdzielony. PrzekażNonedla sieci otwartej.security(tylko jako słowo kluczowe) – jedna ze stałychSEC_*.-1(wartość domyślna) wybiera automatycznie:SEC_OPEN, gdykeyjest puste, a w przeciwnym razieSEC_WPA_WPA2.bssid(tylko jako słowo kluczowe, tylko CYW43) – ogranicza połączenie do AP o tym 6-bajtowym adresie MAC. Ignorowane przez sterownik NINA.channel(tylko jako słowo kluczowe) – preferowany kanał radiowy. Domyślnie „pozwól sterownikowi wybrać”.
- disconnect() None¶
W trybie STA odłącza od aktualnie połączonego punktu dostępowego. Interfejs pozostaje aktywny; wywołaj ponownie
connect(), aby połączyć się ponownie, lubactive()(False), aby całkowicie wyłączyć zasilanie radia. Brak efektu, gdy nie ma aktualnego połączenia.
- isconnected() bool¶
W trybie STA zwraca
True, gdy istnieje połączenie z punktem dostępowym oraz uzyskano adres IPv4 z DHCP (lub przypisano go statycznie za pomocąipconfig()). ZwracaFalsew trakcie fazy uwierzytelniania/łączenia/DHCP.W trybie AP zwraca
True, gdy dołączyła co najmniej jedna stacja.
- scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]¶
Skanuje pobliskie punkty dostępowe i zwraca listę 6-elementowych krotek:
[0]SSID (bajty; puste dla sieci ukrytych).[1]BSSID (6-bajtowy MAC,bytes). Przekształć za pomocąbinascii.hexlify().[2]Numer kanału.[3]RSSI w dBm.[4]Tryb zabezpieczeń (jedna ze stałychSEC_*).[5]Zarezerwowane (zawsze1).
Wszystkie argumenty słów kluczowych dotyczą tylko CYW43:
passive– jeśliTrue, używa skanowania pasywnego zamiast domyślnego aktywnego skanowania z żądaniami sondującymi.ssid– ogranicza skanowanie do jednego SSID.bssid– ogranicza skanowanie do jednego BSSID.
Skanowanie ma sens tylko na interfejsie STA.
- status() int¶
- status(param: str) Any
Sprawdza stan połączenia.
Bez argumentu zwraca stan łącza jako małą liczbę całkowitą (kodowanie zależne od sterownika – wartość prawdziwa oznacza „połączono”).
Z argumentem będącym ciągiem znaków:
"rssi"– w trybie STA zwraca bieżące RSSI w dBm."stations"– w trybie AP zwraca listę połączonych stacji. CYW43 zwraca[(mac_bytes,), ...]; NINA zwraca[ip_string, ...].
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Pobiera lub ustawia parametry IPv4 interfejsu jako 4-elementową krotkę ciągów
(ip, subnet, gateway, dns)w notacji kropkowej.Informacja
W nowym kodzie preferuj
ipconfig()nic.ipconfig(addr4="192.168.0.4/24", gw4="192.168.0.1") network.ipconfig(dns="8.8.8.8")
- ipconfig(param: str) Any¶
- ipconfig(**kwargs: Any) None
Pobiera lub ustawia parametry interfejsu IPv4 / IPv6. Sterownik CYW43 deleguje to do standardowej implementacji lwIP i obsługuje pełny zestaw kluczy udokumentowanych w
AbstractNIC.ipconfig(). Sterownik NINA implementuje mniejszy podzbiór dla danego interfejsu –dhcp4ihas_dhcp4(tylko do odczytu) orazaddr4igw4do pobierania / ustawiania.
- config(param: str) Any¶
- config(**kwargs: Any) None
Pobiera lub ustawia parametry interfejsu specyficzne dla WiFi.
Z pojedynczym pozycyjnym argumentem będącym ciągiem znaków zwraca wartość tego parametru. Z argumentami słów kluczowych ustawia jeden lub więcej parametrów naraz – zmiany dotyczące działającego AP powodują automatyczne wyłączenie i ponowne włączenie AP.
Przykład:
# Set up the access-point name and channel. ap.config(ssid="My AP", channel=11) # Query params one at a time. print(ap.config("ssid")) print(ap.config("mac"))
Sterownik CYW43 – parametry możliwe do odczytania:
"antenna"– selektor anteny (int)."channel"– bieżący kanał."ssid"/"essid"– bieżący SSID (ciąg znaków)."security"– tryb uwierzytelniania AP (jeden zSEC_*)."mac"– adres MAC interfejsu (6bytes)."pm"– wartość zarządzania energią."txpower"– moc nadawania w dBm."hostname"– nazwa hosta DHCP/mDNS. Przestarzałe; zamiast tego użyjnetwork.hostname().
Sterownik CYW43 – parametry możliwe do ustawienia:
antenna=<int>– selektor anteny.channel=<int>– kanał AP.ssid=<str>/essid=<str>– SSID AP.key=<str>/password=<str>– klucz współdzielony AP.security=<int>– tryb uwierzytelniania AP (jeden zSEC_*).pm=<int>– tryb zarządzania energią (jeden zPM_NONE,PM_PERFORMANCE,PM_POWERSAVE).monitor=<int>– włącza tryb monitorowania / odbioru wszystkich pakietów multicast.txpower=<int>– moc nadawania w dBm.trace=<int>– wewnętrzna maska bitowa śledzenia sterownika.hostname=<str>– nazwa hosta DHCP/mDNS. Przestarzałe; zamiast tego użyjnetwork.hostname().
Sterownik NINA – parametry możliwe do odczytania:
"ssid"– bieżący SSID (ciąg znaków)."security"– tryb uwierzytelniania AP."mac"/"bssid"– adres MAC interfejsu (6bytes)."fw_version"– 3-elementowa krotka(major, minor, patch).
Sterownik NINA – parametry możliwe do ustawienia: wywołanie jest przekazywane do
connect()i przyjmuje te same argumenty słów kluczowych (ssid,key,security,channel). Ważne tylko na interfejsie AP.
- deinit() None¶
Resetuje przez wyłączenie zasilania układ MCU WiFi i zwalnia wszystkie zasoby utrzymywane przez sterownik (bufory oprogramowania układowego, lwIP netif, magistralę SPI/SDIO). Po wywołaniu tej metody obiekt
WLANmusi zostać ponownie utworzony przed użyciem. Używaj jej zamiastactive()(False), gdy potrzebujesz pełnego resetu (na przykład przed ponownym wgraniem oprogramowania układowego radia lub w celu odzyskania sterownika z zablokowanego stanu). Tylko CYW43.
- send_ethernet(buf: bytes) None¶
Wstrzykuje surową ramkę Ethernet
bufbezpośrednio do ścieżki nadawania sterownika, pomijając stos IP. Przeznaczone dla odbiorców działających tylko na warstwie L2 – mostkowanie, niestandardowe protokoły EtherType i podobne. Ramka musi zawierać docelowy/źródłowy MAC oraz EtherType (bez FCS – sprzęt dołącza je samodzielnie). Tylko CYW43.
- ioctl(cmd: int, buf: bytearray) None¶
Wydaje polecenie sterujące specyficzne dla sterownika.
cmdto liczbowy kod ioctl zdefiniowany przez oprogramowanie układowe radia niskiego poziomu, abufto modyfikowalny bufor używany zarówno dla ładunku polecenia, jak i odpowiedzi. Zestaw poprawnych wartościcmdjest specyficzny dla sterownika i nieprzenośny pomiędzy CYW43 a NINA. Używane głównie przez niskopoziomowe skrypty testowe i kod uruchamiania układów.
Stałe¶
- IF_STA: int¶
Identyfikator interfejsu stacji / klienta. Przekaż do konstruktora, aby wybrać tryb STA.
- IF_AP: int¶
Identyfikator interfejsu punktu dostępowego. Przekaż do konstruktora, aby wybrać tryb AP.
- SEC_WPA_WPA2: int¶
Wartość zabezpieczeń dla WPA / WPA2 z kluczem współdzielonym. Domyślna, gdy do
connect()przekazano klucz. Dostępna w obu sterownikach.
- SEC_WEP: int¶
Wartość zabezpieczeń dla WEP (Wired Equivalent Privacy). Udostępniona w celu zgodności ze starszymi punktami dostępowymi – WEP jest kryptograficznie złamany i nie powinien być używany w nowych wdrożeniach. Tylko NINA.
- OPEN: int¶
Alias zachowujący zgodność wsteczną dla
SEC_OPEN. Nowy kod powinien używaćSEC_OPEN. Tylko NINA.
- WEP: int¶
Alias zachowujący zgodność wsteczną dla
SEC_WEP. Nowy kod powinien używaćSEC_WEP. Tylko NINA.
- WPA_PSK: int¶
Alias zachowujący zgodność wsteczną dla
SEC_WPA_WPA2. Nowy kod powinien używaćSEC_WPA_WPA2. Tylko NINA.