class WLAN – sisäänrakennettujen WiFi-rajapintojen ohjaus¶
WLAN-luokka ohjaa sisäänrakennettuja WiFi-radioita uudemmissa OpenMV Cam -kameroissa. Sama luokka kapseloi kaksi eri taustaohjainta riippuen kortin WiFi-MCU:sta:
CYW43 (Infineon CYW43xxx Murata WiFi -moduuli). Käytössä laitteissa OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision ja Arduino Giga R1 WiFi.
NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Käytössä laitteessa Arduino Nano RP2040 Connect.
Kaksi ohjainta tarjoavat samat metodien nimet mutta eroavat muutamissa argumenteissa ja hyväksyttyjen config()-avainten joukossa. Erot on merkitty alle.
OpenMV-kamerat, joissa on vanhempi WINC1500 WiFi -laajennus (M4 / M7 / H7 / H7 Plus / Pure Thermal), käyttävät sen sijaan WINC-luokkaa.
Esimerkkikäyttö:
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"))
Konstruktorit¶
- class network.WLAN(interface_id: int = WLAN.IF_STA) None¶
Luo
WLAN-rajapintaobjekti.interface_idvalitsee, mitä rajapintaa käytetään:WLAN.IF_STA– asema- / asiakastila. Yhdistä ylävirran tukiasemaan metodillaconnect(). Tämä on oletus.WLAN.IF_AP– tukiasematila. Määritä tukiasema metodillaconfig()ja hyväksy asiakasyhteyksiä.
Sama fyysinen radio taustoittaa molemmat rajapinnat; toisen rakentaminen ei estä toista.
Metodit¶
- active(is_active: bool | None = None) bool¶
Käynnistä WiFi-radio tai sammuta se.
Ilman argumenttia palauttaa nykyisen tilan –
Truekun radio on käynnissä, muutoinFalse.active(True)käynnistää WiFi-MCU:n, lataa sen laiteohjelmiston (CYW43 hakee laiteohjelmiston blob-tiedoston flash-muistista; NINA validoi nykyisen flash-muistiin tallennetun laiteohjelmistoversion) ja käynnistää tämän rajapinnan lwIP-netif-rajapinnan. Kaikki muut metodit –connect(),scan(),ipconfig()ja vastaavat – edellyttävät, että rajapinta on aktiivinen.active(False)sammuttaa radion takaisin. STA-rajapinnassa tämä myös purkaa yhteyden nykyiseen tukiasemaan ja vapauttaa netif-rajapinnan.
- connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None¶
Yhdistä STA-rajapinta annettuun tukiasemaan.
ssid– verkon SSID (merkkijono tai tavut).key– salasana / esijaettu avain. AnnaNoneavoimelle verkolle.security(vain avainsanana) – yksiSEC_*-vakioista.-1(oletus) valitsee automaattisesti:SEC_OPENkunkeyon tyhjä, muutoinSEC_WPA_WPA2.bssid(vain avainsanana, vain CYW43) – rajoita yhdistäminen tukiasemaan, jolla on tämä 6-tavuinen MAC-osoite. NINA-ohjain ohittaa tämän.channel(vain avainsanana) – haluttu radiokanava. Oletus on ”anna ohjaimen valita”.
- disconnect() None¶
STA-tilassa purkaa yhteyden tällä hetkellä yhdistettyyn tukiasemaan. Rajapinta pysyy aktiivisena; kutsu
connect()uudelleen yhdistääksesi uudelleen taiactive()(False)sammuttaaksesi radion kokonaan. Ei tee mitään, kun yhteyttä ei tällä hetkellä ole.
- isconnected() bool¶
STA-tilassa palauttaa
True, kun yhteys tukiasemaan on muodostettu ja IPv4-osoite on saatu DHCP:ltä (tai määritetty staattisesti metodillaipconfig()). PalauttaaFalse, kun yhteys on vielä todennus-/yhdistämis-/DHCP-vaiheessa.AP-tilassa palauttaa
True, kun vähintään yksi asema on liittynyt.
- scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]¶
Etsi lähellä olevia tukiasemia ja palauta lista 6-monikoita:
[0]SSID (tavut; tyhjä piilotetuille verkoille).[1]BSSID (6-tavuinen MAC,bytes). Muunna funktiollabinascii.hexlify().[2]Kanavanumero.[3]RSSI yksikössä dBm.[4]Suojaustila (yksiSEC_*-vakioista).[5]Varattu (aina1).
Kaikki avainsana-argumentit ovat vain CYW43:lle:
passive– josTrue, käytä passiivista skannausta oletusarvoisen aktiivisen probe-request-skannauksen sijaan.ssid– rajoita skannaus yhteen SSID:hen.bssid– rajoita skannaus yhteen BSSID:hen.
Skannaus on mielekästä vain STA-rajapinnassa.
- status() int¶
- status(param: str) Any
Kysele yhteyden tilaa.
Ilman argumenttia palauttaa linkin tilan pienenä kokonaislukuna (ohjainkohtainen koodaus – tosi tarkoittaa ”yhdistetty”).
Merkkijonoargumentilla:
"rssi"– STA-tilassa palauttaa nykyisen RSSI:n yksikössä dBm."stations"– AP-tilassa palauttaa listan yhdistetyistä asemista. CYW43 palauttaa[(mac_bytes,), ...]; NINA palauttaa[ip_string, ...].
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Hae tai aseta IPv4-rajapinnan parametrit 4-monikkona muotoa
(ip, subnet, gateway, dns)olevista pisteneliöstä koostuvista merkkijonoista.Muista
Käytä uudessa koodissa mieluummin
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
Hae tai aseta IPv4-/IPv6-rajapinnan parametrit. CYW43-ohjain delegoi standardille lwIP-toteutukselle ja tukee koko avainjoukkoa, joka on dokumentoitu kohdassa
AbstractNIC.ipconfig(). NINA-ohjain toteuttaa pienemmän rajapintakohtaisen osajoukon –dhcp4jahas_dhcp4(vain luku) sekäaddr4jagw4haulle / asetukselle.
- config(param: str) Any¶
- config(**kwargs: Any) None
Hae tai aseta WiFi-kohtaiset rajapinnan parametrit.
Yhdellä positionaalisella merkkijonoargumentilla palauttaa kyseisen parametrin arvon. Avainsana-argumenteilla asettaa yhden tai useamman parametrin kerralla – muutokset, jotka vaikuttavat käynnissä olevaan tukiasemaan, aiheuttavat tukiaseman automaattisen alas- ja takaisin ylösajon.
Esimerkki:
# 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-ohjain – haettavat parametrit:
"antenna"– antennivalitsin (int)."channel"– nykyinen kanava."ssid"/"essid"– nykyinen SSID (merkkijono)."security"– tukiaseman todennustila (yksiSEC_*)."mac"– rajapinnan MAC-osoite (6bytes)."pm"– virranhallinta-arvo."txpower"– lähetysteho yksikössä dBm."hostname"– DHCP-/mDNS-isäntänimi. Vanhentunut; käytä sen sijaannetwork.hostname().
CYW43-ohjain – asetettavat parametrit:
antenna=<int>– antennivalitsin.channel=<int>– tukiaseman kanava.ssid=<str>/essid=<str>– tukiaseman SSID.key=<str>/password=<str>– tukiaseman esijaettu avain.security=<int>– tukiaseman todennustila (yksiSEC_*).pm=<int>– virranhallintatila (yksi vakioistaPM_NONE,PM_PERFORMANCE,PM_POWERSAVE).monitor=<int>– ota käyttöön monitorointi-/all-multicast-tila.txpower=<int>– lähetysteho yksikössä dBm.trace=<int>– ohjaimen sisäinen jäljitysbittimaski.hostname=<str>– DHCP-/mDNS-isäntänimi. Vanhentunut; käytä sen sijaannetwork.hostname().
NINA-ohjain – haettavat parametrit:
"ssid"– nykyinen SSID (merkkijono)."security"– tukiaseman todennustila."mac"/"bssid"– rajapinnan MAC-osoite (6bytes)."fw_version"– 3-monikko(major, minor, patch).
NINA-ohjain – asetettavat parametrit: kutsu välittyy metodille
connect()ja hyväksyy samat avainsana-argumentit (ssid,key,security,channel). Voimassa vain AP-rajapinnassa.
- deinit() None¶
Käynnistä WiFi-MCU uudelleen virtaa katkaisemalla ja vapauta jokainen ohjaimen pitämä resurssi (laiteohjelmistopuskurit, lwIP-netif, SPI-/SDIO-väylä). Tämän kutsumisen jälkeen
WLAN-objekti on rakennettava uudelleen ennen käyttöä. Käytä tätä metodinactive()(False)sijaan, kun tarvitset täydellisen nollauksen (esimerkiksi ennen radion laiteohjelmiston uudelleenflashaamista tai jumiutuneesta ohjaimen tilasta palautumiseen). Vain CYW43.
- send_ethernet(buf: bytes) None¶
Syötä raaka Ethernet-kehys
bufsuoraan ohjaimen lähetyspolkuun ohittaen IP-pinon. Tarkoitettu vain L2-tasolla toimiville käyttäjille – siltaus, mukautetut EtherType-protokollat ja vastaavat. Kehyksen on sisällettävä kohde-/lähde-MAC ja EtherType (ei FCS:ää – laitteisto lisää sen). Vain CYW43.
- ioctl(cmd: int, buf: bytearray) None¶
Anna ohjainkohtainen ohjauskomento.
cmdon numeerinen ioctl-koodi, jonka taustalla oleva radion laiteohjelmisto määrittää, jabufon muokattava puskuri, jota käytetään sekä komennon hyötykuormaan että vastaukseen. Voimassa oleviencmd-arvojen joukko on ohjainkohtainen eikä siirrettävissä CYW43:n ja NINA:n välillä. Käytetään pääosin matalan tason testiskripteissä ja sirun käyttöönottokoodissa.
Vakiot¶
- SEC_WPA_WPA2: int¶
Suojausarvo WPA:lle / WPA2:lle esijaetulla avaimella. Oletus, kun avain annetaan metodille
connect(). Saatavilla molemmissa ohjaimissa.
- SEC_WEP: int¶
Suojausarvo WEP:lle (Wired Equivalent Privacy). Tarjotaan yhteensopivuuden vuoksi vanhempien tukiasemien kanssa – WEP on kryptografisesti rikki eikä sitä tulisi käyttää uusissa käyttöönotoissa. Vain NINA.
- OPEN: int¶
Taaksepäin yhteensopiva alias arvolle
SEC_OPEN. Uuden koodin tulisi käyttääSEC_OPEN. Vain NINA.
- WEP: int¶
Taaksepäin yhteensopiva alias arvolle
SEC_WEP. Uuden koodin tulisi käyttääSEC_WEP. Vain NINA.
- WPA_PSK: int¶
Taaksepäin yhteensopiva alias arvolle
SEC_WPA_WPA2. Uuden koodin tulisi käyttääSEC_WPA_WPA2. Vain NINA.