class WINC – pilote du shield WiFi¶
La classe WINC pilote le module WiFi 802.11 b/g/n Atmel WINC1500 du shield WiFi OpenMV. Disponible sur les OpenMV Cam M4, M7, H7, H7 Plus et Pure Thermal (les cartes STM32 pour lesquelles le shield WiFi a été conçu). Pour les cartes dotées d’un WiFi intégré (OpenMV Cam N6, OpenMV Cam RT1062, Arduino Giga), utilisez plutôt WLAN.
Exemple – se connecter à un point d’accès et afficher l’adresse
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())
Exemple – ouvrir un point d’accès ouvert et attendre un client
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))
Constructeurs¶
- class network.WINC(mode: int = WINC.MODE_STA) None¶
Crée un objet pilote
WINCet active le shield WiFi.modesélectionne le mode de fonctionnement dans lequel le module démarre :WINC.MODE_STA– station / client. Connectez-vous à un point d’accès avecconnect(). C’est la valeur par défaut.WINC.MODE_AP– point d’accès. Configurez l’AP avecstart_ap(), puis acceptez les connexions des clients.WINC.MODE_P2P– WiFi Direct.WINC.MODE_BSP– active uniquement le BSP (pas de radio).WINC.MODE_FIRMWARE– mode de mise à jour du micrologiciel ; requis parfw_dump()etfw_update().
Note
En mode AP, le WINC1500 présente des limitations matérielles :
Un seul client peut se connecter à la fois.
Seules les sécurités
OPENou WEP sont prises en charge.Un bug du micrologiciel du module WiFi fait que tous les sockets liés cessent de fonctionner lorsque le client se déconnecte. Définissez un délai d’expiration sur le socket serveur afin qu’il lève une exception que vous pouvez utiliser pour le rouvrir.
Méthodes¶
- active(is_active: bool | None = None) bool¶
Active ou désactive le shield WiFi.
Sans argument, renvoie l’état actuel –
Truelorsque le shield est initialisé et la radio active,Falsesinon.active(True)effectue la poignée de main du micrologiciel WINC1500 via SPI et active la radio dans lemodeconfiguré. C’est une opération sans effet si l’interface est déjà active.connect()l’appelle automatiquement si cela n’a pas encore été fait ; pour toute autre méthode (scan(),rssi(),netinfo(), …), vous devez d’abord appeleractive(True).active(False)éteint à nouveau la radio (le WINC repasse en mode BSP uniquement) et libère les broches SPI.
- connect(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Associe au réseau WiFi
ssiden utilisant le mot de passekey, le mode de sécuritésecurity(l’une des valeursOPEN,WPA_PSKou la constante 802.1X) sur le canal radiochannel.securityetchannelsont passés uniquement par mot-clé.Après la connexion, utilisez le module
socketpour ouvrir des ports TCP/UDP.Cette méthode bloque jusqu’à ce que l’association aboutisse ou échoue.
- config(ssid: str, key: str | None = None, *, security: int = WINC.WPA_PSK, channel: int = 1) None¶
Alias de
connect(). Fourni pour assurer la compatibilité avec le code qui appelleconfigsur d’autres interfacesnetwork.
- start_ap(ssid: str, key: str | None = None, *, security: int = WINC.OPEN, channel: int = 1) None¶
Alias de
connect()utilisé après avoir construit l’objet avecmode=MODE_APpour configurer et démarrer le point d’accès. L’AP ne prend en charge que les sécuritésOPENou WEP ; si WEP est utilisé,keyest requis.
- disconnect() None¶
En mode STA, se dissocie du point d’accès actuellement associé. Le shield reste actif ; appelez
connect()pour vous réassocier. Sans effet lorsqu’aucune association n’est en cours.
- isconnected() bool¶
En mode STA, renvoie
Truelorsqu’on est associé à un point d’accès et qu’une adresse IPv4 a été obtenue (via DHCP ouifconfig()). RenvoieFalsetant que l’on est encore dans la phase d’authentification / d’association / de DHCP.
- connected_sta() List[str]¶
En mode AP, renvoie une liste contenant l’adresse IP du client actuellement connecté (ou une liste vide si aucun client n’est connecté).
- wait_for_sta(timeout: int | None) List[str]¶
En mode AP, bloque jusqu’à ce qu’un client se connecte et renvoie une liste contenant l’adresse IP du client.
timeoutest l’attente maximale en millisecondes ; passezNonepour attendre indéfiniment.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str]¶
Lit ou définit les paramètres IPv4 de l’interface. Le 4-tuple contient
(ip, subnet, gateway, dns)sous forme de chaînes en notation décimale pointée.Appelée sans argument : renvoie la configuration actuelle.
Appelée avec un 4-tuple : définit une configuration IP statique à la place de celle obtenue par DHCP.
Exemple – fixer une IP statique avant de se connecter
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)
Note
WINCn’implémente pas l’API moderneAbstractNIC.ipconfig(); utilisezifconfig()ici.
- netinfo() Tuple[int, int, str, str, str]¶
Renvoie un 5-tuple décrivant l’association actuelle :
[0]RSSI sous forme d’entier (dBm).[1]Mode de sécurité – l’une des constantes de sécurité.[2]Chaîne SSID.[3]BSSID sous forme de chaîne MAC"XX:XX:XX:XX:XX:XX".[4]Adresse IPv4 sous forme de chaîne en notation décimale pointée.
- scan() List[Tuple[str, str, int, int, int, int]]¶
Recherche les points d’accès à proximité. Renvoie une liste de 6-tuples :
[0]Chaîne SSID.[1]BSSID sous forme de chaîne MAC"XX:XX:XX:XX:XX:XX".[2]Numéro de canal.[3]RSSI en dBm.[4]Mode de sécurité – l’une des constantes de sécurité.[5]Réservé (toujours1).
Peut être appelée sans s’être d’abord associé à un réseau.
- rssi() int¶
Renvoie le RSSI en dBm du point d’accès actuellement associé. En gros :
-30est excellent,-67est correct pour le streaming,-80est marginal,-90et en dessous est inutilisable. N’a de sens qu’en mode STA tant queisconnected()vautTrue.
- fw_version() Tuple[int, int, int, int, int, int, int]¶
Renvoie un 7-tuple décrivant les versions du micrologiciel et du pilote du WINC1500 :
[0]Version majeure du micrologiciel.[1]Version mineure du micrologiciel.[2]Correctif du micrologiciel.[3]Version majeure du pilote.[4]Version mineure du pilote.[5]Correctif du pilote.[6]Révision matérielle de la puce.
- fw_dump(path: str) None¶
Lit la mémoire flash interne du WINC1500 et écrit l’image de micrologiciel résultante dans le fichier situé à
pathsur le système de fichiers de l’OpenMV. Utilisez ceci pour sauvegarder l’image actuellement installée avant d’appelerfw_update().Nécessite que le module ait été construit avec
mode=MODE_FIRMWARE.
- fw_update(path: str) None¶
Efface la mémoire flash interne du WINC1500 et la programme avec l’image binaire située à
path. L’image doit correspondre à l’agencement attendu par le micrologiciel OpenMV (généralement fournie par Atmel / Microchip avec le WINC SDK).L’appel bloque pendant plusieurs secondes le temps que la mémoire flash soit programmée et vérifiée. Effectuez un cycle d’alimentation de l’OpenMV Cam après le retour de l’appel afin que le WINC1500 démarre à partir de la nouvelle image.
Nécessite que le module ait été construit avec
mode=MODE_FIRMWARE.
Constantes¶
- OPEN: int¶
Valeur de sécurité pour un réseau non chiffré. À passer à l’argument
securitydeconnect()/start_ap().
- WPA_PSK: int¶
Valeur de sécurité pour WPA/WPA2 avec une clé pré-partagée. La valeur par défaut pour
connect().
Note
Il existe également une valeur de sécurité WPA/WPA2 Enterprise (802.1X). Le micrologiciel l’expose sous le nom
802_1X, qui n’est pas un identifiant Python valide – accédez-y viagetattr(network.WINC, "802_1X").- MODE_STA: int¶
Mode station – se connecter à un point d’accès en tant que client. Le mode par défaut du constructeur.
- MODE_BSP: int¶
Initialise uniquement le package de support de carte (BSP) du WINC – la radio n’est pas activée. Utilisé par le processus de mise à jour du micrologiciel.
- MODE_FIRMWARE: int¶
Mode de mise à jour du micrologiciel. Requis par
fw_dump()etfw_update().