klasa WLAN – upravljanje ugrađenim WiFi sučeljima

Klasa WLAN upravlja ugrađenim WiFi radio uređajima na modernim OpenMV Cam kamerama. Ista klasa obuhvaća dva različita osnovna upravljačka programa, ovisno o WiFi MCU-u na ploči:

  • CYW43 (Infineon CYW43xxx Murata WiFi modul). Koriste ga OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision i Arduino Giga R1 WiFi.

  • NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Koristi ga Arduino Nano RP2040 Connect.

Oba upravljačka programa izlažu iste nazive metoda, ali se razlikuju u nekoliko argumenata i skupu prihvaćenih config() ključeva. Razlike su istaknute u nastavku.

OpenMV kamere s naslijeđenim WINC1500 WiFi proširenjem (M4 / M7 / H7 / H7 Plus / Pure Thermal) koriste WINC umjesto toga.

Primjer upotrebe:

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

Konstruktori

class network.WLAN(interface_id: int = WLAN.IF_STA) None

Stvara objekt WLAN sučelja.

interface_id odabire na kojem sučelju će se raditi:

  • WLAN.IF_STA – stanični / klijentski način rada. Povezuje se s nadređenom pristupnom točkom putem connect(). Ovo je zadana vrijednost.

  • WLAN.IF_AP – način rada pristupne točke. Konfigurirajte AP pomoću config() i prihvaćajte veze klijenata.

Isti fizički radio uređaj podržava oba sučelja; stvaranje jednog ne isključuje drugo.

Metode

active(is_active: bool | None = None) bool

Uključuje ili isključuje WiFi radio uređaj.

Bez argumenta vraća trenutno stanje – True dok je radio uređaj uključen, inače False.

active(True) napaja WiFi MCU, učitava njegov ugrađeni program (firmware) (CYW43 dohvaća binarni objekt firmwarea iz flash memorije; NINA provjerava valjanost trenutno flešane verzije firmwarea) i podiže lwIP netif za ovo sučelje. Sve ostale metode – connect(), scan(), ipconfig() i srodne – zahtijevaju da sučelje bude aktivno.

active(False) ponovno isključuje napajanje radio uređaja. Na STA sučelju to također prekida vezu s trenutnim AP-om i oslobađa netif.

connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None

Povezuje STA sučelje sa zadanom pristupnom točkom.

ssid – SSID mreže (niz znakova ili bajtovi).

key – lozinka / unaprijed dijeljeni ključ. Proslijedite None za otvorenu mrežu.

security (samo kao ključna riječ) – jedna od SEC_* konstanti. -1 (zadano) automatski odabire: SEC_OPEN kada je key prazan, inače SEC_WPA_WPA2.

bssid (samo kao ključna riječ, samo CYW43) – ograničava povezivanje na AP s ovom 6-bajtnom MAC adresom. NINA upravljački program ga ignorira.

channel (samo kao ključna riječ) – preferirani radio kanal. Zadano je „neka upravljački program odabere”.

disconnect() None

U STA načinu rada prekida vezu s trenutno povezanom pristupnom točkom. Sučelje ostaje aktivno; ponovno pozovite connect() za ponovno povezivanje ili active() (False) za potpuno isključivanje napajanja radio uređaja. Nema učinka kada veza trenutno ne postoji.

isconnected() bool

U STA načinu rada vraća True kada je uspostavljena veza s pristupnom točkom i kada je IPv4 adresa dobivena putem DHCP-a (ili statički dodijeljena putem ipconfig()). Vraća False dok je veza još u fazi autentikacije/povezivanja/DHCP-a.

U AP načinu rada vraća True kada se barem jedna stanica pridružila.

scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]

Skenira obližnje pristupne točke i vraća popis 6-člana niza:

  • [0] SSID (bajtovi; prazno za skrivene mreže).

  • [1] BSSID (6-bajtni MAC, bytes). Pretvorite pomoću binascii.hexlify().

  • [2] Broj kanala.

  • [3] RSSI u dBm.

  • [4] Sigurnosni način rada (jedna od SEC_* konstanti).

  • [5] Rezervirano (uvijek 1).

