class WINC – WiFi-lisäkortin ajuri

WINC-luokka ohjaa Atmel WINC1500 802.11 b/g/n -WiFi-moduulia OpenMV WiFi -lisäkortilla. Saatavilla OpenMV Cam M4:llä, M7:llä, H7:llä, H7 Plus:lla ja Pure Thermalilla (STM32-kortit, joille WiFi-lisäkortti suunniteltiin). Korteilla, joissa on sisäänrakennettu WiFi (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga), käytä sen sijaan luokkaa WLAN.

Esimerkki – yhdistä tukiasemaan ja tulosta osoite:

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

Esimerkki – nosta avoin tukiasema ja odota asiakasta:

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

Konstruktorit

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

Luo WINC-ajuriolio ja nostaa WiFi-lisäkortin ylös.

mode valitsee toimintatilan, jossa moduuli käynnistyy:

Muista

AP-tilassa WINC1500:lla on laitteistorajoitteita:

  • Vain yksi asiakas voi yhdistää kerrallaan.

  • Vain OPEN- tai WEP-suojaus on tuettu.

  • WiFi-moduulin laiteohjelmiston vika aiheuttaa sen, että kaikki sidotut soketit lakkaavat toimimasta, kun asiakas katkaisee yhteyden. Aseta palvelinsoketille aikakatkaisu, jotta se nostaa poikkeuksen, jota voit käyttää sen avaamiseen uudelleen.

Metodit

active(is_active: bool | None = None) bool

Käynnistää tai sammuttaa WiFi-lisäkortin.

Ilman argumenttia palauttaa nykyisen tilan – True, kun lisäkortti on alustettu ja radio on ylhäällä, muuten False.

active(True) suorittaa WINC1500:n laiteohjelmiston kättelyn SPI:n yli ja nostaa radion ylös määritetyssä mode-tilassa. Se on tyhjätoiminto, jos rajapinta on jo aktiivinen. connect() kutsuu tätä automaattisesti, jos sitä ei ole vielä kutsuttu; minkä tahansa muun metodin (scan(), rssi(), netinfo(), …) osalta sinun on kutsuttava active(True) ensin.

active(False) sammuttaa radion takaisin (WINC putoaa pelkkään BSP-tilaan) ja vapauttaa SPI-nastat.

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

Liittyy WiFi-verkkoon ssid käyttäen salasanaa key, suojaustilaa security (yksi seuraavista: OPEN, WPA_PSK tai 802.1X-vakio) radiokanavalla channel. security ja channel annetaan vain avainsanoina.

Yhdistämisen jälkeen käytä socket-moduulia avataksesi TCP/UDP-portteja.

Tämä metodi estyy, kunnes liittyminen valmistuu tai epäonnistuu.

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

Aliasnimi metodille connect(). Tarjottu yhteensopivuuden vuoksi koodille, joka kutsuu config-metodia muilla network-rajapinnoilla.

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

Aliasnimi metodille connect(), jota käytetään olion luomisen jälkeen argumentilla mode=MODE_AP tukiaseman määrittämiseen ja käynnistämiseen. AP tukee vain OPEN- tai WEP-suojausta; jos käytetään WEP:tä, key vaaditaan.

disconnect() None

STA-tilassa irrottaa yhteyden tällä hetkellä liitettyyn tukiasemaan. Lisäkortti pysyy aktiivisena; kutsu connect() liittyäksesi uudelleen. Tyhjätoiminto, kun yhteyttä ei ole tällä hetkellä.

isconnected() bool

STA-tilassa palauttaa True, kun on liitytty tukiasemaan ja IPv4-osoite on saatu (DHCP:n tai ifconfig()-metodin kautta). Palauttaa False, kun ollaan vielä todentamis- / liittymis- / DHCP-vaiheessa.

connected_sta() List[str]

AP-tilassa palauttaa listan, joka sisältää tällä hetkellä yhdistetyn asiakkaan IP-osoitteen (tai tyhjän listan, jos asiakasta ei ole yhdistetty).

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

AP-tilassa estyy, kunnes asiakas yhdistää, ja palauttaa listan, joka sisältää asiakkaan IP-osoitteen. timeout on enimmäisodotusaika millisekunteina; anna None odottaaksesi loputtomiin.

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

Hakee tai asettaa IPv4-rajapinnan parametrit. 4-monikko sisältää (ip, subnet, gateway, dns) pisteneliömuotoisina merkkijonoina.

