class WINC – upravljački program za WiFi shield

Klasa WINC upravlja Atmel WINC1500 802.11 b/g/n WiFi modulom na OpenMV WiFi Shieldu. Dostupno na OpenMV Cam M4, M7, H7, H7 Plus i Pure Thermal (STM32 ploče za koje je WiFi shield dizajniran). Za ploče s ugrađenim WiFi-jem (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga) umjesto toga koristite WLAN.

Primjer – spajanje na pristupnu točku i ispis adrese:

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

Primjer – podizanje otvorene pristupne točke i čekanje klijenta:

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

Konstruktori

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

Stvara objekt upravljačkog programa WINC i podiže WiFi shield.

mode odabire način rada u kojem se modul pokreće:

Napomena

U AP načinu WINC1500 ima hardverska ograničenja:

  • Istovremeno se može spojiti samo jedan klijent.

  • Podržana je samo OPEN ili WEP sigurnost.

  • Greška u ugrađenom programu WiFi modula uzrokuje da svi vezani utičnici prestanu raditi kada se klijent odspoji. Postavite istek vremena na poslužiteljski utičnik kako bi izazvao iznimku koju možete iskoristiti za njegovo ponovno otvaranje.

Metode

active(is_active: bool | None = None) bool

Aktivira ili deaktivira WiFi shield.

Bez argumenta vraća trenutno stanje – True dok je shield inicijaliziran i radio podignut, inače False.

active(True) izvodi rukovanje ugrađenim programom WINC1500 preko SPI-ja i podiže radio u konfiguriranom načinu mode. Nema učinka ako je sučelje već aktivno. connect() ovo automatski poziva ako još nije pozvano; za bilo koju drugu metodu (scan(), rssi(), netinfo(), …) prvo morate pozvati active(True).

active(False) ponovno gasi radio (WINC se vraća na način rada samo s BSP-om) i oslobađa SPI pinove.

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

Pridružuje se WiFi mreži ssid koristeći lozinku key, sigurnosni način security (jedan od OPEN, WPA_PSK ili 802.1X konstanta) na radio kanalu channel. security i channel smiju se zadati samo kao ključne riječi.

Nakon spajanja koristite modul socket za otvaranje TCP/UDP portova.

Ova metoda blokira dok se pridruživanje ne dovrši ili ne uspije.

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

Alias za connect(). Pružen radi kompatibilnosti s kodom koji poziva config na drugim network sučeljima.

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

Alias za connect() koji se koristi nakon konstruiranja objekta s mode=MODE_AP za konfiguriranje i pokretanje pristupne točke. AP podržava samo OPEN ili WEP sigurnost; ako se koristi WEP, key je obavezan.

disconnect() None

U STA načinu, raspridružuje se s trenutno pridruženom pristupnom točkom. Shield ostaje aktivan; pozovite connect() za ponovno pridruživanje. Nema učinka kada nije trenutno pridružen.

isconnected() bool

U STA načinu vraća True kada je pridružen pristupnoj točki i kada je dobivena IPv4 adresa (putem DHCP-a ili ifconfig()). Vraća False dok je još u fazi autentikacije / pridruživanja / DHCP-a.

connected_sta() List[str]

U AP načinu vraća popis koji sadrži IP adresu trenutno spojenog klijenta (ili prazan popis ako klijent nije spojen).

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

U AP načinu blokira dok se klijent ne spoji i vraća popis koji sadrži IP adresu klijenta. timeout je maksimalno čekanje u milisekundama; proslijedite None za neograničeno čekanje.

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

Dohvaća ili postavlja parametre IPv4 sučelja. 4-torka sadrži (ip, subnet, gateway, dns) kao nizove četiriju brojeva odvojenih točkama.

Pozvana bez argumenta: vraća trenutnu konfiguraciju.

Pozvana s 4-torkom: postavlja statičku IP konfiguraciju umjesto one dobivene DHCP-om.

