class WLAN – ingebouwde WiFi-interfaces aansturen¶
De WLAN-klasse stuurt de ingebouwde WiFi-radio’s van moderne OpenMV Cams aan. Dezelfde klasse omvat twee verschillende onderliggende drivers, afhankelijk van de WiFi-MCU van het bord:
CYW43 (Infineon CYW43xxx Murata WiFi-module). Gebruikt door de OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision en Arduino Giga R1 WiFi.
NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Gebruikt door de Arduino Nano RP2040 Connect.
De twee drivers stellen dezelfde methodenamen beschikbaar, maar verschillen in een paar argumenten en in de set geaccepteerde config()-sleutels. Verschillen worden hieronder aangegeven.
De OpenMV-camera’s met een verouderd WINC1500 WiFi-shield (M4 / M7 / H7 / H7 Plus / Pure Thermal) gebruiken in plaats daarvan WINC.
Voorbeeldgebruik:
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"))
Constructors¶
- class network.WLAN(interface_id: int = WLAN.IF_STA) None¶
Maak een
WLAN-interfaceobject aan.interface_idselecteert op welke interface gewerkt wordt:WLAN.IF_STA– station-/clientmodus. Maak verbinding met een upstream toegangspunt metconnect(). Dit is de standaard.WLAN.IF_AP– toegangspuntmodus. Configureer het AP metconfig()en accepteer clientverbindingen.
Dezelfde fysieke radio ondersteunt beide interfaces; het construeren van de ene sluit de andere niet uit.
Methoden¶
- active(is_active: bool | None = None) bool¶
Schakel de WiFi-radio in of uit.
Zonder argument wordt de huidige status geretourneerd –
Truezolang de radio aan staat, andersFalse.active(True)schakelt de WiFi-MCU in, laadt de firmware ervan (CYW43 haalt de firmware-blob op uit het flashgeheugen; NINA valideert de momenteel geflashte firmwareversie) en brengt de lwIP-netif voor deze interface omhoog. Alle andere methoden –connect(),scan(),ipconfig()en aanverwanten – vereisen dat de interface actief is.active(False)schakelt de radio weer uit. Op de STA-interface wordt hierdoor ook de verbinding met het huidige AP verbroken en de netif vrijgegeven.
- connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None¶
Verbind de STA-interface met het opgegeven toegangspunt.
ssid– de netwerk-SSID (string of bytes).key– wachtwoord / pre-shared key. GeefNonedoor voor een open netwerk.security(alleen als keyword) – een van deSEC_*-constanten.-1(de standaard) kiest automatisch:SEC_OPENwanneerkeyleeg is, andersSEC_WPA_WPA2.bssid(alleen als keyword, uitsluitend CYW43) – beperk de associatie tot het AP met dit 6-byte MAC-adres. Wordt genegeerd door de NINA-driver.channel(alleen als keyword) – voorkeurskanaal van de radio. De standaard is “laat de driver kiezen”.
- disconnect() None¶
Verbreek in STA-modus de associatie met het momenteel verbonden toegangspunt. De interface blijft actief; roep opnieuw
connect()aan om opnieuw te associëren, ofactive()(False)om de radio volledig uit te schakelen. Doet niets wanneer er momenteel geen associatie is.
- isconnected() bool¶
In STA-modus wordt
Truegeretourneerd wanneer er geassocieerd is met een toegangspunt én er een IPv4-adres is verkregen via DHCP (of statisch toegewezen viaipconfig()). RetourneertFalsezolang de verbinding zich nog in de authenticatie-/associatie-/DHCP-fase bevindt.In AP-modus wordt
Truegeretourneerd wanneer ten minste één station verbonden is.
- scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]¶
Scan op nabijgelegen toegangspunten en retourneer een lijst van 6-tuples:
[0]SSID (bytes; leeg voor verborgen netwerken).[1]BSSID (6-byte MAC,bytes). Converteer metbinascii.hexlify().[2]Kanaalnummer.[3]RSSI in dBm.[4]Beveiligingsmodus (een van deSEC_*-constanten).[5]Gereserveerd (altijd1).
Alle keyword-argumenten zijn uitsluitend voor CYW43:
passive– indienTrue, gebruik een passieve scan in plaats van de standaard actieve probe-request-scan.ssid– beperk de scan tot één SSID.bssid– beperk de scan tot één BSSID.
Scannen is alleen zinvol op een STA-interface.
- status() int¶
- status(param: str) Any
Vraag de verbindingsstatus op.
Zonder argument wordt de linkstatus geretourneerd als een klein geheel getal (driverspecifieke codering – truthy betekent “geassocieerd”).
Met een string-argument:
"rssi"– in STA-modus, retourneer de huidige RSSI in dBm."stations"– in AP-modus, retourneer een lijst van verbonden stations. CYW43 retourneert[(mac_bytes,), ...]; NINA retourneert[ip_string, ...].
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Verkrijg of stel IPv4-interfaceparameters in als een 4-tuple van
(ip, subnet, gateway, dns)-strings in dotted-quad-notatie.Notitie
Geef voor nieuwe code de voorkeur aan
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
Verkrijg of stel IPv4-/IPv6-interfaceparameters in. De CYW43-driver delegeert naar de standaard lwIP-implementatie en ondersteunt de volledige set sleutels die gedocumenteerd is bij
AbstractNIC.ipconfig(). De NINA-driver implementeert een kleinere subset per interface –dhcp4enhas_dhcp4(alleen-lezen), plusaddr4engw4voor get/set.
- config(param: str) Any¶
- config(**kwargs: Any) None
Verkrijg of stel WiFi-specifieke interfaceparameters in.
Met één positioneel string-argument wordt de waarde van die parameter geretourneerd. Met keyword-argumenten worden een of meer parameters tegelijk ingesteld – wijzigingen die een draaiend AP beïnvloeden zorgen ervoor dat het AP automatisch wordt uit- en weer ingeschakeld.
Voorbeeld:
# 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-driver – opvraagbare parameters:
"antenna"– antenneselector (int)."channel"– huidig kanaal."ssid"/"essid"– de huidige SSID (string)."security"– de authenticatiemodus van het AP (een vanSEC_*)."mac"– MAC-adres van de interface (6bytes)."pm"– waarde voor energiebeheer."txpower"– zendvermogen in dBm."hostname"– DHCP-/mDNS-hostnaam. Verouderd; gebruik in plaats daarvannetwork.hostname().
CYW43-driver – instelbare parameters:
antenna=<int>– antenneselector.channel=<int>– AP-kanaal.ssid=<str>/essid=<str>– AP-SSID.key=<str>/password=<str>– AP pre-shared key.security=<int>– AP-authenticatiemodus (een vanSEC_*).pm=<int>– energiebeheermodus (een vanPM_NONE,PM_PERFORMANCE,PM_POWERSAVE).monitor=<int>– schakel monitor-/all-multicast-modus in.txpower=<int>– zendvermogen in dBm.trace=<int>– interne driver-trace-bitmask.hostname=<str>– DHCP-/mDNS-hostnaam. Verouderd; gebruik in plaats daarvannetwork.hostname().
NINA-driver – opvraagbare parameters:
"ssid"– de huidige SSID (string)."security"– de authenticatiemodus van het AP."mac"/"bssid"– MAC-adres van de interface (6bytes)."fw_version"– een 3-tuple(major, minor, patch).
NINA-driver – instelbare parameters: de aanroep wordt doorgestuurd naar
connect()en accepteert dezelfde keyword-argumenten (ssid,key,security,channel). Alleen geldig op de AP-interface.
- deinit() None¶
Schakel de WiFi-MCU volledig uit en weer aan en geef elke resource vrij die de driver vasthoudt (firmwarebuffers, lwIP-netif, SPI/SDIO-bus). Na het aanroepen hiervan moet het
WLAN-object opnieuw worden geconstrueerd voordat het gebruikt kan worden. Gebruik dit in plaats vanactive()(False)wanneer je een volledige reset nodig hebt (bijvoorbeeld voordat je de firmware van de radio opnieuw flasht of om te herstellen van een vastgelopen driverstatus). Uitsluitend CYW43.
- send_ethernet(buf: bytes) None¶
Injecteer het ruwe Ethernet-frame
bufrechtstreeks in het transmissiepad van de driver, waarbij de IP-stack wordt omzeild. Bedoeld voor L2-only-toepassingen – bridging, aangepaste EtherType-protocollen en dergelijke. Het frame moet het bestemmings-/bron-MAC en de EtherType bevatten (geen FCS – de hardware voegt die toe). Uitsluitend CYW43.
- ioctl(cmd: int, buf: bytearray) None¶
Geef een driverspecifieke besturingsopdracht.
cmdis de numerieke ioctl-code die door de onderliggende radio-firmware is gedefinieerd enbufis een muteerbare buffer die zowel voor de opdrachtpayload als voor het antwoord wordt gebruikt. De set geldigecmd-waarden is driverspecifiek en niet overdraagbaar tussen CYW43 en NINA. Wordt voornamelijk gebruikt door low-level testscripts en chip-bring-up-code.
Constanten¶
- IF_STA: int¶
Identifier voor de station-/clientinterface. Geef door aan de constructor om STA-modus te selecteren.
- IF_AP: int¶
Identifier voor de toegangspuntinterface. Geef door aan de constructor om AP-modus te selecteren.
- SEC_WPA_WPA2: int¶
Beveiligingswaarde voor WPA / WPA2 met een pre-shared key. De standaard wanneer een key wordt opgegeven aan
connect(). Beschikbaar op beide drivers.
- SEC_WEP: int¶
Beveiligingswaarde voor WEP (Wired Equivalent Privacy). Aangeboden voor compatibiliteit met verouderde toegangspunten – WEP is cryptografisch gebroken en mag niet worden gebruikt bij nieuwe implementaties. Uitsluitend NINA.
- OPEN: int¶
Achterwaarts-compatibel alias voor
SEC_OPEN. Nieuwe code dientSEC_OPENte gebruiken. Uitsluitend NINA.
- WEP: int¶
Achterwaarts-compatibel alias voor
SEC_WEP. Nieuwe code dientSEC_WEPte gebruiken. Uitsluitend NINA.
- WPA_PSK: int¶
Achterwaarts-compatibel alias voor
SEC_WPA_WPA2. Nieuwe code dientSEC_WPA_WPA2te gebruiken. Uitsluitend NINA.
- PM_NONE: int¶
Geef door aan
config(pm=...)om WiFi-energiebeheer uit te schakelen. Uitsluitend CYW43.