class WINC – WiFi shield illesztőprogram

A WINC osztály az OpenMV WiFi Shieldön lévő Atmel WINC1500 802.11 b/g/n WiFi modult vezérli. Elérhető az OpenMV Cam M4, M7, H7, H7 Plus és Pure Thermal kártyákon (azok az STM32 kártyák, amelyekhez a WiFi shieldet tervezték). A beépített WiFi-vel rendelkező kártyákhoz (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) használd helyette a WLAN osztályt.

Példa – csatlakozás egy hozzáférési ponthoz és a cím kiírása:

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élda – egy nyitott hozzáférési pont felhozása és várakozás egy kliensre:

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))

Konstruktorok

class network.WINC(mode: int = WINC.MODE_STA) None

Egy WINC illesztőprogram-objektum létrehozása és a WiFi shield felhozása.

A mode választja ki azt az üzemmódot, amelyben a modul elindul:

Megjegyzés

AP módban a WINC1500-nak hardveres korlátai vannak:

  • Egyszerre csak egy kliens csatlakozhat.

  • Csak az OPEN vagy a WEP biztonsági mód támogatott.

  • A WiFi-modul firmware-ének egy hibája miatt a kötött socketek leállnak, amikor a kliens lecsatlakozik. Állíts be időtúllépést a kiszolgáló socketjén, hogy az olyan kivételt dobjon, amelyet a socket újranyitására használhatsz.

Metódusok

active(is_active: bool | None = None) bool

A WiFi shield be- vagy kikapcsolása.

Argumentum nélkül visszaadja az aktuális állapotot – True, amíg a shield inicializált és a rádió fent van, egyébként False.

Az active(True) elvégzi a WINC1500 firmware-kézfogását SPI-n keresztül, és a rádiót a konfigurált mode üzemmódban hozza fel. Üres művelet, ha az interfész már aktív. A connect() automatikusan meghívja ezt, ha még nem hívták meg; bármely más metódushoz (scan(), rssi(), netinfo(), …) először az active(True) metódust kell meghívnod.

Az active(False) visszakapcsolja a rádiót (a WINC csak BSP módba esik vissza), és felszabadítja az SPI lábakat.

connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None

Társulás a ssid WiFi-hálózathoz a key jelszó, a security biztonsági mód (az OPEN, a WPA_PSK vagy a 802.1X konstans egyike) használatával a channel rádiócsatornán. A security és a channel csak kulcsszavas.

Csatlakozás után használd a socket modult a TCP/UDP portok megnyitásához.

Ez a metódus blokkol, amíg a társulás be nem fejeződik vagy meg nem hiúsul.

config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None

A connect() aliasa. A más network interfészeken config metódust hívó kóddal való kompatibilitás miatt biztosítjuk.

start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None

A connect() aliasa, amelyet az objektum mode=MODE_AP paraméterrel való létrehozása után használunk a hozzáférési pont konfigurálásához és elindításához. Az AP csak az OPEN vagy a WEP biztonsági módot támogatja; ha WEP-et használsz, a key kötelező.

disconnect() None

STA módban szétkapcsolódik a jelenleg társult hozzáférési ponttól. A shield aktív marad; hívd meg a connect() metódust az újratársuláshoz. Üres művelet, ha jelenleg nincs társulás.

isconnected() bool

STA módban True értéket ad vissza, amikor egy hozzáférési ponthoz társult és IPv4-címet kapott (DHCP-n vagy az ifconfig() metóduson keresztül). False értéket ad vissza, amíg még a hitelesítési / társulási / DHCP fázisban van.

connected_sta() List[str]

AP módban visszaad egy listát, amely a jelenleg csatlakozott kliens IP-címét tartalmazza (vagy egy üres listát, ha nincs csatlakozott kliens).

wait_for_sta(timeout: int | None) List[str]

AP módban blokkol, amíg egy kliens nem csatlakozik, majd visszaad egy listát, amely a kliens IP-címét tartalmazza. A timeout a maximális várakozás ezredmásodpercben; add át a None értéket a határozatlan ideig tartó várakozáshoz.

ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]

Az IPv4 interfészparaméterek lekérése vagy beállítása. A négyelemű rendezett n-es az (ip, subnet, gateway, dns) értékeket tartalmazza pontozott négyesként.

Argumentum nélkül hívva: visszaadja az aktuális konfigurációt.