Svi argumenti ključnih riječi dostupni su samo za CYW43:

  • passive – ako je True, koristi pasivno skeniranje umjesto zadanog aktivnog skeniranja sa zahtjevom za probu.

  • ssid – ograničava skeniranje na jedan SSID.

  • bssid – ograničava skeniranje na jedan BSSID.

Skeniranje ima smisla samo na STA sučelju.

status() int
status(param: str) Any

Ispituje status veze.

Bez argumenta vraća status veze kao mali cijeli broj (kodiranje ovisno o upravljačkom programu – istinita vrijednost znači „povezano”).

S argumentom niza znakova:

  • "rssi" – u STA načinu rada vraća trenutni RSSI u dBm.

  • "stations" – u AP načinu rada vraća popis povezanih stanica. CYW43 vraća [(mac_bytes,), ...]; NINA vraća [ip_string, ...].

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

Dohvaća ili postavlja IPv4 parametre sučelja kao 4-člana niza (ip, subnet, gateway, dns) u obliku nizova s točkama.

Napomena

Za novi kod preferirajte 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

Dohvaća ili postavlja IPv4 / IPv6 parametre sučelja. CYW43 upravljački program prosljeđuje standardnoj lwIP implementaciji i podržava cijeli skup ključeva dokumentiranih u AbstractNIC.ipconfig(). NINA upravljački program implementira manji podskup po sučelju – dhcp4 i has_dhcp4 (samo za čitanje), uz addr4 i gw4 za dohvaćanje / postavljanje.

config(param: str) Any
config(**kwargs: Any) None

Dohvaća ili postavlja parametre sučelja specifične za WiFi.

S jednim pozicijskim argumentom u obliku niza znakova vraća vrijednost tog parametra. S argumentima ključnih riječi postavlja jedan ili više parametara odjednom – promjene koje utječu na pokrenuti AP uzrokuju automatsko gašenje i ponovno pokretanje AP-a.

Primjer:

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

CYW43 upravljački program – parametri koji se mogu dohvatiti:

  • "antenna" – birač antene (int).

  • "channel" – trenutni kanal.

  • "ssid" / "essid" – trenutni SSID (niz znakova).

  • "security" – način autentikacije AP-a (jedan od SEC_*).

  • "mac" – MAC adresa sučelja (6 bytes).

  • "pm" – vrijednost upravljanja napajanjem.

  • "txpower" – snaga odašiljanja u dBm.

  • "hostname" – DHCP/mDNS naziv domaćina. Zastarjelo; umjesto toga koristite network.hostname().

CYW43 upravljački program – parametri koji se mogu postaviti:

  • antenna=<int> – birač antene.

  • channel=<int> – AP kanal.

  • ssid=<str> / essid=<str> – AP SSID.

  • key=<str> / password=<str> – unaprijed dijeljeni ključ AP-a.

  • security=<int> – način autentikacije AP-a (jedan od SEC_*).

  • pm=<int> – način upravljanja napajanjem (jedan od PM_NONE, PM_PERFORMANCE, PM_POWERSAVE).

  • monitor=<int> – omogućuje način nadzora / svih multicast prijenosa.

  • txpower=<int> – snaga odašiljanja u dBm.

  • trace=<int> – interna bitmaska za praćenje upravljačkog programa.

  • hostname=<str> – DHCP/mDNS naziv domaćina. Zastarjelo; umjesto toga koristite network.hostname().

NINA upravljački program – parametri koji se mogu dohvatiti:

  • "ssid" – trenutni SSID (niz znakova).

  • "security" – način autentikacije AP-a.

  • "mac" / "bssid" – MAC adresa sučelja (6 bytes).

  • "fw_version" – 3-člana niza (major, minor, patch).

