class WINC – WiFi-Shield-Treiber¶
Die WINC-Klasse steuert das Atmel WINC1500 802.11 b/g/n WiFi-Modul auf dem OpenMV WiFi Shield an. Verfügbar auf der OpenMV Cam M4, M7, H7, H7 Plus und Pure Thermal (den STM32-Boards, für die das WiFi-Shield entwickelt wurde). Für Boards mit integriertem WiFi (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) verwenden Sie stattdessen WLAN.
Beispiel – mit einem Access Point verbinden und die Adresse ausgeben:
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())
Beispiel – einen offenen Access Point hochfahren und auf einen Client warten:
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))
Konstruktoren¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Erzeugt ein
WINC-Treiberobjekt und fährt das WiFi-Shield hoch.modewählt den Betriebsmodus aus, in dem das Modul startet:WINC.MODE_STA– Station / Client. Verbinden Sie sich mitconnect()mit einem Access Point. Dies ist der Standard.WINC.MODE_AP– Access Point. Konfigurieren Sie den AP mitstart_ap()und akzeptieren Sie dann Client-Verbindungen.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– bringt nur das BSP hoch (kein Funkbetrieb).WINC.MODE_FIRMWARE– Firmware-Update-Modus; erforderlich fürfw_dump()undfw_update().
Bemerkung
Im AP-Modus hat das WINC1500 Hardware-Beschränkungen:
Es kann sich nur ein Client gleichzeitig verbinden.
Es werden nur
OPEN- oder WEP-Sicherheit unterstützt.Ein Firmware-Fehler des WiFi-Moduls führt dazu, dass alle gebundenen Sockets nicht mehr funktionieren, wenn der Client die Verbindung trennt. Setzen Sie ein Timeout für den Server-Socket, damit dieser eine Ausnahme auslöst, die Sie zum erneuten Öffnen verwenden können.
Methoden¶
- active(is_active: bool | None = None) bool¶
Aktiviert oder deaktiviert das WiFi-Shield.
Ohne Argument wird der aktuelle Zustand zurückgegeben –
True, solange das Shield initialisiert und der Funkbetrieb aktiv ist, andernfallsFalse.active(True)führt den WINC1500-Firmware-Handshake über SPI durch und bringt den Funkbetrieb im konfiguriertenmodehoch. Ist die Schnittstelle bereits aktiv, ist dies ein No-op.connect()ruft dies automatisch auf, falls es noch nicht aufgerufen wurde; für jede andere Methode (scan(),rssi(),netinfo(), …) müssen Sie zuerstactive(True)aufrufen.active(False)fährt den Funkbetrieb wieder herunter (das WINC fällt in den reinen BSP-Modus zurück) und gibt die SPI-Pins frei.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Verbindet sich mit dem WiFi-Netzwerk
ssidunter Verwendung des Passwortskey, des Sicherheitsmodussecurity(einer vonOPEN,WPA_PSKoder der 802.1X-Konstante) auf dem Funkkanalchannel.securityundchannelsind nur als Schlüsselwortargumente zulässig.Verwenden Sie nach dem Verbinden das
socket-Modul, um TCP/UDP-Ports zu öffnen.Diese Methode blockiert, bis die Zuordnung abgeschlossen ist oder fehlschlägt.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Alias von
connect(). Bereitgestellt zur Kompatibilität mit Code, derconfigauf anderennetwork-Schnittstellen aufruft.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Alias von
connect(), der nach dem Erzeugen des Objekts mitmode=MODE_APverwendet wird, um den Access Point zu konfigurieren und zu starten. Der AP unterstützt nurOPEN- oder WEP-Sicherheit; bei Verwendung von WEP istkeyerforderlich.
- disconnect() None¶
Im STA-Modus wird die Zuordnung zum aktuell zugeordneten Access Point getrennt. Das Shield bleibt aktiv; rufen Sie
connect()auf, um die Zuordnung wiederherzustellen. No-op, wenn aktuell keine Zuordnung besteht.
- isconnected() bool¶
Gibt im STA-Modus
Truezurück, wenn eine Zuordnung zu einem Access Point besteht und eine IPv4-Adresse bezogen wurde (über DHCP oderifconfig()). GibtFalsezurück, solange die Authentifizierungs-/Zuordnungs-/DHCP-Phase noch läuft.
- connected_sta() List[str]¶
Gibt im AP-Modus eine Liste zurück, die die IP-Adresse des aktuell verbundenen Clients enthält (oder eine leere Liste, wenn kein Client verbunden ist).
- wait_for_sta(timeout: int | None) List[str]¶
Blockiert im AP-Modus, bis sich ein Client verbindet, und gibt eine Liste mit der IP-Adresse des Clients zurück.
timeoutist die maximale Wartezeit in Millisekunden; übergeben SieNone, um unbegrenzt zu warten.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Liest oder setzt IPv4-Schnittstellenparameter. Das 4-Tupel enthält
(ip, subnet, gateway, dns)als Strings im Dotted-Quad-Format.Ohne Argument aufgerufen: gibt die aktuelle Konfiguration zurück.
Mit einem 4-Tupel aufgerufen: setzt eine statische IP-Konfiguration anstelle der per DHCP bezogenen.
Beispiel – eine statische IP vor dem Verbinden festlegen:
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)
Bemerkung
WINCimplementiert die moderneAbstractNIC.ipconfig()-API nicht; verwenden Sie hierifconfig().
- netinfo() Tuple[int, int, str, str, str]¶
Gibt ein 5-Tupel zurück, das die aktuelle Zuordnung beschreibt:
[0]RSSI als int (dBm).[1]Sicherheitsmodus – eine der Sicherheitskonstanten.[2]SSID-String.[3]BSSID als"XX:XX:XX:XX:XX:XX"-MAC-String.[4]IPv4-Adresse als Dotted-Quad-String.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Sucht nach nahegelegenen Access Points. Gibt eine Liste von 6-Tupeln zurück:
[0]SSID-String.[1]BSSID als"XX:XX:XX:XX:XX:XX"-MAC-String.[2]Kanalnummer.[3]RSSI in dBm.[4]Sicherheitsmodus – eine der Sicherheitskonstanten.[5]Reserviert (immer1).
Kann aufgerufen werden, ohne sich zuvor mit einem Netzwerk zu verbinden.
- rssi() int¶
Gibt den RSSI in dBm des aktuell zugeordneten Access Points zurück. Grob:
-30ist ausgezeichnet,-67ist für Streaming in Ordnung,-80ist grenzwertig,-90und darunter ist unbrauchbar. Nur im STA-Modus aussagekräftig, solangeisconnected()Trueist.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Gibt ein 7-Tupel zurück, das die WINC1500-Firmware- und Treiberversionen beschreibt:
[0]Firmware-Hauptversion.[1]Firmware-Nebenversion.[2]Firmware-Patch.[3]Treiber-Hauptversion.[4]Treiber-Nebenversion.[5]Treiber-Patch.[6]Chip-Hardware-Revision.
- fw_dump(path: str) None¶
Liest den internen Flash des WINC1500 und schreibt das resultierende Firmware-Image in die Datei unter
pathim Dateisystem des OpenMV. Verwenden Sie dies, um das aktuell installierte Image zu sichern, bevor Siefw_update()aufrufen.Erfordert, dass das Modul mit
mode=MODE_FIRMWAREerzeugt wurde.
- fw_update(path: str) None¶
Löscht den internen Flash des WINC1500 und programmiert ihn mit dem Binär-Image unter
path. Das Image muss dem von der OpenMV-Firmware erwarteten Layout entsprechen (typischerweise von Atmel / Microchip mit dem WINC SDK bereitgestellt).Der Aufruf blockiert mehrere Sekunden lang, während der Flash programmiert und verifiziert wird. Schalten Sie die OpenMV Cam nach der Rückkehr des Aufrufs aus und wieder ein, damit das WINC1500 vom neuen Image startet.
Erfordert, dass das Modul mit
mode=MODE_FIRMWAREerzeugt wurde.
Konstanten¶
- OPEN: int¶
Sicherheitswert für ein unverschlüsseltes Netzwerk. An das
security-Argument vonconnect()/start_ap()zu übergeben.
- WPA_PSK: int¶
Sicherheitswert für WPA/WPA2 mit einem vorab geteilten Schlüssel. Der Standard für
connect().
Bemerkung
Es existiert auch ein WPA/WPA2-Enterprise-Sicherheitswert (802.1X). Die Firmware stellt ihn unter dem Namen
802_1Xbereit, was kein gültiger Python-Bezeichner ist – greifen Sie übergetattr(network.WINC, "802_1X")darauf zu.- MODE_STA: int¶
Station-Modus – als Client mit einem Access Point verbinden. Der Standard-Konstruktormodus.
- MODE_BSP: int¶
Initialisiert nur das WINC-Board-Support-Package – der Funkbetrieb wird nicht hochgefahren. Wird vom Firmware-Update-Ablauf verwendet.
- MODE_FIRMWARE: int¶
Firmware-Update-Modus. Erforderlich für
fw_dump()undfw_update().