martes, 6 de octubre de 2026

Guía Completa: Flasheado de MicroPython en ESP32 WROOM desde Linux Mint y Configuración en Thonny IDE

 

Guía Completa: Flasheado de MicroPython en ESP32 WROOM desde Linux Mint y Configuración en Thonny IDE

Autor: AlexanderArias Londoño
Clase: IoT
Fecha: 6 de octubre de 2026


El desarrollo de soluciones para Internet de las Cosas (IoT) utilizando la tarjeta ESP32 WROOM de 30 pines en el sistema operativo Linux Mint requiere realizar una adecuada configuración de permisos de comunicación serie, resolver conflictos con servicios en segundo plano del sistema operativo y gestionar las herramientas de flasheado mediante un entorno virtual de Python.

Esta guía ofrece un procedimiento paso a paso adaptado para Linux Mint para descargar el firmware oficial de MicroPython, preparar los permisos del sistema, instalar el entorno de grabado esptool, vincular la placa con Thonny IDE y ejecutar el programa de control del LED integrado mediante el módulo machine.


1. Identificación y Diagnóstico del Hardware en Linux Mint

Antes de proceder con la instalación del firmware, es necesario verificar que el kernel de Linux Mint reconozca correctamente el chip conversor USB a Serie de la tarjeta ESP32 (por lo general, chips como Silicon Labs CP210x o QinHeng Electronics CH340/CH341).

  1. Conecte la tarjeta ESP32 WROOM a un puerto USB de la computadora mediante un cable de datos.
  2. Abre una terminal (Ctrl + Alt + T) y ejecute el comando:
    lsusb
    
  3. Verifique la presencia del dispositivo en la lista (por ejemplo, Silicon Labs CP210x UART Bridge o QinHeng Electronics CH340 serial converter). Si el comando no muestra ningún dispositivo nuevo al conectar y desconectar la placa, reemplace el cable USB por uno certificado para transmisión de datos.

2. Paso 1: Descarga del Firmware Oficial de MicroPython

El firmware contiene el intérprete de MicroPython que se ejecutará dentro de la memoria flash del microcontrolador.

  1. Visite el sitio web oficial de MicroPython (micropython.org/download/esp32).
  2. Descargue la versión binaria estable correspondiente al microcontrolador ESP32 (archivo genérico .bin para ESP32 WROOM).
  3. Guarde el archivo descargado en la carpeta de descargas del usuario (~/Descargas).

3. Paso 2: Permisos de Puerto USB y Solución al Conflicto con brltty

Linux Mint protege los puertos serie (/dev/ttyUSB0 o /dev/ttyACM0) restringiendo el acceso únicamente a usuarios administradores o miembros del grupo de comunicación dialout.

Configuración del grupo dialout

Para otorgar acceso permanente a los puertos de comunicación sin necesidad de usar sudo continuamente:

sudo usermod -a -G dialout $USER

Nota obligatoria: Cierre la sesión de usuario y vuelva a iniciarla (o reinicie el sistema) para que Linux Mint aplique el cambio de grupo.

Desinstalación del servicio brltty

En distribuciones basadas en Ubuntu y Debian como Linux Mint, el servicio de accesibilidad brltty se ejecuta en segundo plano e interrumpe los convertidores USB-Serie (especialmente el chip CH340), desconectando el puerto /dev/ttyUSB0 inmediatamente después de enchufar la tarjeta.

Para desinstalarlo y liberar el puerto, ejecute:

sudo apt remove brltty

4. Paso 3: Entorno Virtual e Instalación de esptool

Para cumplir con la directiva PEP 668 en Linux Mint, que previene la modificación directa de los paquetes de Python del sistema operativo, se crea un entorno virtual aislado.

  1. Instale los paquetes necesarios e instale el entorno virtual en su carpeta personal:
    sudo apt update
    sudo apt install python3-venv python3-pip
    python3 -m venv esp_env
    
  2. Active el entorno virtual (observará el prefijo (esp_env) en la terminal):
    source esp_env/bin/activate
    
  3. Instale la herramienta oficial de flasheado de Espressif:
    pip install esptool
    

5. Paso 4: Liberación del Puerto y Flasheado de la ESP32 WROOM

Asegúrese de cerrar cualquier aplicación que pueda estar utilizando el puerto serie (como Thonny, Arduino IDE o terminales serie).

Liberación del puerto

Para forzar el cierre de cualquier proceso que bloquee el puerto:

sudo fuser -k /dev/ttyUSB0

Escritura de la memoria flash

Con el entorno esp_env activo en la terminal, ejecute el comando de borrado de memoria y grabado del firmware (sustituya el nombre del archivo .bin por el que descargó en el Paso 1):

esptool.py --port /dev/ttyUSB0 --chip esp32 --baud 115200 write-flash --flash_mode keep --flash_size keep --erase-all 0x1000 ~/Descargas/ESP32_GENERIC-20260824-v1.29.0.bin

Tip de conexión: Si la terminal muestra el mensaje Connecting......_____, mantenga presionado el botón físico BOOT (o IO0) en la placa ESP32 hasta que inicie la barra de progreso de escritura.


6. Paso 5: Configuración de Thonny IDE en Linux Mint

  1. Instale Thonny en Linux Mint desde los repositorios oficiales o mediante el Gestor de Software:
    sudo apt install thonny
    
  2. Abra Thonny.
  3. Vaya al menú Herramientas > Opciones... (Tools > Options...).
  4. En la pestaña Intérprete (Interpreter), seleccione MicroPython (ESP32).
  5. En el menú desplegable de puerto, elija /dev/ttyUSB0 (o /dev/ttyACM0).
  6. Haga clic en Aceptar.

La consola inferior (Shell) mostrará la línea de comandos de MicroPython (>>>), indicando que la placa está conectada y lista.


7. Paso 6: Verificación y Control del LED Integrado con machine

En la placa ESP32 de 30 pines, el pin digital GPIO 2 está conectado al LED integrado de la tarjeta.

Prueba en la consola interactiva (>>>)

import machine

# Configuración del pin GPIO 2 como salida
led = machine.Pin(2, machine.Pin.OUT)

# Encender el LED
led.value(1)

# Apagar el LED
led.value(0)

Script de parpadeo continuo (main.py)

Para que el programa se ejecute automáticamente al encender la ESP32:

  1. Abra un archivo nuevo en Thonny e ingrese el siguiente código:
    import machine
    import time
    
    # Pin GPIO 2 para el LED de la placa
    led = machine.Pin(2, machine.Pin.OUT)
    
    while True:
        led.value(1)   # Encender LED
        time.sleep(1)  # Esperar 1 segundo
        led.value(0)   # Apagar LED
        time.sleep(1)  # Esperar 1 segundo
    
  2. Guarde el archivo en el Dispositivo MicroPython (MicroPython device) con el nombre exacto main.py.

No hay comentarios:

Publicar un comentario