MICROPYTHON ESP32 –
Conexión WiFi – STATION
(Conexión con una red WiFi)
https://www.esploradores.com/micropython_conexwifi_station/
ACCESS POINT & STATION
enominamos a efectos de redes informáticas:
•ACCESS POINT (AP) o –Punto de Acceso– al un dispositivo de hardware que permite crear
una Red de Área Local (Local Area Network – LAN), ya sea cableada (p.e. Ethernet) o inalámbrica -
Wireless Local Area Network · WLAN- (p.e. WiFi). Existen otros dispositivos que no son
exclusivamente Access Points, pero tienen incorporadas sus funciones:
• SOFT ACCESS POINT(SoftAP) –Punto de Acceso habilitado por Software– Es un dispositivo
de hardware no creado específicamente para ser un AP, pero que se habilita como tal por
software. Permite crear una WLAN a la que se pueden conectar los dispositivos con capacidad
inalámbrica.
• ROUTER –Enrutador-. Es un dispositivo se hardware que permite la de ínter-conexión en
redes informáticas (cableadas y/o inalámbricas) -normalmente Internet y una red LAN-,
determinando la ruta que deben tomar los paquete de datos. También incluye las funciones de
AP.
•Station (STA) o estación a cada dispositivo que se conecta con la red, por ejemplo un ordenador,
Un microcontrolador ESP32 puede funcionar como Station, como Soft Access Point o incluso
un teléfono móvil o una tablet.
simultáneamente como Station y Soft Access Point.
A continuación se va a desarrollar su funcionamiento
como Station.
CONEXIÓN CON UNA RED WiFi - STATION
Conectar un ESP32 a una red WiFi en modo STATION es muy sencillo gracias al módulo network de
la librería estándar.
a conexión se puede realizar con el siguiente script:
import network # importa el módulo network
sta_if = network.WLAN(network.STA_IF); # instancia el objeto -sta_if- para controlar la interfaz STA
sta_if.active(True) # activa la interfaz STA del ESP32
sta_if.connect("<SSID>", "<PASSWORD>") # inicia la conexión con el AP
Siendo:
•SSID, nombre de la red WiFi con la que se quiere establecer la conexión.
•PASSWORD, contraseña de la red WiFi -mínimo 9 caracteres, máximo 64- (opcional).
No se necesitaría nada más, pero conviene hacer dos mejoras importantes en el script:
•La primera es utilizar un bucle que detenga la ejecución del script desde que se inicia la conexión WiFi
hasta que se establece (ya que tarda unos segundos), así se evitan problemas en la ejecución. Para
construir el bucle se utiliza el método isconnected() del módulo network, que devuelve el estado de
la conexión como un booleano.
•La segunda es imprimir la configuración de red: IP (dirección IP), netmask (Netmask – Máscara de
Red), gw (Gateway – Pasarela o Puerta de Enlace) y DNS (Domain Name Server – Sistema de Nombres
de Dominio). Para ello se utilizará el método ifconfig() del módulo network, que devuelve
una tupla con los cuatro argumentos señalados.
Este es el script mejorado, desarrollado como una
función:
# FUNCIÓN PARA ESTABLECER LA CONEXIÓN WIFI (STATION)
def do_connect(SSID, PASSWORD):
import network # importa el módulo network
global sta_if
sta_if = network.WLAN(network.STA_IF) # instancia el objeto -sta_if- para controlar la interfaz STA
if not sta_if.isconnected(): # si no existe conexión...
sta_if.active(True) # activa el interfaz STA del ESP32
sta_if.connect(SSID, PASSWORD) # inicia la conexión con el AP
print('Conectando a la red', SSID +"...")
while not sta_if.isconnected(): # ...si no se ha establecido la conexión...
pass # ...repite el bucle...
print('Configuración de red (IP/netmask/gw/DNS):', sta_if.ifconfig())
# do_connect("<nombre_de_red>","<clave_de_red>") # DESCOMENTAR Y PONER nombre/clave_de_red
RED PARA EJECUTAR
Así se verá su ejecución con Thonny:
Constructors
assnetwork.WLAN(interface_id)
Cree un objeto de interfaz de red WLAN. Las interfaces admitidas son network.STA_IF (estación, también conocida como cliente,
se conecta a puntos de acceso WiFi ascendentes) y network.AP_IF (punto de acceso, permite que otros clientes WiFi se
conecten). La disponibilidad de los métodos siguientes depende del tipo de interfaz. Por ejemplo, solo la interfaz STA puede
WLAN.connect() a un punto de acceso.
Methods
WLAN.active([is_active])
Activa ("arriba") o desactiva ("abajo") la interfaz de red, si se pasa un argumento booleano. De lo contrario, consulta el estado
actual si no se proporciona ningún argumento. La mayoría de los otros métodos requieren una interfaz activa.
N.connect(ssid=None, key=None, *, bssid=None)
Conéctese a la red inalámbrica especificada, usando la clave especificada. Si se proporciona bssid, la conexión se restringirá al
punto de acceso con esa dirección MAC (también se debe especificar el ssid en este caso).
WLAN.disconnect()
Desconéctese de la red inalámbrica actualmente conectada.
WLAN.scan()
Busque las redes inalámbricas disponibles. Las redes ocultas, donde no se transmite el SSID, también se escanearán si la interfaz
WLAN lo permite.
El escaneo solo es posible en la interfaz STA. Devuelve una lista de tuplas con la información sobre los puntos de acceso WiFi:
(ssid, bssid, canal, RSSI, seguridad, oculto)
bssid es la dirección de hardware de un punto de acceso, en forma binaria, devuelta como objeto de bytes. Puede usar
binascii.hexlify() para convertirlo a formato ASCII.
Hay cinco valores para la seguridad:
•0 – open
•1 – WEP
•2 – WPA-PSK
•3 – WPA2-PSK
•4 – WPA/WPA2-PSK
y dos para oculto:
•0 – visible
•1 – hidden
WLAN.status([param])
Devuelve el estado actual de la conexión inalámbrica.
Cuando se llama sin argumento, el valor devuelto describe el estado del enlace de red. Los estados posibles se definen como
constantes:
•STAT_IDLE – no connection and no activity,
•STAT_CONNECTING – connecting in progress,
•STAT_WRONG_PASSWORD – failed due to incorrect password,
•STAT_NO_AP_FOUND – failed because no access point replied,
•STAT_CONNECT_FAIL – failed due to other problems,
•STAT_GOT_IP – connection successful.
Cuando se llama con un argumento, el parámetro debe ser una cadena que nombra el parámetro de estado que se va a
recuperar. Los parámetros admitidos en el modo WiFI STA son: 'rssi'.
WLAN.isconnected()
En el caso del modo STA, devuelve True si está conectado a un punto de acceso WiFi y tiene una dirección IP válida. En modo AP
devuelve True cuando se conecta una estación. Devuelve False en caso contrario.
N.ifconfig([(ip, subnet, gateway, dns)])
Obtener/establecer parámetros de interfaz de red de nivel IP: dirección IP, máscara de subred, puerta de enlace y servidor DNS.
Cuando se llama sin argumentos, este método devuelve una tupla de 4 con la información anterior. Para establecer los valores
anteriores, pase una tupla de 4 con la información requerida. Por ejemplo:
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
WLAN.config('param')¶
WLAN.config(param=value, ...)
Obtenga o establezca los parámetros generales de la interfaz de red. Estos métodos permiten trabajar con parámetros
adicionales más allá de la configuración IP estándar (como se maneja en WLAN.ifconfig()). Estos incluyen parámetros específicos
de la red y del hardware. Para configurar parámetros, se debe usar la sintaxis de argumento de palabra clave, se pueden
configurar múltiples parámetros a la vez. Para realizar consultas, el nombre de los parámetros debe citarse como una cadena, y
solo se puede consultar un parámetro a la vez:
# Set WiFi access point name (formally known as SSID) and WiFi channel
ap.config(ssid='My AP', channel=11)
# Query params one by one
print(ap.config('ssid'))
print(ap.config('channel'))
Los siguientes son parámetros admitidos comúnmente (la disponibilidad de un parámetro específico depende del tipo de
tecnología de red, el controlador y el puerto MicroPython).
Parameter Description
mac MAC address (bytes)
ssid WiFi access point name (string)
channel WiFi channel (integer)
hidden Whether SSID is hidden (boolean)
security Security protocol supported (enumeration, see module constants)
key Access key (string)
hostname The hostname that will be sent to DHCP (STA interfaces) and mDNS (if supported, both
STA and AP). (Deprecated, use network.hostname() instead)
reconnects Number of reconnect attempts to make (integer, 0=none, -1=unlimited)
txpower Maximum transmit power in dBm (integer or float)
pm WiFi Power Management setting (see below for allowed values)
Constants
WLAN.PM_PERFORMANCE
WLAN.PM_POWERSAVE
WLAN.PM_NONE
Valores permitidos para el parámetro de interfaz de red WLAN.config(pm=...):
•PM_PERFORMANCE: enable WiFi power management to balance power savings and WiFi performance
•PM_POWERSAVE: enable WiFi power management with additional power savings and reduced WiFi
performance
•PM_NONE: disable wifi power management
https://docs.micropython.org/en/latest/library/
network.WLAN.html