class WINC – WiFi-shield-driver¶
De WINC-klasse stuurt de Atmel WINC1500 802.11 b/g/n WiFi-module op de OpenMV WiFi Shield aan. Beschikbaar op de OpenMV Cam M4, M7, H7, H7 Plus en Pure Thermal (de STM32-borden waarvoor de WiFi-shield is ontworpen). Gebruik voor borden met ingebouwde WiFi (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) in plaats daarvan WLAN.
Voorbeeld – verbinden met een toegangspunt en het adres afdrukken:
import network
wlan = network.WINC()
wlan.connect("SSID", "KEY", security=network.WINC.WPA_PSK)
print("status: ", "connected" if wlan.isconnected() else "off")
print("rssi: ", wlan.rssi(), "dBm")
print("interface: ", wlan.ifconfig())
print("netinfo: ", wlan.netinfo())
Voorbeeld – een open toegangspunt opzetten en wachten op een client:
import network
wlan = network.WINC(mode=network.WINC.MODE_AP)
wlan.start_ap("OpenMV-Cam", security=network.WINC.OPEN, channel=6)
print("waiting for a station to associate...")
print(wlan.wait_for_sta(timeout=None))
Constructors¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Maakt een
WINC-driverobject aan en brengt de WiFi-shield omhoog.modeselecteert de bedrijfsmodus waarin de module start:WINC.MODE_STA– station / client. Verbind met een toegangspunt metconnect(). Dit is de standaard.WINC.MODE_AP– toegangspunt. Configureer het AP metstart_ap()en accepteer vervolgens clientverbindingen.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– brengt alleen de BSP omhoog (geen radio).WINC.MODE_FIRMWARE– firmware-updatemodus; vereist doorfw_dump()enfw_update().
Notitie
In AP-modus heeft de WINC1500 hardwarebeperkingen:
Er kan slechts één client tegelijk verbinden.
Alleen
OPEN- of WEP-beveiliging worden ondersteund.Een firmwarebug in de WiFi-module zorgt ervoor dat alle gebonden sockets stoppen met werken wanneer de client de verbinding verbreekt. Stel een timeout in op de serversocket zodat deze een uitzondering genereert die je kunt gebruiken om hem opnieuw te openen.
Methoden¶
- active(is_active: bool | None = None) bool¶
Brengt de WiFi-shield omhoog of omlaag.
Zonder argument geeft het de huidige toestand terug –
Truezolang de shield is geïnitialiseerd en de radio omhoog is, andersFalse.active(True)voert de WINC1500-firmwarehandshake uit via SPI en brengt de radio omhoog in de geconfigureerdemode. Het is een no-op als de interface al actief is.connect()roept dit automatisch aan als het nog niet is aangeroepen; voor elke andere methode (scan(),rssi(),netinfo(), …) moet je eerstactive(True)aanroepen.active(False)schakelt de radio weer uit (de WINC valt terug naar de alleen-BSP-modus) en geeft de SPI-pinnen vrij.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Associeert met het WiFi-netwerk
ssidmet wachtwoordkey, beveiligingsmodussecurity(een vanOPEN,WPA_PSKof de 802.1X-constante) op radiochannel.securityenchannelzijn alleen-keyword.Gebruik na het verbinden de
socket-module om TCP/UDP-poorten te openen.Deze methode blokkeert totdat de associatie is voltooid of mislukt.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Alias van
connect(). Geleverd voor compatibiliteit met code dieconfigaanroept op anderenetwork-interfaces.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Alias van
connect()die wordt gebruikt nadat het object is geconstrueerd metmode=MODE_APom het toegangspunt te configureren en te starten. Het AP ondersteunt alleenOPEN- of WEP-beveiliging; als WEP wordt gebruikt iskeyvereist.
- disconnect() None¶
In STA-modus, ontkoppelt van het momenteel geassocieerde toegangspunt. De shield blijft actief; roep
connect()aan om opnieuw te associëren. No-op wanneer er momenteel geen associatie is.
- isconnected() bool¶
In STA-modus geeft
Trueterug wanneer er een associatie met een toegangspunt is en er een IPv4-adres is verkregen (via DHCP ofifconfig()). GeeftFalseterug terwijl het nog in de authenticatie-/associatie-/DHCP-fase zit.
- connected_sta() List[str]¶
In AP-modus geeft een lijst terug die het IP-adres van de momenteel verbonden client bevat (of een lege lijst als er geen client is verbonden).
- wait_for_sta(timeout: int | None) List[str]¶
In AP-modus blokkeert het totdat een client verbinding maakt en geeft een lijst terug die het IP-adres van de client bevat.
timeoutis de maximale wachttijd in milliseconden; geefNonedoor om onbeperkt te wachten.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Haalt de IPv4-interfaceparameters op of stelt ze in. De 4-tuple bevat
(ip, subnet, gateway, dns)als dotted-quad-strings.Aangeroepen zonder argument: geeft de huidige configuratie terug.
Aangeroepen met een 4-tuple: stelt een statische IP-configuratie in in plaats van de via DHCP verkregen configuratie.
Voorbeeld – een statisch IP vastpinnen voordat je verbinding maakt:
wlan = network.WINC() wlan.ifconfig(("192.168.1.100", "255.255.255.0", "192.168.1.1", "192.168.1.1")) wlan.connect(SSID, key=KEY, security=network.WINC.WPA_PSK)
Notitie
WINCimplementeert de moderneAbstractNIC.ipconfig()-API niet; gebruik hierifconfig().
- netinfo() Tuple[int, int, str, str, str]¶
Geeft een 5-tuple terug die de huidige associatie beschrijft:
[0]RSSI als een int (dBm).[1]Beveiligingsmodus – een van de beveiligingsconstanten.[2]SSID-string.[3]BSSID als een"XX:XX:XX:XX:XX:XX"MAC-string.[4]IPv4-adres als een dotted-quad-string.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Scant naar nabijgelegen toegangspunten. Geeft een lijst van 6-tuples terug:
[0]SSID-string.[1]BSSID als een"XX:XX:XX:XX:XX:XX"MAC-string.[2]Kanaalnummer.[3]RSSI in dBm.[4]Beveiligingsmodus – een van de beveiligingsconstanten.[5]Gereserveerd (altijd1).
Kan worden aangeroepen zonder eerst met een netwerk te associëren.
- rssi() int¶
Geeft de RSSI in dBm terug van het momenteel geassocieerde toegangspunt. Ruwweg:
-30is uitstekend,-67is oké voor streaming,-80is marginaal,-90en lager is onbruikbaar. Alleen zinvol in STA-modus terwijlisconnected()Trueis.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Geeft een 7-tuple terug die de WINC1500-firmware- en driverversies beschrijft:
[0]Firmware major.[1]Firmware minor.[2]Firmware patch.[3]Driver major.[4]Driver minor.[5]Driver patch.[6]Hardwarerevisie van de chip.
- fw_dump(path: str) None¶
Leest het interne flashgeheugen van de WINC1500 en schrijft de resulterende firmware-image naar het bestand op
pathop het bestandssysteem van de OpenMV. Gebruik dit om een back-up te maken van de momenteel geïnstalleerde image voordat jefw_update()aanroept.Vereist dat de module is geconstrueerd met
mode=MODE_FIRMWARE.
- fw_update(path: str) None¶
Wist het interne flashgeheugen van de WINC1500 en programmeert het met de binaire image op
path. De image moet overeenkomen met de indeling die door de OpenMV-firmware wordt verwacht (doorgaans geleverd door Atmel / Microchip met de WINC SDK).De aanroep blokkeert enkele seconden terwijl het flashgeheugen wordt geprogrammeerd en geverifieerd. Schakel de OpenMV Cam uit en weer aan nadat de aanroep is teruggekeerd, zodat de WINC1500 vanaf de nieuwe image start.
Vereist dat de module is geconstrueerd met
mode=MODE_FIRMWARE.
Constanten¶
- OPEN: int¶
Beveiligingswaarde voor een niet-versleuteld netwerk. Geef door aan het
security-argument vanconnect()/start_ap().
Notitie
Er bestaat ook een WPA/WPA2 Enterprise (802.1X) beveiligingswaarde. De firmware stelt deze bloot onder de naam
802_1X, wat geen geldige Python-identifier is – benader het viagetattr(network.WINC, "802_1X").- MODE_STA: int¶
Stationmodus – verbind als client met een toegangspunt. De standaard constructormodus.
- MODE_BSP: int¶
Initialiseert alleen het WINC board-support package – de radio wordt niet omhoog gebracht. Gebruikt door de firmware-updatestroom.
- MODE_FIRMWARE: int¶
Firmware-updatemodus. Vereist door
fw_dump()enfw_update().