clase WLAN – controla las interfaces WiFi integradas¶
La clase WLAN gobierna las radios WiFi integradas en las OpenMV Cam modernas. La misma clase envuelve dos controladores subyacentes diferentes según el MCU WiFi de la placa:
CYW43 (módulo WiFi Infineon CYW43xxx de Murata). Usado por la OpenMV Cam N6, la OpenMV Cam RT1062, la Arduino Portenta H7, la Arduino Nicla Vision y la Arduino Giga R1 WiFi.
NINA W10 (u-blox NINA-W10 / ESP32-WROOM). Usado por la Arduino Nano RP2040 Connect.
Ambos controladores exponen los mismos nombres de métodos pero difieren en algunos argumentos y en el conjunto de claves de config() aceptadas. Las diferencias se señalan a continuación.
Las cámaras OpenMV con un shield WiFi WINC1500 heredado (M4 / M7 / H7 / H7 Plus / Pure Thermal) usan WINC en su lugar.
Ejemplo de uso:
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"))
Constructores¶
- class network.WLAN(interface_id: int = WLAN.IF_STA) None¶
Crea un objeto de interfaz
WLAN.interface_idselecciona sobre qué interfaz operar:WLAN.IF_STA– modo estación / cliente. Conéctate a un punto de acceso superior conconnect(). Este es el valor predeterminado.WLAN.IF_AP– modo punto de acceso. Configura el AP conconfig()y acepta conexiones de clientes.
La misma radio física respalda ambas interfaces; construir una no impide la otra.
Métodos¶
- active(is_active: bool | None = None) bool¶
Activa o desactiva la radio WiFi.
Sin argumentos, devuelve el estado actual –
Truemientras la radio está activa,Falseen caso contrario.active(True)alimenta el MCU WiFi, carga su firmware (CYW43 obtiene el blob de firmware desde la memoria flash; NINA valida la versión de firmware actualmente grabada) y levanta la netif de lwIP para esta interfaz. Todos los demás métodos –connect(),scan(),ipconfig()y similares – requieren que la interfaz esté activa.active(False)vuelve a apagar la radio. En la interfaz STA esto también desasocia del AP actual y libera la netif.
- connect(ssid: str, key: str | None = None, *, security: int = -1, bssid: bytes | None = None, channel: int = -1) None¶
Asocia la interfaz STA con el punto de acceso indicado.
ssid– el SSID de la red (cadena o bytes).key– contraseña / clave precompartida. PasaNonepara una red abierta.security(solo por palabra clave) – una de las constantesSEC_*.-1(el valor predeterminado) selecciona automáticamente:SEC_OPENcuandokeyestá vacía,SEC_WPA_WPA2en caso contrario.bssid(solo por palabra clave, solo CYW43) – restringe la asociación al AP con esta dirección MAC de 6 bytes. El controlador NINA lo ignora.channel(solo por palabra clave) – canal de radio preferido. El valor predeterminado es «que el controlador elija».
- disconnect() None¶
En modo STA, desasocia del punto de acceso actualmente asociado. La interfaz permanece activa; llama a
connect()de nuevo para volver a asociar, o aactive()(False)para apagar la radio por completo. No hace nada cuando no hay una asociación actual.
- isconnected() bool¶
En modo STA devuelve
Truecuando está asociado a un punto de acceso y se ha obtenido una dirección IPv4 mediante DHCP (o asignada estáticamente a través deipconfig()). DevuelveFalsemientras el enlace está todavía en la fase de autenticación/asociación/DHCP.En modo AP devuelve
Truecuando al menos una estación se ha unido.
- scan(*, passive: bool = False, ssid: bytes | None = None, bssid: bytes | None = None) List[Tuple[bytes, bytes, int, int, int, int]]¶
Busca puntos de acceso cercanos y devuelve una lista de tuplas de 6 elementos:
[0]SSID (bytes; vacío para redes ocultas).[1]BSSID (MAC de 6 bytes,bytes). Conviértelo conbinascii.hexlify().[2]Número de canal.[3]RSSI en dBm.[4]Modo de seguridad (una de las constantesSEC_*).[5]Reservado (siempre1).
Todos los argumentos de palabra clave son solo para CYW43:
passive– si esTrue, usa un escaneo pasivo en lugar del escaneo activo predeterminado por solicitud de sondeo.ssid– restringe el escaneo a un único SSID.bssid– restringe el escaneo a un único BSSID.
El escaneo solo tiene sentido en una interfaz STA.
- status() int¶
- status(param: str) Any
Consulta el estado de la conexión.
Sin argumentos, devuelve el estado del enlace como un entero pequeño (codificación específica del controlador – un valor verdadero significa «asociado»).
Con un argumento de cadena:
"rssi"– en modo STA, devuelve el RSSI actual en dBm."stations"– en modo AP, devuelve una lista de estaciones conectadas. CYW43 devuelve[(mac_bytes,), ...]; NINA devuelve[ip_string, ...].
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
Obtiene o establece los parámetros IPv4 de la interfaz como una tupla de 4 elementos de cadenas en notación de cuádruple punto
(ip, subnet, gateway, dns).Nota
Prefiere
ipconfig()para código nuevo:nic.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
Obtiene o establece los parámetros IPv4 / IPv6 de la interfaz. El controlador CYW43 delega en la implementación estándar de lwIP y admite el conjunto completo de claves documentado en
AbstractNIC.ipconfig(). El controlador NINA implementa un subconjunto más pequeño por interfaz –dhcp4yhas_dhcp4(solo lectura), además deaddr4ygw4para obtener / establecer.
- config(param: str) Any¶
- config(**kwargs: Any) None
Obtiene o establece los parámetros de la interfaz específicos de WiFi.
Con un único argumento posicional de cadena, devuelve el valor de ese parámetro. Con argumentos de palabra clave, establece uno o más parámetros a la vez – los cambios que afectan a un AP en ejecución hacen que el AP se apague y se vuelva a levantar automáticamente.
Ejemplo:
# 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"))
Controlador CYW43 – parámetros obtenibles:
"antenna"– selector de antena (entero)."channel"– canal actual."ssid"/"essid"– el SSID actual (cadena)."security"– el modo de autenticación del AP (uno deSEC_*)."mac"– dirección MAC de la interfaz (6bytes)."pm"– valor de gestión de energía."txpower"– potencia de transmisión en dBm."hostname"– nombre de host DHCP/mDNS. Obsoleto; usanetwork.hostname()en su lugar.
Controlador CYW43 – parámetros configurables:
antenna=<int>– selector de antena.channel=<int>– canal del AP.ssid=<str>/essid=<str>– SSID del AP.key=<str>/password=<str>– clave precompartida del AP.security=<int>– modo de autenticación del AP (uno deSEC_*).pm=<int>– modo de gestión de energía (uno dePM_NONE,PM_PERFORMANCE,PM_POWERSAVE).monitor=<int>– habilita el modo monitor / multidifusión total.txpower=<int>– potencia de transmisión en dBm.trace=<int>– máscara de bits de trazado interno del controlador.hostname=<str>– nombre de host DHCP/mDNS. Obsoleto; usanetwork.hostname()en su lugar.
Controlador NINA – parámetros obtenibles:
"ssid"– el SSID actual (cadena)."security"– el modo de autenticación del AP."mac"/"bssid"– dirección MAC de la interfaz (6bytes)."fw_version"– una tupla de 3 elementos(major, minor, patch).
Controlador NINA – parámetros configurables: la llamada se reenvía a
connect()y acepta los mismos argumentos de palabra clave (ssid,key,security,channel). Solo válido en la interfaz AP.
- deinit() None¶
Reinicia la alimentación del MCU WiFi y libera todos los recursos que mantiene el controlador (búferes de firmware, netif de lwIP, bus SPI/SDIO). Después de llamar a esto, el objeto
WLANdebe reconstruirse antes de usarse. Usa esto en lugar deactive()(False)cuando necesites un reinicio completo (por ejemplo, antes de regrabar el firmware de la radio o para recuperarte de un estado bloqueado del controlador). Solo CYW43.
- send_ethernet(buf: bytes) None¶
Inyecta el fotograma Ethernet sin procesar
bufdirectamente en la ruta de transmisión del controlador, evitando la pila IP. Pensado para consumidores de solo L2 – puentes, protocolos EtherType personalizados y similares. El fotograma debe incluir las MAC de destino/origen y el EtherType (sin FCS – el hardware lo añade). Solo CYW43.
- ioctl(cmd: int, buf: bytearray) None¶
Emite un comando de control específico del controlador.
cmdes el código ioctl numérico definido por el firmware de la radio subyacente ybufes un búfer mutable usado tanto para la carga útil del comando como para la respuesta. El conjunto de valorescmdválidos es específico del controlador y no es portable entre CYW43 y NINA. Lo usan principalmente los scripts de prueba de bajo nivel y el código de puesta en marcha del chip.
Constantes¶
- IF_STA: int¶
Identificador de la interfaz de estación / cliente. Pásalo al constructor para seleccionar el modo STA.
- IF_AP: int¶
Identificador de la interfaz de punto de acceso. Pásalo al constructor para seleccionar el modo AP.
- SEC_WPA_WPA2: int¶
Valor de seguridad para WPA / WPA2 con una clave precompartida. El valor predeterminado cuando se proporciona una clave a
connect(). Disponible en ambos controladores.
- SEC_WEP: int¶
Valor de seguridad para WEP (Wired Equivalent Privacy). Se proporciona por compatibilidad con puntos de acceso heredados – WEP está roto criptográficamente y no debe usarse en implementaciones nuevas. Solo NINA.
- OPEN: int¶
Alias de retrocompatibilidad para
SEC_OPEN. El código nuevo debe usarSEC_OPEN. Solo NINA.
- WPA_PSK: int¶
Alias de retrocompatibilidad para
SEC_WPA_WPA2. El código nuevo debe usarSEC_WPA_WPA2. Solo NINA.