Conectarse a una red WiFi con MicroPython

Contenido:

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:

esp32 wifi micropython
Figura 1: Repositorio GitHub.
  • Descomprime el archivo descargado y abre el archivo wireless.py
esp32 wifi micropython
Figura 2: Archivo wireless.py
  • Por ultimo, guarda el archivo en la memoria de la ESP32.
esp32 wifi micropython
Figura 3: Memoria de la Placa 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

esp32 wifi micropython
Figura 4: Circuito con la Placa ESP32.

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:
esp32 wifi micropython
Figura 5: Ejemplo de modificación de datos de conexión.
  • 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:
esp32 wifi micropython
Figura 6: Mensaje de conexión correcta.
  • 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:
esp32 wifi micropython
Figura 7: Mensaje de error de conexió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:
esp32 wifi micropython
Figura 8: Mensaje de estado conectado.

Enlaces de Descarga

Descarga el Módulo Externo desde mi repositorio dando clic aquí.

2 comentarios en «Conectarse a una red WiFi con MicroPython»

  1. 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

    Responder
    • 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.

      Responder

Deja un comentario