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.

mode väljer det driftläge modulen startar i:

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 – True medan skölden är initierad och radion är uppe, annars False.

active(True) utför WINC1500-handskakningen av fast programvara över SPI och aktiverar radion i det konfigurerade mode-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 anropa active(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 ssid med lösenordet key, säkerhetsläget security (en av OPEN, WPA_PSK eller 802.1X-konstanten) på radiokanalen channel. security och channel ä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 anropar config på andra network-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 med mode=MODE_AP för att konfigurera och starta accesspunkten. Accesspunkten stöder endast OPEN- eller WEP-säkerhet; om WEP används krävs key.

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 True när enheten är associerad med en accesspunkt och en IPv4-adress har erhållits (via DHCP eller ifconfig()). Returnerar False medan 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; skicka None fö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

WINC implementerar inte det moderna AbstractNIC.ipconfig()-API:et; använd ifconfig() 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 (alltid 1).

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, -90 och lägre är oanvändbart. Endast meningsfullt i STA-läge medan isconnected() är True.

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 path på OpenMV:s filsystem. Använd detta för att säkerhetskopiera den för närvarande installerade avbilden innan du anropar fw_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 i connect()/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 via getattr(network.WINC, "802_1X").

MODE_STA: int

Stationsläge – anslut till en accesspunkt som klient. Standardläget för konstruktorn.

MODE_AP: int

Accesspunktsläge – WINC blir den accesspunkt som klienter associerar med.

MODE_P2P: int

WiFi-Direct-läge (peer-to-peer).

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() och fw_update().