martes, 6 de octubre de 2026

Guía Paso a Paso: Instalación de MicroPython y Programación de la ESP8266 NodeMCU Amica en Linux Mint

 

Guía Paso a Paso: Instalación de MicroPython y Programación de la ESP8266 NodeMCU Amica en Linux Mint

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


La tarjeta de desarrollo ESP8266 NodeMCU Amica es una plataforma versátil y económica ampliamente utilizada en proyectos de Internet de las Cosas (IoT). Programar este dispositivo con MicroPython bajo Linux Mint permite crear aplicaciones empotradas eficientes utilizando la sintaxis de Python.

Esta guía paso a paso abarca desde la preparación inicial de Linux Mint y la resolución de conflictos con puertos serie, hasta el flasheado del firmware, la resolución de problemas comunes como el bucle de reinicio (boot loop) y la configuración de Thonny IDE para ejecutar scripts interactivos.


1. Preparación del Sistema Operativo Linux Mint

Antes de conectar la tarjeta ESP8266, es necesario preparar el entorno de Linux Mint para asegurar la correcta detección del convertidor serie USB (generalmente los chips CP2102 o CH340).

Paso 1.1: Diagnóstico del hardware USB con lsusb

Conecte la tarjeta ESP8266 a la computadora utilizando un cable USB que soporte transmisión de datos. Abra una terminal (Ctrl + Alt + T) y ejecute:

lsusb

Examine la lista desplegada. Debe identificar una línea similar a una de las siguientes:

  • Bus 001 Device 005: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
  • Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics CH340 serial converter

Nota de diagnóstico: Si no aparece ninguna línea nueva al conectar la placa, reemplace el cable USB. Muchos cables comerciales económicos solo incluyen líneas de alimentación eléctrica y carecen de hilos de datos.

Paso 1.2: Eliminación del servicio conflictivo brltty

En distribuciones basadas en Debian y Ubuntu como Linux Mint, el servicio del sistema brltty (diseñado para lectores de pantalla Braille) intercepta automáticamente los convertidores USB-Serie al detectarlos, provocando que el puerto /dev/ttyUSB0 desaparezca a los pocos segundos de ser creado.

Para eliminar esta interferencia, desinstale el paquete ejecutando:

sudo apt remove brltty

Paso 1.3: Asignación de permisos de acceso serie (dialout)

Por defecto, los dispositivos serie en Linux pertenecen al grupo de sistema dialout. Para interactuar con la tarjeta sin requerir permisos de superusuario (sudo), agregue su usuario actual al grupo:

sudo usermod -aG dialout $USER

Importante: Debe cerrar la sesión en Linux Mint y volver a iniciarla para que el sistema aplique el cambio de grupo.

Paso 1.4: Confirmación del puerto /dev/ttyUSB0

Reconecte la tarjeta a la computadora y verifique la creación del puerto serie:

ls /dev/ttyUSB*

Si la terminal responde con /dev/ttyUSB0, la comunicación física está correctamente establecida.


2. Creación del Entorno Virtual de Python e Instalación de esptool

Para cumplir con las especificaciones de gestión de paquetes de Python en Linux Mint (PEP 668), la herramienta oficial de flasheado de Espressif (esptool) debe instalarse dentro de un entorno virtual aislado.

  1. Cree un entorno virtual denominado esp_env en su carpeta personal:
    python3 -m venv esp_env
    
  2. Active el entorno virtual:
    source esp_env/bin/activate
    
    (Verá la etiqueta (esp_env) al inicio del indicador de la terminal).
  3. Instale o actualice esptool:
    pip install esptool
    

3. Descarga y Flasheado del Firmware de MicroPython

A diferencia de los microcontroladores ESP32 (donde la memoria flash se graba a partir de la dirección 0x1000), en la arquitectura ESP8266 la imagen del firmware debe escribirse comenzando exactamente en la dirección 0x0.

Paso 3.1: Descarga del firmware binario

  1. Visite la sección oficial de descargas de MicroPython para ESP8266 en micropython.org/download/esp8266.
  2. Descargue la versión estable más reciente en formato .bin y guarde el archivo en su carpeta ~/Descargas.

Paso 3.2: Borrado de la memoria flash

Con el entorno (esp_env) activo en la terminal, elimine el contenido previo de la memoria flash de la tarjeta:

esptool --port /dev/ttyUSB0 --chip esp8266 erase-flash

Espere aproximadamente 10 segundos hasta que la terminal confirme Flash memory erased successfully.

Paso 3.3: Grabación del firmware en modo dout

Muchas tarjetas NodeMCU Amica cuentan con memorias flash SPI que requieren el modo de comunicación dout (Dual Output) y una asignación explícita del tamaño de memoria (4MB). Usar otros modos (como dio o qio) puede causar que la placa falle al arrancar.

