El firmware de MicroPython para las placa ESP32 viene con el Módulo Networking preinstalado, por lo cual no se debe recurrir a módulos externos para poder conectarse a una Red WiFi. Aunque a veces es necesario requerir de los mismos que con unas cuantas líneas de código nos permita controlar la Conexión WiFi del dispositivo.
En este articulo te mostraré como puedes conectarte a una red WiFi con el Módulo Networking, el cual te recomiendo utilizar si la cantidad de líneas de código en tu archivo principal son pocas. Pero si tu proyecto tiene una gran cantidad de líneas de código, te recomiendo que utilices el Módulo Externo que he desarrollado, ya que solo requiere colocar unas cuantas líneas de código en tu archivo principal para mantener un buen control de la conexión a una red WiFi, además se le puede asignar un pin de salida para conectarle un Led y tener una referencia visual del estado de la conexión.
Conexión típica mediante el Módulo Networking
Para conectarte a una red WiFi haciendo uso del Módulo Networking utiliza el siguiente código, donde debes reemplazar los datos de las variables:
ssid = Nombre de su red WiFi (string).
key = Contraseña de su red WiFi (string).
#---------------------------------------------------------------------------------------- #Replace the ssid and key data with those of your Wi-Fi network ssid = 'WiFi Name' key = 'Wifi Password' #---------------------------------------------------------------------------------------- import network import time wlan = network.WLAN(network.STA_IF) if not wlan.isconnected(): wlan.active(True) wlan.connect(ssid, key) print('Connecting to: %s' % ssid) timeout = time.ticks_ms() while not wlan.isconnected(): time.sleep(0.15) if (time.ticks_diff (time.ticks_ms(), timeout) > 15000): break if wlan.isconnected(): print('Successful connection to: %s' % ssid) print('IP: %s\nSUBNET: %s\nGATEWAY: %s\nDNS: %s' % wlan.ifconfig()[0:4]) else: wlan.active(False) print('Failed to connect to: %s' % ssid) else: print('Connected\nIP: %s\nSUBNET: %s\nGATEWAY: %s\nDNS: %s' % wlan.ifconfig()[0:4])
Conexión mediante un Módulo Externo
Para instalar el Módulo Externo que he desarrollado debes seguir estos pasos:
- Descarga el módulo desde el repositorio dando clic aquí.
- Descomprime el archivo descargado y abre el archivo wireless.py
- Por ultimo, guarda el archivo en la memoria de la ESP32.
Materiales
Para tener un referencia visual del estado de la conexión WiFi se le puede agregar un Led, aunque esto es opcional lo puedes realizar con los siguientes materiales:
- 1x Placa ESP32 con micropython.
- 1x Diodo emisor de luz (opcional).
- 1x Resistor de 330 Ohm (opcional).
- 2x Protoboard (opcional).
- Cables de conexión (opcional).
Circuito
Los componentes se deben conectar de la siguiente manera:
- El ánodo del Led (Pin Largo) va conectado a un extremo del resistor de 330 Ohm, el otro extremo del resistor va conectado al Pin GP0 de la placa ESP32 (en la programación se puede asignar cualquier Pin para la conexión del Led).
Sketch en MicroPython
El sketch se encuentra en la carpeta descargada del modulo wireless con el nombre de test_wireless.py
#Import wireless module import wireless #To make the connection, you must replace the following data with your WiFi network: #SSID = Wi-Fi Network Name (string) #PASSWORD = Wi-Fi Network Password (string) #PinOut = Output pin that indicates the status of the connection, it can be omitted if not required. (int) #wireless.wifi('SSID', 'PASSWORD') wireless.wifi('SSID', 'PASSWORD', PinOut)
¿Cómo funciona el Sketch?
Recuerde que para que el sketch funcione debe guardar el archivo wireless.py en la memoria de la Placa ESP32.
El Sketch funciona de la siguiente manera:
- Antes de ejecutar el sketch se debe modificar los datos de:
- SSID: Nombre de su red WiFi (string).
- PASSWORD: Contraseña de su red WiFi (string).
- PinOut: Éste es opcional, hace referencia a un Pin de la Placa ESP32 dependiendo si requiere tener una referencia visual de la conexión por medio de un Led, el mismo que parpadea hasta que se establezca la conexión (int).
- A continuación se muestra un ejemplo de como se debe modificar los datos:
- Una vez modificado los datos puede proceder a ejecutar el sketch.
- Si los datos son correctos y el dispositivo se ha conectado de manera exitosa, el led permanecerá encendido y en la consola se visualizará un mensaje de Conexión correcta conjuntamente con los datos de conexión, como se muestra a continuación:
- Si los datos son incorrectos o por alguna razón el dispositivo no ha podido establecer una conexión durante el tiempo de 10 segundos, el led se apagará y en la consola se visualizará un mensaje de Error de conexión, como se muestra a continuación:
- Si el dispositivo se encuentra conectado a una Red WiFi, el led se encenderá y en la consola se visualizará el mensaje de Conectado conjuntamente con los datos de conexión, como se muestra a continuación:
Enlaces de Descarga
Descarga el Módulo Externo desde mi repositorio dando clic aquí.
2 comentarios en «Conectarse a una red WiFi con MicroPython»
Hola, existe un problema, si el wifi deja de emitir conexion a internet hay un problema y no reconecta de nuevo el wifi, como crees que esto se debe solucionar con micropython ?
con arduino ide ESP8266 se reestablece la conexion
Hola Nicolas, en base a este post la siguiente línea de código:
wlan.isconnected()
comprueba si existe una conexión wifi establecida pero solo una vez, cuando el programa comienza a ejecutarse y antes de que ingrese a un bucle de repetición, se puede agregar una rutina en el bucle de repetición que se encargue de comprobar que exista conexión, y en el caso de que la conexión se haya caído proceda a realizar una reconexión.Si tienes alguna duda o inquietud que quizá pueda ayudarte a resolver comunícate conmigo ingresando a: https://jhonatanlamina.com/contacto/
Saludos.