Kutsuttuna ilman argumenttia: palauttaa nykyisen kokoonpanon.

Kutsuttuna 4-monikolla: asettaa staattisen IP-kokoonpanon DHCP:llä hankitun tilalle.

Esimerkki – kiinnitä staattinen IP ennen yhdistämistä:

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)

Muista

WINC ei toteuta nykyaikaista AbstractNIC.ipconfig() -rajapintaa; käytä tässä ifconfig()-metodia.

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

Palauttaa 5-monikon, joka kuvaa nykyistä liittymää:

  • [0] RSSI kokonaislukuna (dBm).

  • [1] Suojaustila – yksi suojausvakioista.

  • [2] SSID-merkkijono.

  • [3] BSSID muodossa "XX:XX:XX:XX:XX:XX" MAC-merkkijonona.

  • [4] IPv4-osoite pisteneliömuotoisena merkkijonona.

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

Skannaa läheisiä tukiasemia. Palauttaa listan 6-monikoista:

  • [0] SSID-merkkijono.

  • [1] BSSID muodossa "XX:XX:XX:XX:XX:XX" MAC-merkkijonona.

  • [2] Kanavanumero.

  • [3] RSSI yksikössä dBm.

  • [4] Suojaustila – yksi suojausvakioista.

  • [5] Varattu (aina 1).

Voidaan kutsua ilman, että ensin liitytään verkkoon.

rssi() int

Palauttaa tällä hetkellä liitetyn tukiaseman RSSI:n yksikössä dBm. Karkeasti: -30 on erinomainen, -67 on OK suoratoistoon, -80 on rajatapaus, -90 ja sitä alempi on käyttökelvoton. Merkityksellinen vain STA-tilassa, kun isconnected() on True.

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

Palauttaa 7-monikon, joka kuvaa WINC1500:n laiteohjelmiston ja ajurin versiot:

  • [0] Laiteohjelmiston pääversio.

  • [1] Laiteohjelmiston aliversio.

  • [2] Laiteohjelmiston korjausversio.

  • [3] Ajurin pääversio.

  • [4] Ajurin aliversio.

  • [5] Ajurin korjausversio.

  • [6] Sirun laitteistoversio.

fw_dump(path: str) None

Lukee WINC1500:n sisäisen flash-muistin ja kirjoittaa tuloksena syntyvän laiteohjelmistovedoksen tiedostoon polussa path OpenMV:n tiedostojärjestelmässä. Käytä tätä varmuuskopioidaksesi tällä hetkellä asennetun vedoksen ennen metodin fw_update() kutsumista.

Vaatii, että moduuli on luotu argumentilla mode=MODE_FIRMWARE.

fw_update(path: str) None

Tyhjentää WINC1500:n sisäisen flash-muistin ja ohjelmoi siihen binäärivedoksen polussa path. Vedoksen on vastattava OpenMV-laiteohjelmiston odottamaa rakennetta (tyypillisesti Atmelin / Microchipin toimittama WINC SDK:n mukana).

Kutsu estyy useita sekunteja, kun flash-muistia ohjelmoidaan ja varmennetaan. Kytke OpenMV Cam:in virta uudelleen päälle kutsun palattua, jotta WINC1500 käynnistyy uudesta vedoksesta.

Vaatii, että moduuli on luotu argumentilla mode=MODE_FIRMWARE.

Vakiot

OPEN: int

Suojausarvo salaamattomalle verkolle. Anna metodin connect() / start_ap() security-argumentille.

WPA_PSK: int

Suojausarvo WPA/WPA2:lle esijaetulla avaimella. Oletus metodille connect().

Muista

Olemassa on myös WPA/WPA2 Enterprise (802.1X) -suojausarvo. Laiteohjelmisto tarjoaa sen nimellä 802_1X, joka ei ole kelvollinen Python-tunniste – käytä sitä funktiolla getattr(network.WINC, "802_1X").

MODE_STA: int

Asematila – yhdistä tukiasemaan asiakkaana. Konstruktorin oletustila.

MODE_AP: int

Tukiasematila – WINC:stä tulee AP, johon asiakkaat liittyvät.

MODE_P2P: int

WiFi-Direct (vertaisverkko) -tila.

MODE_BSP: int

Alustaa vain WINC-kortin tukipaketin (BSP) – radiota ei nosteta ylös. Käytetään laiteohjelmiston päivitysvuossa.

MODE_FIRMWARE: int

Laiteohjelmiston päivitystila. Vaaditaan metodeille fw_dump() ja fw_update().