class WINC – ovladač WiFi shieldu¶
Třída WINC řídí WiFi modul Atmel WINC1500 802.11 b/g/n na desce OpenMV WiFi Shield. Dostupné na OpenMV Cam M4, M7, H7, H7 Plus a Pure Thermal (desky STM32, pro které byl WiFi shield navržen). Pro desky s vestavěnou WiFi (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) použijte místo toho WLAN.
Příklad – připojení k přístupovému bodu a výpis adresy:
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())
Příklad – spuštění otevřeného přístupového bodu a čekání na klienta:
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))
Konstruktory¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Vytvoří objekt ovladače
WINCa spustí WiFi shield.modevolí provozní režim, ve kterém modul startuje:WINC.MODE_STA– stanice / klient. Připojení k přístupovému bodu pomocíconnect(). Toto je výchozí hodnota.WINC.MODE_AP– přístupový bod. Nakonfigurujte AP pomocístart_ap()a poté přijímejte připojení klientů.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– spuštění pouze BSP (bez rádia).WINC.MODE_FIRMWARE– režim aktualizace firmwaru; vyžadováno metodamifw_dump()afw_update().
Poznámka
V režimu AP má WINC1500 hardwarová omezení:
Současně se může připojit pouze jeden klient.
Podporováno je pouze zabezpečení
OPENnebo WEP.Chyba ve firmwaru WiFi modulu způsobuje, že jakékoli navázané sockety přestanou fungovat, když se klient odpojí. Nastavte na serverovém socketu timeout, aby vyvolal výjimku, kterou můžete použít k jeho opětovnému otevření.
Metody¶
- active(is_active: bool | None = None) bool¶
Aktivuje nebo deaktivuje WiFi shield.
Bez argumentu vrátí aktuální stav –
True, dokud je shield inicializován a rádio aktivní, jinakFalse.active(True)provede handshake firmwaru WINC1500 přes SPI a spustí rádio v nakonfigurovaném režimumode. Pokud je rozhraní již aktivní, nemá žádný efekt.connect()toto volá automaticky, pokud ještě nebylo voláno; pro jakoukoli jinou metodu (scan(),rssi(),netinfo(), …) musíte nejprve zavolatactive(True).active(False)opět vypne rádio (WINC přejde do režimu pouze BSP) a uvolní piny SPI.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Připojí se k WiFi síti
ssids heslemkey, režimem zabezpečenísecurity(jednou z hodnotOPEN,WPA_PSKnebo konstanty 802.1X) na kanáluchannel.securityachanneljsou pouze klíčové (keyword-only).Po připojení použijte modul
socketk otevření TCP/UDP portů.Tato metoda blokuje, dokud se připojení nedokončí nebo nezdaří.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Alias pro
connect(). Poskytováno kvůli kompatibilitě s kódem, který voláconfigna jiných rozhraníchnetwork.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Alias pro
connect()používaný po vytvoření objektu smode=MODE_APke konfiguraci a spuštění přístupového bodu. AP podporuje pouze zabezpečeníOPENnebo WEP; pokud je použito WEP, je vyžadovánkey.
- disconnect() None¶
V režimu STA se odpojí od aktuálně přiřazeného přístupového bodu. Shield zůstává aktivní; pro opětovné připojení zavolejte
connect(). Pokud aktuálně není připojen, nemá žádný efekt.
- isconnected() bool¶
V režimu STA vrátí
True, pokud je připojen k přístupovému bodu a byla získána IPv4 adresa (přes DHCP neboifconfig()). VrátíFalse, dokud je stále ve fázi autentizace / přiřazování / DHCP.
- connected_sta() List[str]¶
V režimu AP vrátí seznam obsahující IP adresu aktuálně připojeného klienta (nebo prázdný seznam, pokud není připojen žádný klient).
- wait_for_sta(timeout: int | None) List[str]¶
V režimu AP blokuje, dokud se nepřipojí klient, a vrátí seznam obsahující IP adresu klienta.
timeoutje maximální doba čekání v milisekundách; předánímNonese bude čekat neomezeně.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Získá nebo nastaví parametry rozhraní IPv4. 4-tice obsahuje
(ip, subnet, gateway, dns)jako řetězce v tečkové notaci.Voláno bez argumentu: vrátí aktuální konfiguraci.
Voláno se 4-ticí: nastaví statickou konfiguraci IP místo té získané přes DHCP.
Příklad – nastavení statické IP před připojením:
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)
Poznámka
WINCneimplementuje moderní APIAbstractNIC.ipconfig(); zde použijteifconfig().
- netinfo() Tuple[int, int, str, str, str]¶
Vrátí 5-tici popisující aktuální připojení:
[0]RSSI jako int (dBm).[1]Režim zabezpečení – jedna z konstant zabezpečení.[2]Řetězec SSID.[3]BSSID jako MAC řetězec"XX:XX:XX:XX:XX:XX".[4]IPv4 adresa jako řetězec v tečkové notaci.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Vyhledá okolní přístupové body. Vrátí seznam 6-tic:
[0]Řetězec SSID.[1]BSSID jako MAC řetězec"XX:XX:XX:XX:XX:XX".[2]Číslo kanálu.[3]RSSI v dBm.[4]Režim zabezpečení – jedna z konstant zabezpečení.[5]Rezervováno (vždy1).
Lze volat bez předchozího připojení k síti.
- rssi() int¶
Vrátí RSSI v dBm aktuálně připojeného přístupového bodu. Zhruba:
-30je výborné,-67je v pořádku pro streamování,-80je hraniční,-90a méně je nepoužitelné. Smysluplné pouze v režimu STA, dokud jeisconnected()True.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Vrátí 7-tici popisující verze firmwaru a ovladače WINC1500:
[0]Hlavní verze firmwaru (major).[1]Vedlejší verze firmwaru (minor).[2]Patch verze firmwaru.[3]Hlavní verze ovladače (major).[4]Vedlejší verze ovladače (minor).[5]Patch verze ovladače.[6]Hardwarová revize čipu.
- fw_dump(path: str) None¶
Přečte interní flash paměť WINC1500 a zapíše výsledný obraz firmwaru do souboru v cestě
pathna souborovém systému OpenMV. Použijte k zálohování aktuálně nainstalovaného obrazu před volánímfw_update().Vyžaduje, aby byl modul vytvořen s
mode=MODE_FIRMWARE.
- fw_update(path: str) None¶
Vymaže interní flash paměť WINC1500 a naprogramuje ji binárním obrazem v cestě
path. Obraz musí odpovídat rozložení očekávanému firmwarem OpenMV (obvykle dodávaným společností Atmel / Microchip s WINC SDK).Volání blokuje několik sekund, dokud je flash paměť naprogramována a ověřena. Po návratu z volání proveďte vypnutí a zapnutí napájení OpenMV Cam, aby WINC1500 nastartoval z nového obrazu.
Vyžaduje, aby byl modul vytvořen s
mode=MODE_FIRMWARE.
Konstanty¶
- OPEN: int¶
Hodnota zabezpečení pro nešifrovanou síť. Předejte do argumentu
securitymetodconnect()/start_ap().
Poznámka
Existuje také hodnota zabezpečení WPA/WPA2 Enterprise (802.1X). Firmware ji vystavuje pod názvem
802_1X, což není platný identifikátor Pythonu – přistupte k ní přesgetattr(network.WINC, "802_1X").- MODE_STA: int¶
Režim stanice – připojení k přístupovému bodu jako klient. Výchozí režim konstruktoru.
- MODE_BSP: int¶
Inicializuje pouze board-support package WINC – rádio se nespustí. Používáno při procesu aktualizace firmwaru.
- MODE_FIRMWARE: int¶
Režim aktualizace firmwaru. Vyžadováno metodami
fw_dump()afw_update().