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_id valitsee, mitä rajapintaa käytetään:

  • WLAN.IF_STA – asema- / asiakastila. Yhdistä ylävirran tukiasemaan metodilla connect(). Tämä on oletus.

  • WLAN.IF_AP – tukiasematila. Määritä tukiasema metodilla config() 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 – True kun radio on käynnissä, muutoin False.

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. Anna None avoimelle verkolle.

security (vain avainsanana) – yksi SEC_*-vakioista. -1 (oletus) valitsee automaattisesti: SEC_OPEN kun key on tyhjä, muutoin SEC_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 tai active() (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 metodilla ipconfig()). Palauttaa False, 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 funktiolla binascii.hexlify().

  • [2] Kanavanumero.

  • [3] RSSI yksikössä dBm.

  • [4] Suojaustila (yksi SEC_*-vakioista).

  • [5] Varattu (aina 1).

Kaikki avainsana-argumentit ovat vain CYW43:lle:

  • passive – jos True, 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 – dhcp4 ja has_dhcp4 (vain luku) sekä addr4 ja gw4 haulle / 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 (yksi SEC_*).

  • "mac" – rajapinnan MAC-osoite (6 bytes).

  • "pm" – virranhallinta-arvo.

  • "txpower" – lähetysteho yksikössä dBm.

  • "hostname" – DHCP-/mDNS-isäntänimi. Vanhentunut; käytä sen sijaan network.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 (yksi SEC_*).

  • pm=<int> – virranhallintatila (yksi vakioista PM_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 sijaan network.hostname().

NINA-ohjain – haettavat parametrit:

  • "ssid" – nykyinen SSID (merkkijono).

  • "security" – tukiaseman todennustila.

  • "mac" / "bssid" – rajapinnan MAC-osoite (6 bytes).

  • "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ä metodin active() (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 buf suoraan 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. cmd on numeerinen ioctl-koodi, jonka taustalla oleva radion laiteohjelmisto määrittää, ja buf on muokattava puskuri, jota käytetään sekä komennon hyötykuormaan että vastaukseen. Voimassa olevien cmd-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

IF_STA: int

Asema-/asiakasrajapinnan tunniste. Anna konstruktorille STA-tilan valitsemiseksi.

IF_AP: int

Tukiasemarajapinnan tunniste. Anna konstruktorille AP-tilan valitsemiseksi.

SEC_OPEN: int

Suojausarvo salaamattomalle verkolle. Saatavilla molemmissa ohjaimissa.

SEC_WPA_WPA2: int

Suojausarvo WPA:lle / WPA2:lle esijaetulla avaimella. Oletus, kun avain annetaan metodille connect(). Saatavilla molemmissa ohjaimissa.

SEC_WPA3: int

Suojausarvo WPA3:lle (SAE) esijaetulla avaimella. Vain CYW43.

SEC_WPA2_WPA3: int

Suojausarvo WPA2-/WPA3-siirtymätilalle. Vain CYW43.

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.

PM_NONE: int

Anna kutsulle config(pm=...) poistaaksesi WiFi-virranhallinnan käytöstä. Vain CYW43.

PM_PERFORMANCE: int

Anna kutsulle config(pm=...) ottaaksesi käyttöön suorituskykyyn viritetyn WiFi-virranhallinnan. Vain CYW43.

PM_POWERSAVE: int

Anna kutsulle config(pm=...) ottaaksesi käyttöön maksimaaliseen akunkestoon viritetyn WiFi-virranhallinnan. Vain CYW43.