Ejecute el siguiente comando de grabado:

esptool --port /dev/ttyUSB0 --chip esp8266 write-flash --flash-mode dout --flash-size 4MB 0x0 ~/Descargas/ESP8266_GENERIC-*.bin

Sugerencia de conexión: Si la terminal muestra el mensaje Connecting......_____, mantenga presionado el botón físico FLASH (o BOOT) de la placa durante 2 segundos hasta que comience el progreso de transferencia.

Al llegar al 100%, desconecta el cable USB del ordenador, espera 5 segundos y vuelve a conectarlo para realizar un reinicio eléctrico completo del chip.


4. Diagnóstico de Caracteres Extraños y Bucle de Reinicio (Boot Loop)

Si al intentar conectar la tarjeta observa que el LED azul parpadea rápidamente de forma ininterrumpida y en la terminal aparecen caracteres raros o símbolos corruptos ($plN|...), la placa se encuentra en un bucle de reinicio.

¿Por qué ocurren los caracteres extraños?

Al encenderse o reiniciar, el gestor de arranque (bootloader) del chip ESP8266 emite mensajes de diagnóstico a una velocidad nativa de 74880 baudios. Como los entornos como Thonny escuchan a la velocidad estándar de 115200 baudios, esa diferencia de velocidad provoca que el texto legible se convierta en símbolos extraños.

Verificación del diagnóstico con miniterm

Para leer los mensajes de diagnóstico reales del bootloader y confirmar la causa del reinicio, puede abrir una terminal a 74880 baudios:

python3 -m serial.tools.miniterm /dev/ttyUSB0 74880
  • Si observa texto legible indicando el estado del sistema, presione Ctrl + ] (o cierre la terminal) para salir de miniterm.
  • Si confirma que la tarjeta se reinicia continuamente, la causa principal es haber flasheado sin la opción --flash-mode dout. Repita el Paso 3.2 y Paso 3.3 asegurándose de incluir --flash-mode dout.

5. Configuración de Thonny IDE

Una vez grabado el firmware correctamente y realizado el reinicio eléctrico, configure el entorno Thonny:

  1. Inicie la aplicación Thonny en Linux Mint.
  2. Vaya al menú superior Herramientas > Opciones... (Tools > Options...).
  3. Seleccione la pestaña Intérprete (Interpreter).
  4. En la opción de microcontrolador, seleccione MicroPython (ESP8266).
  5. En la opción de puerto, seleccione /dev/ttyUSB0.
  6. Presione Aceptar.

Haga clic en la consola inferior (Shell) de Thonny y presione Ctrl + C o Ctrl + D. Verá aparecer la consola interactiva con el prompt >>>:

MicroPython v1.2x.x on 2026-xx-xx; ESP module with ESP8266
Type "help()" for more information.
>>>

6. Pruebas de Funcionamiento y Control de E/S con machine

En la tarjeta ESP8266 NodeMCU Amica, el LED azul integrado en la placa está conectado al pin GPIO 2 (marcado en la serigrafía como D4).

Mapeo de estados y lógica invertida

El circuito del LED integrado en la ESP8266 funciona con lógica invertida:

Nivel LógicoEstado en MicroPythonNivel de VoltajeEstado del LED
0 (LOW)led.value(0)0 V (GND)ENCENDIDO
1 (HIGH)led.value(1)3.3 VAPAGADO

Código de prueba interactivo (Shell)

Escriba las siguientes órdenes directamente en la consola >>> de Thonny para encender y apagar el LED:

import machine

# Configurar GPIO 2 como salida digital
led = machine.Pin(2, machine.Pin.OUT)

# Encender el LED azul integrado
led.value(0)

# Apagar el LED azul integrado
led.value(1)

Programa autónomo de parpadeo (main.py)

Para que la tarjeta ejecute la rutina de forma automática cada vez que se conecte a la energía sin depender de la computadora:

  1. En Thonny, cree un archivo nuevo (Archivo > Nuevo).

  2. Copie el siguiente código:

    import machine
    import time
    
    # Pin GPIO 2 correspondiente al LED de la NodeMCU
    led = machine.Pin(2, machine.Pin.OUT)
    
    # Bucle principal de parpadeo
    while True:
        led.value(0)   # Encender LED (0V / LOW)
        time.sleep(1)  # Esperar 1 segundo
        led.value(1)   # Apagar LED (3.3V / HIGH)
        time.sleep(1)  # Esperar 1 segundo
    
  3. Guarde el archivo seleccionando como destino Dispositivo MicroPython (MicroPython device).

  4. Asígnele el nombre exacto main.py.

Al presionar el botón de reinicio RST de la NodeMCU Amica, el programa main.py se iniciará automáticamente, haciendo parpadear el LED de forma indefinida.

No hay comentarios:

Publicar un comentario