class WINC – drivrutin för WiFi-sköld¶
WINC-klassen driver Atmel WINC1500 802.11 b/g/n WiFi-modulen på OpenMV WiFi Shield. Tillgänglig på OpenMV Cam M4, M7, H7, H7 Plus och Pure Thermal (de STM32-kort som WiFi-skölden konstruerades för). För kort med inbyggt WiFi (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) använd WLAN i stället.
Exempel – anslut till en accesspunkt och skriv ut adressen:
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())
Exempel – starta en öppen accesspunkt och vänta på en klient:
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))
Konstruktorer¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Skapa ett
WINC-drivrutinsobjekt och starta WiFi-skölden.modeväljer det driftläge modulen startar i:WINC.MODE_STA– station/klient. Anslut till en accesspunkt medconnect(). Detta är standardvärdet.WINC.MODE_AP– accesspunkt. Konfigurera accesspunkten medstart_ap()och acceptera sedan klientanslutningar.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– starta endast BSP:n (ingen radio).WINC.MODE_FIRMWARE– läge för uppdatering av fast programvara; krävs avfw_dump()ochfw_update().
Anteckning
I AP-läge har WINC1500 hårdvarubegränsningar:
Endast en klient kan ansluta åt gången.
Endast
OPEN- eller WEP-säkerhet stöds.En bugg i WiFi-modulens fasta programvara gör att eventuella bundna sockets slutar fungera när klienten kopplar ner. Sätt en timeout på serversocketen så att den utlöser ett undantag som du kan använda för att öppna den på nytt.
Metoder¶
- active(is_active: bool | None = None) bool¶
Aktivera eller inaktivera WiFi-skölden.
Utan argument returneras det aktuella tillståndet –
Truemedan skölden är initierad och radion är uppe, annarsFalse.active(True)utför WINC1500-handskakningen av fast programvara över SPI och aktiverar radion i det konfigurerademode-läget. Det är en no-op om gränssnittet redan är aktivt.connect()anropar detta automatiskt om det inte redan har anropats; för alla andra metoder (scan(),rssi(),netinfo(), …) måste du anropaactive(True)först.active(False)stänger ner radion igen (WINC går ner till enbart BSP-läge) och frigör SPI-stiften.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Associera med WiFi-nätverket
ssidmed lösenordetkey, säkerhetslägetsecurity(en avOPEN,WPA_PSKeller 802.1X-konstanten) på radiokanalenchannel.securityochchannelär endast nyckelordsargument.Efter anslutning används
socket-modulen för att öppna TCP-/UDP-portar.Denna metod blockerar tills associationen slutförs eller misslyckas.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Alias för
connect(). Tillhandahålls för kompatibilitet med kod som anroparconfigpå andranetwork-gränssnitt.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Alias för
connect()som används efter att objektet konstruerats medmode=MODE_APför att konfigurera och starta accesspunkten. Accesspunkten stöder endastOPEN- eller WEP-säkerhet; om WEP används krävskey.
- disconnect() None¶
I STA-läge, koppla bort från den för närvarande associerade accesspunkten. Skölden förblir aktiv; anropa
connect()för att associera på nytt. No-op när ingen association för närvarande finns.
- isconnected() bool¶
I STA-läge returneras
Truenär enheten är associerad med en accesspunkt och en IPv4-adress har erhållits (via DHCP ellerifconfig()). ReturnerarFalsemedan enheten fortfarande är i autentiserings-/associations-/DHCP-fasen.
- connected_sta() List[str]¶
I AP-läge returneras en lista som innehåller IP-adressen för den för närvarande anslutna klienten (eller en tom lista om ingen klient är ansluten).
- wait_for_sta(timeout: int | None) List[str]¶
I AP-läge, blockera tills en klient ansluter och returnera en lista som innehåller klientens IP-adress.
timeoutär den maximala väntetiden i millisekunder; skickaNoneför att vänta på obestämd tid.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Hämta eller ange IPv4-gränssnittsparametrar. 4-tupeln innehåller
(ip, subnet, gateway, dns)som punktnoterade strängar.Anropad utan argument: returnerar den aktuella konfigurationen.
Anropad med en 4-tupel: anger en statisk IP-konfiguration i stället för den DHCP-erhållna.
Exempel – fastställ en statisk IP innan anslutning:
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)
Anteckning
WINCimplementerar inte det modernaAbstractNIC.ipconfig()-API:et; användifconfig()här.
- netinfo() Tuple[int, int, str, str, str]¶
Returnera en 5-tupel som beskriver den aktuella associationen:
[0]RSSI som ett heltal (dBm).[1]Säkerhetsläge – en av säkerhetskonstanterna.[2]SSID-sträng.[3]BSSID som en MAC-sträng"XX:XX:XX:XX:XX:XX".[4]IPv4-adress som en punktnoterad sträng.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Sök efter accesspunkter i närheten. Returnerar en lista av 6-tupler:
[0]SSID-sträng.[1]BSSID som en MAC-sträng"XX:XX:XX:XX:XX:XX".[2]Kanalnummer.[3]RSSI i dBm.[4]Säkerhetsläge – en av säkerhetskonstanterna.[5]Reserverad (alltid1).
Kan anropas utan att först associera med ett nätverk.
- rssi() int¶
Returnera RSSI i dBm för den för närvarande associerade accesspunkten. Grovt sett:
-30är utmärkt,-67är OK för strömning,-80är marginellt,-90och lägre är oanvändbart. Endast meningsfullt i STA-läge medanisconnected()ärTrue.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Returnera en 7-tupel som beskriver WINC1500:s versioner av fast programvara och drivrutin:
[0]Fast programvara, huvudversion.[1]Fast programvara, delversion.[2]Fast programvara, patchversion.[3]Drivrutin, huvudversion.[4]Drivrutin, delversion.[5]Drivrutin, patchversion.[6]Chippets hårdvarurevision.
- fw_dump(path: str) None¶
Läs WINC1500:s interna flashminne och skriv den resulterande avbilden av fast programvara till filen vid
pathpå OpenMV:s filsystem. Använd detta för att säkerhetskopiera den för närvarande installerade avbilden innan du anroparfw_update().Kräver att modulen har konstruerats med
mode=MODE_FIRMWARE.
- fw_update(path: str) None¶
Radera WINC1500:s interna flashminne och programmera det med den binära avbilden vid
path. Avbilden måste matcha den layout som OpenMV:s fasta programvara förväntar sig (vanligtvis tillhandahållen av Atmel/Microchip med WINC SDK).Anropet blockerar i flera sekunder medan flashminnet programmeras och verifieras. Strömcykla OpenMV Cam efter att anropet returnerar så att WINC1500 startar från den nya avbilden.
Kräver att modulen har konstruerats med
mode=MODE_FIRMWARE.
Konstanter¶
- OPEN: int¶
Säkerhetsvärde för ett okrypterat nätverk. Skicka till
security-argumentet iconnect()/start_ap().
- WPA_PSK: int¶
Säkerhetsvärde för WPA/WPA2 med en på förhand delad nyckel. Standardvärdet för
connect().
Anteckning
Ett säkerhetsvärde för WPA/WPA2 Enterprise (802.1X) finns också. Den fasta programvaran exponerar det under namnet
802_1X, vilket inte är en giltig Python-identifierare – åtkomst sker viagetattr(network.WINC, "802_1X").- MODE_STA: int¶
Stationsläge – anslut till en accesspunkt som klient. Standardläget för konstruktorn.
- MODE_BSP: int¶
Initiera endast WINC:s board-support package – radion startas inte. Används av flödet för uppdatering av fast programvara.
- MODE_FIRMWARE: int¶
Läge för uppdatering av fast programvara. Krävs av
fw_dump()ochfw_update().