Primjer – pričvršćivanje statičke IP adrese prije spajanja:

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)

Napomena

WINC ne implementira moderni AbstractNIC.ipconfig() API; ovdje koristite ifconfig().

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

Vraća 5-torku koja opisuje trenutno pridruživanje:

  • [0] RSSI kao cijeli broj (dBm).

  • [1] Sigurnosni način – jedna od sigurnosnih konstanti.

  • [2] SSID niz.

  • [3] BSSID kao MAC niz "XX:XX:XX:XX:XX:XX".

  • [4] IPv4 adresa kao niz četiriju brojeva odvojenih točkama.

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

Skenira obližnje pristupne točke. Vraća popis 6-torki:

  • [0] SSID niz.

  • [1] BSSID kao MAC niz "XX:XX:XX:XX:XX:XX".

  • [2] Broj kanala.

  • [3] RSSI u dBm.

  • [4] Sigurnosni način – jedna od sigurnosnih konstanti.

  • [5] Rezervirano (uvijek 1).

Može se pozvati bez prethodnog pridruživanja mreži.

rssi() int

Vraća RSSI u dBm trenutno pridružene pristupne točke. Otprilike: -30 je izvrsno, -67 je u redu za strujanje, -80 je granično, -90 i niže je neupotrebljivo. Smisleno samo u STA načinu dok je isconnected() True.

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

Vraća 7-torku koja opisuje verzije ugrađenog programa i upravljačkog programa WINC1500:

  • [0] Glavna verzija ugrađenog programa.

  • [1] Sporedna verzija ugrađenog programa.

  • [2] Zakrpa ugrađenog programa.

  • [3] Glavna verzija upravljačkog programa.

  • [4] Sporedna verzija upravljačkog programa.

  • [5] Zakrpa upravljačkog programa.

  • [6] Hardverska revizija čipa.

fw_dump(path: str) None

Čita internu flash memoriju WINC1500-a i zapisuje dobivenu sliku ugrađenog programa u datoteku na path na datotečnom sustavu OpenMV-a. Koristite ovo za sigurnosnu kopiju trenutno instalirane slike prije pozivanja fw_update().

Zahtijeva da je modul konstruiran s mode=MODE_FIRMWARE.

fw_update(path: str) None

Briše internu flash memoriju WINC1500-a i programira je binarnom slikom na path. Slika mora odgovarati rasporedu koji očekuje OpenMV ugrađeni program (obično isporučenom od strane Atmela / Microchipa s WINC SDK-om).

Poziv blokira nekoliko sekundi dok se flash memorija programira i provjerava. Ponovno uključite napajanje OpenMV Cama nakon povratka poziva kako bi WINC1500 krenuo iz nove slike.

Zahtijeva da je modul konstruiran s mode=MODE_FIRMWARE.

Konstante

OPEN: int

Sigurnosna vrijednost za nešifriranu mrežu. Proslijedite u argument security metoda connect() / start_ap().

WPA_PSK: int

Sigurnosna vrijednost za WPA/WPA2 s unaprijed dijeljenim ključem. Zadano za connect().

Napomena

Postoji i sigurnosna vrijednost WPA/WPA2 Enterprise (802.1X). Ugrađeni program je izlaže pod nazivom 802_1X, koji nije valjan Python identifikator – pristupite joj putem getattr(network.WINC, "802_1X").

MODE_STA: int

Način rada stanice – spajanje na pristupnu točku kao klijent. Zadani način konstruktora.

MODE_AP: int

Način rada pristupne točke – WINC postaje AP s kojim se klijenti pridružuju.

MODE_P2P: int

WiFi-Direct (peer-to-peer) način rada.

MODE_BSP: int

Inicijalizira samo WINC paket podrške za ploču (BSP) – radio se ne podiže. Koristi se u procesu ažuriranja ugrađenog programa.

MODE_FIRMWARE: int

Način za ažuriranje ugrađenog programa. Potreban metodama fw_dump() i fw_update().