Négyelemű rendezett n-essel hívva: statikus IP-konfigurációt állít be a DHCP-vel megszerzett helyett.

Példa – statikus IP rögzítése csatlakozás előtt:

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)

Megjegyzés

A WINC nem valósítja meg a modern AbstractNIC.ipconfig() API-t; itt az ifconfig() metódust használd.

netinfo() Tuple[int, int, str, str, str]

Visszaad egy ötelemű rendezett n-est, amely az aktuális társulást írja le:

  • [0] RSSI egészként (dBm).

  • [1] Biztonsági mód – a biztonsági konstansok egyike.

  • [2] SSID karakterlánc.

  • [3] BSSID egy "XX:XX:XX:XX:XX:XX" MAC-karakterláncként.

  • [4] IPv4-cím pontozott négyesként.

scan() List[Tuple[str, str, int, int, int, int]]

Közeli hozzáférési pontok keresése. Hatelemű rendezett n-esek listáját adja vissza:

  • [0] SSID karakterlánc.

  • [1] BSSID egy "XX:XX:XX:XX:XX:XX" MAC-karakterláncként.

  • [2] Csatornaszám.

  • [3] RSSI dBm-ben.

  • [4] Biztonsági mód – a biztonsági konstansok egyike.

  • [5] Fenntartva (mindig 1).

Meghívható anélkül, hogy előtte egy hálózathoz társulnánk.

rssi() int

Visszaadja a jelenleg társult hozzáférési pont RSSI-jét dBm-ben. Nagyjából: a -30 kiváló, a -67 megfelelő a folyamatos átvitelhez, a -80 éppen elfogadható, a -90 és az alatti használhatatlan. Csak STA módban értelmes, amíg az isconnected() értéke True.

fw_version() Tuple[int, int, int, int, int, int, int]

Visszaad egy hételemű rendezett n-est, amely a WINC1500 firmware- és illesztőprogram-verzióit írja le:

  • [0] Firmware főverzió.

  • [1] Firmware alverzió.

  • [2] Firmware javítás.

  • [3] Illesztőprogram főverzió.

  • [4] Illesztőprogram alverzió.

  • [5] Illesztőprogram javítás.

  • [6] Csip hardveres revíziója.

fw_dump(path: str) None

Beolvassa a WINC1500 belső flash memóriáját, és a kapott firmware-képet a path elérési úton lévő fájlba írja az OpenMV fájlrendszerén. Ezzel készíthetsz biztonsági mentést a jelenleg telepített képről az fw_update() hívása előtt.

Megköveteli, hogy a modul mode=MODE_FIRMWARE paraméterrel legyen létrehozva.

fw_update(path: str) None

Törli a WINC1500 belső flash memóriáját, és a path elérési úton lévő bináris képpel programozza fel. A képnek meg kell felelnie az OpenMV firmware által elvárt elrendezésnek (általában az Atmel / Microchip biztosítja a WINC SDK-val).

A hívás több másodpercig blokkol, amíg a flash memóriát programozza és ellenőrzi. A hívás visszatérése után indítsd újra az OpenMV Cam tápellátását, hogy a WINC1500 az új képről induljon.

Megköveteli, hogy a modul mode=MODE_FIRMWARE paraméterrel legyen létrehozva.

Konstansok

OPEN: int

Biztonsági érték titkosítatlan hálózathoz. Add át a connect() / start_ap() security argumentumának.

WPA_PSK: int

Biztonsági érték WPA/WPA2 előre megosztott kulccsal. A connect() alapértelmezése.

Megjegyzés

Létezik egy WPA/WPA2 Enterprise (802.1X) biztonsági érték is. A firmware 802_1X néven teszi elérhetővé, ami nem érvényes Python azonosító – a getattr(network.WINC, "802_1X") hívással férhetsz hozzá.

MODE_STA: int

Állomás mód – csatlakozás egy hozzáférési ponthoz kliensként. Az alapértelmezett konstruktormód.

MODE_AP: int

Hozzáférési pont mód – a WINC az AP-vé válik, amelyhez a kliensek társulnak.

MODE_P2P: int

WiFi-Direct (peer-to-peer) mód.

MODE_BSP: int

Csak a WINC board-support package inicializálása – a rádió nem kerül felhozásra. A firmware-frissítési folyamat használja.

MODE_FIRMWARE: int

Firmware-frissítési mód. Az fw_dump() és az fw_update() metódusokhoz szükséges.