class WLAN – styr inbyggda WiFi-gränssnitt¶
Klassen WLAN driver de inbyggda WiFi-radioenheterna på moderna OpenMV Cam-kameror. Samma klass omsluter två olika underliggande drivrutiner beroende på kortets WiFi-MCU:
CYW43 (Infineon CYW43xxx Murata WiFi-modul). Används av OpenMV Cam N6, OpenMV Cam RT1062, Arduino Portenta H7, Arduino Nicla Vision och Arduino Giga R1 WiFi.
NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Används av Arduino Nano RP2040 Connect.
De två drivrutinerna exponerar samma metodnamn men skiljer sig åt i ett fåtal argument och i uppsättningen accepterade config()-nycklar. Skillnaderna markeras nedan.
OpenMV-kamerorna med en äldre WINC1500 WiFi-sköld (M4 / M7 / H7 / H7 Plus / Pure Thermal) använder WINC istället.
Exempelanvändning:
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"))
Konstruktorer¶
- class network.WLAN(interface_id: int = WLAN.IF_STA) None¶
Skapa ett
WLAN-gränssnittsobjekt.interface_idväljer vilket gränssnitt som ska användas:WLAN.IF_STA– station/klientläge. Anslut till en överordnad åtkomstpunkt medconnect(). Detta är standardvärdet.WLAN.IF_AP– åtkomstpunktsläge. Konfigurera åtkomstpunkten medconfig()och ta emot klientanslutningar.
Samma fysiska radio ligger bakom båda gränssnitten; att konstruera det ena utesluter inte det andra.
Metoder¶
- active(is_active: bool | None = None) bool¶
Starta upp eller stäng av WiFi-radion.
Utan argument returneras det aktuella tillståndet –
Truemedan radion är uppe,Falseannars.active(True)slår på WiFi-MCU:n, läser in dess fasta programvara (CYW43 hämtar programvarublobben från flashminne; NINA validerar den för närvarande flashade firmware-versionen) och startar upp lwIP-netif för detta gränssnitt. Alla andra metoder –connect(),scan(),ipconfig()med flera – kräver att gränssnittet är aktivt.active(False)stänger av radion igen. På STA-gränssnittet kopplar detta även bort från den aktuella åtkomstpunkten och frigör netif.
- connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None¶
Associera STA-gränssnittet med den angivna åtkomstpunkten.
ssid– nätverkets SSID (sträng eller bytes).key– lösenord/för-delad nyckel. SkickaNoneför ett öppet nätverk.security(endast nyckelord) – en avSEC_*-konstanterna.-1(standardvärdet) väljer automatiskt:SEC_OPENnärkeyär tom,SEC_WPA_WPA2annars.bssid(endast nyckelord, endast CYW43) – begränsa associationen till åtkomstpunkten med denna 6-byte MAC-adress. Ignoreras av NINA-drivrutinen.channel(endast nyckelord) – föredragen radiokanal. Standard är ”låt drivrutinen välja”.
- disconnect() None¶
I STA-läge, koppla bort från den för närvarande associerade åtkomstpunkten. Gränssnittet förblir aktivt; anropa
connect()igen för att återassociera, elleractive()(False)för att stänga av radion helt. Ingen åtgärd när ingen association för närvarande finns.
- isconnected() bool¶
I STA-läge returneras
Truenär gränssnittet är associerat med en åtkomstpunkt och en IPv4-adress har erhållits från DHCP (eller tilldelats statiskt viaipconfig()). ReturnerarFalsemedan länken fortfarande befinner sig i autentiserings-/associerings-/DHCP-fasen.I AP-läge returneras
Truenär minst en station har anslutit.
- scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]¶
Sök efter närliggande åtkomstpunkter och returnera en lista med 6-tupler:
[0]SSID (bytes; tomt för dolda nätverk).[1]BSSID (6-byte MAC,bytes). Konvertera medbinascii.hexlify().[2]Kanalnummer.[3]RSSI i dBm.[4]Säkerhetsläge (en avSEC_*-konstanterna).[5]Reserverat (alltid1).
Alla nyckelordsargument är endast för CYW43:
passive– omTrueanvänds en passiv sökning istället för den förvalda aktiva probe-request-sökningen.ssid– begränsa sökningen till ett SSID.bssid– begränsa sökningen till ett BSSID.
Sökning är endast meningsfull på ett STA-gränssnitt.
- status() int¶
- status(param: str) Any
Fråga efter anslutningsstatus.
Utan argument returneras länkstatusen som ett litet heltal (drivrutinsspecifik kodning – ett sant värde betyder ”associerad”).
Med ett strängargument:
"rssi"– i STA-läge, returnera den aktuella RSSI:n i dBm."stations"– i AP-läge, returnera en lista över anslutna stationer. CYW43 returnerar[(mac_bytes,), ...]; NINA returnerar[ip_string, ...].
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Hämta eller ange IPv4-gränssnittsparametrar som en 4-tupel av punktnoterade strängar
(ip, subnet, gateway, dns).Anteckning
Föredra
ipconfig()för ny kod: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
Hämta eller ange IPv4-/IPv6-gränssnittsparametrar. CYW43-drivrutinen delegerar till standardimplementationen av lwIP och stöder hela uppsättningen nycklar som dokumenteras för
AbstractNIC.ipconfig(). NINA-drivrutinen implementerar en mindre delmängd per gränssnitt –dhcp4ochhas_dhcp4(skrivskyddade), samtaddr4ochgw4för hämtning/inställning.
- config(param: str) Any¶
- config(**kwargs: Any) None
Hämta eller ange WiFi-specifika gränssnittsparametrar.
Med ett enda positionellt strängargument returneras värdet för den parametern. Med nyckelordsargument anges en eller flera parametrar på en gång – ändringar som påverkar en pågående åtkomstpunkt gör att åtkomstpunkten automatiskt stängs ned och startas upp igen.
Exempel:
# 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-drivrutinen – hämtbara parametrar:
"antenna"– antennväljare (int)."channel"– aktuell kanal."ssid"/"essid"– det aktuella SSID:t (sträng)."security"– åtkomstpunktens autentiseringsläge (en avSEC_*)."mac"– gränssnittets MAC-adress (6bytes)."pm"– värde för strömhantering."txpower"– sändareffekt i dBm."hostname"– DHCP-/mDNS-värdnamn. Föråldrad; användnetwork.hostname()istället.
CYW43-drivrutinen – inställbara parametrar:
antenna=<int>– antennväljare.channel=<int>– åtkomstpunktens kanal.ssid=<str>/essid=<str>– åtkomstpunktens SSID.key=<str>/password=<str>– åtkomstpunktens för-delade nyckel.security=<int>– åtkomstpunktens autentiseringsläge (en avSEC_*).pm=<int>– strömhanteringsläge (en avPM_NONE,PM_PERFORMANCE,PM_POWERSAVE).monitor=<int>– aktivera monitor-/all-multicast-läge.txpower=<int>– sändareffekt i dBm.trace=<int>– intern bitmask för drivrutinsspårning.hostname=<str>– DHCP-/mDNS-värdnamn. Föråldrad; användnetwork.hostname()istället.
NINA-drivrutinen – hämtbara parametrar:
"ssid"– det aktuella SSID:t (sträng)."security"– åtkomstpunktens autentiseringsläge."mac"/"bssid"– gränssnittets MAC-adress (6bytes)."fw_version"– en 3-tupel(major, minor, patch).
NINA-drivrutinen – inställbara parametrar: anropet vidarebefordras till
connect()och accepterar samma nyckelordsargument (ssid,key,security,channel). Endast giltigt på AP-gränssnittet.
- deinit() None¶
Strömcykla WiFi-MCU:n och frigör alla resurser som drivrutinen håller (firmware-buffertar, lwIP-netif, SPI/SDIO-buss). Efter att detta anropats måste
WLAN-objektet återskapas innan det används. Använd detta istället föractive()(False)när du behöver en fullständig återställning (till exempel innan radions fasta programvara flashas om, eller för att återhämta sig från ett fastlåst drivrutinstillstånd). Endast CYW43.
- send_ethernet(buf: bytes) None¶
Mata in den råa Ethernet-bildrutan
bufdirekt i drivrutinens sändningsväg, förbi IP-stacken. Avsedd för konsumenter som endast använder L2 – bryggning, anpassade EtherType-protokoll och liknande. Bildrutan måste innehålla destinations-/käll-MAC och EtherType (ingen FCS – hårdvaran lägger till den). Endast CYW43.
- ioctl(cmd: int, buf: bytearray) None¶
Utför ett drivrutinsspecifikt styrkommando.
cmdär den numeriska ioctl-koden som definieras av den underliggande radions fasta programvara ochbufär en muterbar buffert som används för både kommandots nyttolast och svaret. Uppsättningen giltigacmd-värden är drivrutinsspecifik och inte portabel mellan CYW43 och NINA. Används mestadels av lågnivåtestskript och kod för chip-igångsättning.
Konstanter¶
- IF_STA: int¶
Identifierare för station-/klientgränssnitt. Skicka till konstruktorn för att välja STA-läge.
- IF_AP: int¶
Identifierare för åtkomstpunktsgränssnitt. Skicka till konstruktorn för att välja AP-läge.
- SEC_WPA_WPA2: int¶
Säkerhetsvärde för WPA/WPA2 med en för-delad nyckel. Standardvärdet när en nyckel anges till
connect(). Tillgängligt på båda drivrutinerna.
- SEC_WEP: int¶
Säkerhetsvärde för WEP (Wired Equivalent Privacy). Tillhandahålls för kompatibilitet med äldre åtkomstpunkter – WEP är kryptografiskt brutet och bör inte användas i nya driftsättningar. Endast NINA.
- WPA_PSK: int¶
Bakåtkompatibelt alias för
SEC_WPA_WPA2. Ny kod bör användaSEC_WPA_WPA2. Endast NINA.