NINA upravljački program – parametri koji se mogu postaviti: poziv se prosljeđuje metodi connect() i prihvaća iste argumente ključnih riječi (ssid, key, security, channel). Vrijedi samo na AP sučelju.

deinit() None

Ponovno pokreće napajanje WiFi MCU-a i oslobađa sve resurse koje upravljački program drži (međuspremnici firmwarea, lwIP netif, SPI/SDIO sabirnica). Nakon ovog poziva objekt WLAN mora se ponovno stvoriti prije upotrebe. Koristite ovo umjesto active() (False) kada vam je potrebno potpuno resetiranje (na primjer, prije ponovnog flešanja firmwarea radio uređaja ili za oporavak od zaglavljenog stanja upravljačkog programa). Samo CYW43.

send_ethernet(buf: bytes) None

Ubacuje sirovi Ethernet okvir buf izravno u put odašiljanja upravljačkog programa, zaobilazeći IP stog. Namijenjeno isključivo L2 korisnicima – premošćivanju, prilagođenim EtherType protokolima i sličnom. Okvir mora sadržavati odredišni/izvorni MAC i EtherType (bez FCS – hardver ga dodaje). Samo CYW43.

ioctl(cmd: int, buf: bytearray) None

Izdaje upravljačku naredbu specifičnu za upravljački program. cmd je numerički ioctl kod definiran osnovnim firmwareom radio uređaja, a buf je promjenjivi međuspremnik koji se koristi i za korisni teret naredbe i za odgovor. Skup valjanih cmd vrijednosti specifičan je za upravljački program i nije prenosiv između CYW43 i NINA. Uglavnom ga koriste niskorazinske testne skripte i kod za pokretanje čipa.

Konstante

IF_STA: int

Identifikator staničnog / klijentskog sučelja. Proslijedite konstruktoru za odabir STA načina rada.

IF_AP: int

Identifikator sučelja pristupne točke. Proslijedite konstruktoru za odabir AP načina rada.

SEC_OPEN: int

Sigurnosna vrijednost za nešifriranu mrežu. Dostupno na oba upravljačka programa.

SEC_WPA_WPA2: int

Sigurnosna vrijednost za WPA / WPA2 s unaprijed dijeljenim ključem. Zadano kada se ključ proslijedi metodi connect(). Dostupno na oba upravljačka programa.

SEC_WPA3: int

Sigurnosna vrijednost za WPA3 (SAE) s unaprijed dijeljenim ključem. Samo CYW43.

SEC_WPA2_WPA3: int

Sigurnosna vrijednost za WPA2 / WPA3 prijelazni način rada. Samo CYW43.

SEC_WEP: int

Sigurnosna vrijednost za WEP (Wired Equivalent Privacy). Pruža se radi kompatibilnosti s naslijeđenim pristupnim točkama – WEP je kriptografski probijen i ne bi se trebao koristiti u novim implementacijama. Samo NINA.

OPEN: int

Alias za kompatibilnost unatrag za SEC_OPEN. Novi kod trebao bi koristiti SEC_OPEN. Samo NINA.

WEP: int

Alias za kompatibilnost unatrag za SEC_WEP. Novi kod trebao bi koristiti SEC_WEP. Samo NINA.

WPA_PSK: int

Alias za kompatibilnost unatrag za SEC_WPA_WPA2. Novi kod trebao bi koristiti SEC_WPA_WPA2. Samo NINA.

PM_NONE: int

Proslijedite metodi config(pm=...) za onemogućavanje WiFi upravljanja napajanjem. Samo CYW43.

PM_PERFORMANCE: int

Proslijedite metodi config(pm=...) za omogućavanje WiFi upravljanja napajanjem podešenog za performanse. Samo CYW43.

PM_POWERSAVE: int

Proslijedite metodi config(pm=...) za omogućavanje WiFi upravljanja napajanjem podešenog za maksimalan vijek trajanja baterije. Samo CYW43.