classe WLAN – contrôle des interfaces WiFi intégrées¶
La classe WLAN pilote les radios WiFi embarquées des OpenMV Cam modernes. La même classe encapsule deux pilotes sous-jacents différents selon le MCU WiFi de la carte :
CYW43 (module WiFi Infineon CYW43xxx Murata). Utilisé par l’OpenMV Cam N6, l’OpenMV Cam RT1062, l’Arduino Portenta H7, l’Arduino Nicla Vision et l’Arduino Giga R1 WiFi.
NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Utilisé par l’Arduino Nano RP2040 Connect.
Les deux pilotes exposent les mêmes noms de méthodes mais diffèrent par quelques arguments et par l’ensemble des clés config() acceptées. Les différences sont signalées ci-dessous.
Les caméras OpenMV équipées d’un ancien shield WiFi WINC1500 (M4 / M7 / H7 / H7 Plus / Pure Thermal) utilisent WINC à la place.
Exemple d’utilisation
import network
# Enable the station interface and connect to a WiFi AP.
nic = network.WLAN(network.WLAN.IF_STA)
nic.active(True)
nic.connect("your-ssid", "your-key")
while not nic.isconnected():
pass
print(nic.ipconfig("addr4"))
Constructeurs¶
- class network.WLAN(interface_id: int = WLAN.IF_STA) None¶
Crée un objet d’interface
WLAN.interface_idsélectionne l’interface sur laquelle opérer :WLAN.IF_STA– mode station / client. Se connecte à un point d’accès en amont avecconnect(). C’est la valeur par défaut.WLAN.IF_AP– mode point d’accès. Configurez le point d’accès avecconfig()et acceptez les connexions des clients.
La même radio physique sert les deux interfaces ; construire l’une n’empêche pas l’autre.
Méthodes¶
- active(is_active: bool | None = None) bool¶
Active ou désactive la radio WiFi.
Sans argument, renvoie l’état actuel –
Truelorsque la radio est active,Falsesinon.active(True)alimente le MCU WiFi, charge son micrologiciel (CYW43 récupère le blob de micrologiciel depuis la mémoire flash ; NINA valide la version du micrologiciel actuellement programmée) et active le netif lwIP de cette interface. Toutes les autres méthodes –connect(),scan(),ipconfig()et les autres – exigent que l’interface soit active.active(False)remet la radio hors tension. Sur l’interface STA, cela dissocie également du point d’accès actuel et libère le netif.
- connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None¶
Associe l’interface STA au point d’accès indiqué.
ssid– le SSID du réseau (chaîne ou octets).key– mot de passe / clé pré-partagée. PassezNonepour un réseau ouvert.security(mot-clé uniquement) – l’une des constantesSEC_*.-1(la valeur par défaut) effectue une sélection automatique :SEC_OPENlorsquekeyest vide,SEC_WPA_WPA2sinon.bssid(mot-clé uniquement, CYW43 uniquement) – restreint l’association au point d’accès ayant cette adresse MAC de 6 octets. Ignoré par le pilote NINA.channel(mot-clé uniquement) – canal radio préféré. Par défaut « laisser le pilote choisir ».
- disconnect() None¶
En mode STA, dissocie du point d’accès actuellement associé. L’interface reste active ; appelez à nouveau
connect()pour vous réassocier, ouactive()(False)pour mettre complètement la radio hors tension. Sans effet lorsqu’aucune association n’est en cours.
- isconnected() bool¶
En mode STA, renvoie
Truelorsqu’une association à un point d’accès est établie et qu’une adresse IPv4 a été obtenue par DHCP (ou attribuée de façon statique viaipconfig()). RenvoieFalsetant que la liaison est encore en phase d’authentification/d’association/de DHCP.En mode AP, renvoie
Truelorsqu’au moins une station a rejoint le réseau.
- scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]¶
Recherche les points d’accès à proximité et renvoie une liste de 6-uplets :
[0]SSID (octets ; vide pour les réseaux masqués).[1]BSSID (MAC de 6 octets,bytes). Convertissez avecbinascii.hexlify().[2]Numéro de canal.[3]RSSI en dBm.[4]Mode de sécurité (l’une des constantesSEC_*).[5]Réservé (toujours1).
Tous les arguments nommés sont réservés au CYW43 :
passive– siTrue, utilise un balayage passif au lieu du balayage actif par requête de sonde par défaut.ssid– restreint le balayage à un seul SSID.bssid– restreint le balayage à un seul BSSID.
Le balayage n’a de sens que sur une interface STA.
- status() int¶
- status(param: str) Any
Interroge l’état de la connexion.
Sans argument, renvoie l’état de la liaison sous forme d’un petit entier (codage spécifique au pilote – une valeur vraie signifie « associé »).
Avec un argument de type chaîne :
"rssi"– en mode STA, renvoie le RSSI actuel en dBm."stations"– en mode AP, renvoie une liste des stations connectées. CYW43 renvoie[(mac_bytes,), ...]; NINA renvoie[ip_string, ...].
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Lit ou définit les paramètres IPv4 de l’interface sous forme d’un 4-uplet de chaînes en notation décimale pointée
(ip, subnet, gateway, dns).Note
Préférez
ipconfig()pour le nouveau codenic.ipconfig(addr4="192.168.0.4/24", gw4="192.168.0.1") network.ipconfig(dns="8.8.8.8")
- ipconfig(param: str) Any¶
- ipconfig(**kwargs: Any) None
Lit ou définit les paramètres IPv4 / IPv6 de l’interface. Le pilote CYW43 délègue à l’implémentation lwIP standard et prend en charge l’ensemble complet des clés documentées dans
AbstractNIC.ipconfig(). Le pilote NINA implémente un sous-ensemble plus restreint par interface –dhcp4ethas_dhcp4(en lecture seule), ainsi queaddr4etgw4pour la lecture / l’écriture.
- config(param: str) Any¶
- config(**kwargs: Any) None
Lit ou définit les paramètres d’interface spécifiques au WiFi.
Avec un unique argument positionnel de type chaîne, renvoie la valeur de ce paramètre. Avec des arguments nommés, définit un ou plusieurs paramètres à la fois – les changements qui affectent un AP en cours d’exécution provoquent l’arrêt puis le redémarrage automatiques de l’AP.
Exemple
# Set up the access-point name and channel. ap.config(ssid="My AP", channel=11) # Query params one at a time. print(ap.config("ssid")) print(ap.config("mac"))
Pilote CYW43 – paramètres lisibles :
"antenna"– sélecteur d’antenne (entier)."channel"– canal actuel."ssid"/"essid"– le SSID actuel (chaîne)."security"– le mode d’authentification de l’AP (l’une des constantesSEC_*)."mac"– adresse MAC de l’interface (6bytes)."pm"– valeur de gestion de l’alimentation."txpower"– puissance d’émission en dBm."hostname"– nom d’hôte DHCP/mDNS. Obsolète ; utiliseznetwork.hostname()à la place.
Pilote CYW43 – paramètres modifiables :
antenna=<int>– sélecteur d’antenne.channel=<int>– canal de l’AP.ssid=<str>/essid=<str>– SSID de l’AP.key=<str>/password=<str>– clé pré-partagée de l’AP.security=<int>– mode d’authentification de l’AP (l’une des constantesSEC_*).pm=<int>– mode de gestion de l’alimentation (l’une des valeursPM_NONE,PM_PERFORMANCE,PM_POWERSAVE).monitor=<int>– active le mode moniteur / réception de tout le trafic multicast.txpower=<int>– puissance d’émission en dBm.trace=<int>– masque binaire de traçage interne du pilote.hostname=<str>– nom d’hôte DHCP/mDNS. Obsolète ; utiliseznetwork.hostname()à la place.
Pilote NINA – paramètres lisibles :
"ssid"– le SSID actuel (chaîne)."security"– le mode d’authentification de l’AP."mac"/"bssid"– adresse MAC de l’interface (6bytes)."fw_version"– un 3-uplet(major, minor, patch).
Pilote NINA – paramètres modifiables : l’appel est transmis à
connect()et accepte les mêmes arguments nommés (ssid,key,security,channel). Valide uniquement sur l’interface AP.
- deinit() None¶
Effectue un cycle d’alimentation du MCU WiFi et libère toutes les ressources détenues par le pilote (tampons de micrologiciel, netif lwIP, bus SPI/SDIO). Après cet appel, l’objet
WLANdoit être reconstruit avant utilisation. Utilisez ceci plutôt queactive()(False)lorsque vous avez besoin d’une réinitialisation complète (par exemple, avant de reprogrammer le micrologiciel de la radio ou pour récupérer d’un état de pilote bloqué). CYW43 uniquement.
- send_ethernet(buf: bytes) None¶
Injecte la trame Ethernet brute
bufdirectement dans le chemin d’émission du pilote, en contournant la pile IP. Destiné aux consommateurs purement de niveau L2 – pontage, protocoles EtherType personnalisés et similaires. La trame doit inclure les adresses MAC source/destination et l’EtherType (sans FCS – le matériel l’ajoute). CYW43 uniquement.
- ioctl(cmd: int, buf: bytearray) None¶
Émet une commande de contrôle spécifique au pilote.
cmdest le code ioctl numérique défini par le micrologiciel de la radio sous-jacente etbufest un tampon modifiable utilisé à la fois pour la charge utile de la commande et pour la réponse. L’ensemble des valeurscmdvalides est spécifique au pilote et non portable entre CYW43 et NINA. Utilisé principalement par les scripts de test bas niveau et le code de mise en service des puces.
Constantes¶
- IF_STA: int¶
Identifiant de l’interface station / client. À passer au constructeur pour sélectionner le mode STA.
- IF_AP: int¶
Identifiant de l’interface point d’accès. À passer au constructeur pour sélectionner le mode AP.
- SEC_WPA_WPA2: int¶
Valeur de sécurité pour WPA / WPA2 avec clé pré-partagée. Valeur par défaut lorsqu’une clé est fournie à
connect(). Disponible sur les deux pilotes.
- SEC_WEP: int¶
Valeur de sécurité pour WEP (Wired Equivalent Privacy). Fournie pour la compatibilité avec les anciens points d’accès – le WEP est cryptographiquement compromis et ne devrait pas être utilisé dans les nouveaux déploiements. NINA uniquement.
- OPEN: int¶
Alias de rétrocompatibilité pour
SEC_OPEN. Le nouveau code devrait utiliserSEC_OPEN. NINA uniquement.
- WEP: int¶
Alias de rétrocompatibilité pour
SEC_WEP. Le nouveau code devrait utiliserSEC_WEP. NINA uniquement.
- WPA_PSK: int¶
Alias de rétrocompatibilité pour
SEC_WPA_WPA2. Le nouveau code devrait utiliserSEC_WPA_WPA2. NINA uniquement.
- PM_NONE: int¶
À passer à
config(pm=...)pour désactiver la gestion de l’alimentation WiFi. CYW43 uniquement.