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
WLANsučelja.interface_idodabire na kojem sučelju će se raditi:WLAN.IF_STA– stanični / klijentski način rada. Povezuje se s nadređenom pristupnom točkom putemconnect(). Ovo je zadana vrijednost.WLAN.IF_AP– način rada pristupne točke. Konfigurirajte AP pomoćuconfig()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 –
Truedok je radio uređaj uključen, inačeFalse.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č. ProslijediteNoneza otvorenu mrežu.security(samo kao ključna riječ) – jedna odSEC_*konstanti.-1(zadano) automatski odabire:SEC_OPENkada jekeyprazan, inačeSEC_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 iliactive()(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
Truekada je uspostavljena veza s pristupnom točkom i kada je IPv4 adresa dobivena putem DHCP-a (ili statički dodijeljena putemipconfig()). VraćaFalsedok je veza još u fazi autentikacije/povezivanja/DHCP-a.U AP načinu rada vraća
Truekada 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ćubinascii.hexlify().[2]Broj kanala.[3]RSSI u dBm.[4]Sigurnosni način rada (jedna odSEC_*konstanti).[5]Rezervirano (uvijek1).
Svi argumenti ključnih riječi dostupni su samo za CYW43:
passive– ako jeTrue, 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 –dhcp4ihas_dhcp4(samo za čitanje), uzaddr4igw4za 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 odSEC_*)."mac"– MAC adresa sučelja (6bytes)."pm"– vrijednost upravljanja napajanjem."txpower"– snaga odašiljanja u dBm."hostname"– DHCP/mDNS naziv domaćina. Zastarjelo; umjesto toga koristitenetwork.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 odSEC_*).pm=<int>– način upravljanja napajanjem (jedan odPM_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 koristitenetwork.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 (6bytes)."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
WLANmora se ponovno stvoriti prije upotrebe. Koristite ovo umjestoactive()(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
bufizravno 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.
cmdje numerički ioctl kod definiran osnovnim firmwareom radio uređaja, abufje promjenjivi međuspremnik koji se koristi i za korisni teret naredbe i za odgovor. Skup valjanihcmdvrijednosti 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_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_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 koristitiSEC_OPEN. Samo NINA.
- WEP: int¶
Alias za kompatibilnost unatrag za
SEC_WEP. Novi kod trebao bi koristitiSEC_WEP. Samo NINA.
- WPA_PSK: int¶
Alias za kompatibilnost unatrag za
SEC_WPA_WPA2. Novi kod trebao bi koristitiSEC_WPA_WPA2. Samo NINA.
- PM_NONE: int¶
Proslijedite metodi
config(pm=...)za onemogućavanje WiFi upravljanja napajanjem. Samo CYW43.