třída WLAN – ovládání vestavěných WiFi rozhraní¶
Třída WLAN řídí vestavěné WiFi rádio na moderních kamerách OpenMV Cam. Tatáž třída obaluje dva různé základní ovladače podle WiFi MCU dané desky:
CYW43 (WiFi modul Infineon CYW43xxx Murata). Používaný kamerami OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision a Arduino Giga R1 WiFi.
NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Používaný zařízením Arduino Nano RP2040 Connect.
Oba ovladače poskytují stejné názvy metod, ale liší se v několika argumentech a v sadě přijímaných klíčů config(). Rozdíly jsou níže označeny.
Kamery OpenMV se starším WiFi shieldem WINC1500 (M4 / M7 / H7 / H7 Plus / Pure Thermal) používají místo toho WINC.
Příklad použití:
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¶
Vytvoří objekt rozhraní
WLAN.interface_idvybírá, na kterém rozhraní se má pracovat:WLAN.IF_STA– režim stanice / klienta. Připojte se k nadřazenému přístupovému bodu pomocíconnect(). Toto je výchozí volba.WLAN.IF_AP– režim přístupového bodu. Nakonfigurujte AP pomocíconfig()a přijímejte připojení klientů.
Obě rozhraní pohání totéž fyzické rádio; vytvoření jednoho nevylučuje druhé.
Metody¶
- active(is_active: bool | None = None) bool¶
Zapne nebo vypne WiFi rádio.
Bez argumentu vrací aktuální stav –
True, pokud je rádio zapnuté, jinakFalse.active(True)napájí WiFi MCU, načte jeho firmware (CYW43 načte blob s firmwarem z flash paměti; NINA ověří aktuálně nahranou verzi firmwaru) a uvede do provozu lwIP netif tohoto rozhraní. Všechny ostatní metody –connect(),scan(),ipconfig()a spol. – vyžadují, aby bylo rozhraní aktivní.active(False)rádio opět vypne. Na rozhraní STA tím rovněž dojde k odpojení od aktuálního AP a uvolnění netif.
- connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None¶
Přidruží rozhraní STA k zadanému přístupovému bodu.
ssid– SSID sítě (řetězec nebo bajty).key– heslo / sdílený klíč. Pro otevřenou síť předejteNone.security(pouze klíčové slovo) – jedna z konstantSEC_*.-1(výchozí) vybírá automaticky:SEC_OPEN, je-likeyprázdný, jinakSEC_WPA_WPA2.bssid(pouze klíčové slovo, pouze CYW43) – omezí přidružení na AP s touto 6bajtovou MAC adresou. Ovladač NINA jej ignoruje.channel(pouze klíčové slovo) – preferovaný rádiový kanál. Výchozí volba je „nechat ovladač vybrat“.
- disconnect() None¶
V režimu STA odpojí od aktuálně přidruženého přístupového bodu. Rozhraní zůstává aktivní; pro opětovné přidružení zavolejte znovu
connect(), neboactive()(False)pro úplné vypnutí rádia. Pokud aktuálně není přidruženo, jde o prázdnou operaci.
- isconnected() bool¶
V režimu STA vrací
True, je-li přidruženo k přístupovému bodu a byla získána IPv4 adresa z DHCP (nebo přidělena staticky pomocíipconfig()). VracíFalse, dokud je linka stále ve fázi autentizace/přidružování/DHCP.V režimu AP vrací
True, pokud se připojila alespoň jedna stanice.
- scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]¶
Vyhledá okolní přístupové body a vrátí seznam 6prvkových n-tic:
[0]SSID (bajty; prázdné u skrytých sítí).[1]BSSID (6bajtová MAC,bytes). Převeďte pomocíbinascii.hexlify().[2]Číslo kanálu.[3]RSSI v dBm.[4]Režim zabezpečení (jedna z konstantSEC_*).[5]Rezervováno (vždy1).
Všechny argumenty zadávané klíčovým slovem jsou pouze pro CYW43:
passive– je-liTrue, použije pasivní skenování namísto výchozího aktivního skenování pomocí probe-request.ssid– omezí skenování na jedno SSID.bssid– omezí skenování na jedno BSSID.
Skenování má smysl pouze na rozhraní STA.
- status() int¶
- status(param: str) Any
Dotaz na stav připojení.
Bez argumentu vrací stav linky jako malé celé číslo (kódování závislé na ovladači – pravdivá hodnota znamená „přidruženo“).
S řetězcovým argumentem:
"rssi"– v režimu STA vrací aktuální RSSI v dBm."stations"– v režimu AP vrací seznam připojených stanic. CYW43 vrací[(mac_bytes,), ...]; NINA vrací[ip_string, ...].
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Získá nebo nastaví parametry IPv4 rozhraní jako 4prvkovou n-tici řetězců ve formátu tečkové čtveřice
(ip, subnet, gateway, dns).Poznámka
Pro nový kód preferujte
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
Získá nebo nastaví parametry rozhraní IPv4 / IPv6. Ovladač CYW43 deleguje na standardní implementaci lwIP a podporuje úplnou sadu klíčů zdokumentovaných u
AbstractNIC.ipconfig(). Ovladač NINA implementuje menší podmnožinu pro jednotlivá rozhraní –dhcp4ahas_dhcp4(pouze pro čtení), plusaddr4agw4pro získání / nastavení.
- config(param: str) Any¶
- config(**kwargs: Any) None
Získá nebo nastaví parametry rozhraní specifické pro WiFi.
S jediným pozičním řetězcovým argumentem vrací hodnotu daného parametru. S argumenty zadanými klíčovým slovem nastaví jeden či více parametrů najednou – změny ovlivňující běžící AP způsobí, že je AP automaticky vypnut a opět zapnut.
Příklad:
# 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"))
Ovladač CYW43 – čitelné parametry:
"antenna"– volič antény (int)."channel"– aktuální kanál."ssid"/"essid"– aktuální SSID (řetězec)."security"– režim ověřování AP (jeden zSEC_*)."mac"– MAC adresa rozhraní (6bytes)."pm"– hodnota správy napájení."txpower"– vysílací výkon v dBm."hostname"– DHCP/mDNS název hostitele. Zastaralé; místo toho použijtenetwork.hostname().
Ovladač CYW43 – nastavitelné parametry:
antenna=<int>– volič antény.channel=<int>– kanál AP.ssid=<str>/essid=<str>– SSID AP.key=<str>/password=<str>– sdílený klíč AP.security=<int>– režim ověřování AP (jeden zSEC_*).pm=<int>– režim správy napájení (jeden zPM_NONE,PM_PERFORMANCE,PM_POWERSAVE).monitor=<int>– povolí režim monitor / all-multicast.txpower=<int>– vysílací výkon v dBm.trace=<int>– interní bitová maska trasování ovladače.hostname=<str>– DHCP/mDNS název hostitele. Zastaralé; místo toho použijtenetwork.hostname().
Ovladač NINA – čitelné parametry:
"ssid"– aktuální SSID (řetězec)."security"– režim ověřování AP."mac"/"bssid"– MAC adresa rozhraní (6bytes)."fw_version"– 3prvková n-tice(major, minor, patch).
Ovladač NINA – nastavitelné parametry: volání se předává metodě
connect()a přijímá tytéž argumenty zadávané klíčovým slovem (ssid,key,security,channel). Platné pouze na rozhraní AP.
- deinit() None¶
Provede vypnutí a zapnutí WiFi MCU a uvolní všechny prostředky, které ovladač drží (buffery firmwaru, lwIP netif, sběrnice SPI/SDIO). Po tomto volání je nutné objekt
WLANpřed použitím znovu vytvořit. Použijte to namístoactive()(False), když potřebujete úplný reset (například před opětovným nahráním firmwaru rádia nebo pro zotavení ze zaseknutého stavu ovladače). Pouze CYW43.
- send_ethernet(buf: bytes) None¶
Vstříkne surový Ethernet snímek
bufpřímo do vysílací cesty ovladače, čímž obejde IP zásobník. Určeno pro spotřebitele používající pouze L2 – mostování, vlastní protokoly EtherType apod. Snímek musí obsahovat cílovou/zdrojovou MAC a EtherType (bez FCS – to připojí hardware). Pouze CYW43.
- ioctl(cmd: int, buf: bytearray) None¶
Vydá řídicí příkaz specifický pro ovladač.
cmdje číselný kód ioctl definovaný základním firmwarem rádia abufje měnitelný buffer používaný jak pro užitečné zatížení příkazu, tak pro odpověď. Sada platných hodnotcmdje specifická pro ovladač a není přenositelná mezi CYW43 a NINA. Používáno většinou nízkoúrovňovými testovacími skripty a kódem pro uvádění čipů do provozu.
Konstanty¶
- SEC_WPA_WPA2: int¶
Hodnota zabezpečení pro WPA / WPA2 se sdíleným klíčem. Výchozí, když je metodě
connect()předán klíč. Dostupné u obou ovladačů.
- SEC_WEP: int¶
Hodnota zabezpečení pro WEP (Wired Equivalent Privacy). Poskytováno pro kompatibilitu se staršími přístupovými body – WEP je kryptograficky prolomený a neměl by se v nových nasazeních používat. Pouze NINA.
- OPEN: int¶
Alias pro zpětnou kompatibilitu s
SEC_OPEN. Nový kód by měl používatSEC_OPEN. Pouze NINA.
- WPA_PSK: int¶
Alias pro zpětnou kompatibilitu s
SEC_WPA_WPA2. Nový kód by měl používatSEC_WPA_WPA2. Pouze NINA.