Hay una forma de programar el ESP32 en la que no compilas nada: flasheas un firmware, abres una consola y escribes Python. En cinco minutos tienes un LED parpadeando. Se llama MicroPython y es la mejor puerta de entrada que existe.
La otra cara: es más lento y no todo está cubierto. Vamos a verlo con honestidad.
Qué es MicroPython
Es una implementación de Python 3 hecha para microcontroladores. Ocupa poco, cabe en el ESP32 y te da un REPL (consola interactiva) por USB o Wi-Fi.
Flashear y conectar
Se instala con esptool (el firmware lo publica micropython.org):
esptool.py --chip esp32 -p /dev/ttyUSB0 erase_flash
esptool.py --chip esp32 -p /dev/ttyUSB0 write_flash -z 0x1000 esp32-*.bin
Y para hablar con la placa, mpremote:
mpremote connect /dev/ttyUSB0
>>> import machine, time
>>> led = machine.Pin(2, machine.Pin.OUT)
>>> while True:
... led.value(not led.value()); time.sleep(1)
Eso es todo. Sin compilar, sin setup(), sin loop(). Perfecto para aprender.
Subir tu código
El ESP32 aparece como un sistema de ficheros (en boot.py y main.py):
mpremote cp main.py :main.py # copiar
mpremote run main.py # ejecutar sin copiar
main.py se ejecuta solo al arrancar.
Lo bueno
- Curva mínima si sabes Python (o si no, también).
- Iteración instantánea: pruebas una línea y ves el resultado.
- Ideal para enseñar y para taller.
- Buenos módulos:
machine,network,time,socket,json.
Lo malo (importante)
- Velocidad: es interpretado, así que olvídate de timing fino o de procesar audio/vídeo.
- Memoria: el intérprete ocupa parte de la RAM; con PSRAM mejora, pero no es C.
- Periféricos: no todos los del ESP32 están expuestos. Si algo falta, normalmente hay que bajar a C.
- Tiempo real: no hay tareas con prioridad real como en FreeRTOS.
- Producción: para un producto serio, casi siempre se acaba en C/C++ o Rust.
¿Y Lua (NodeMCU)?
Fue popular con el ESP8266. Hoy está prácticamente aparcado: menos soporte, menos librerías y MicroPython es más cómodo y está más vivo. Para proyectos nuevos, no lo recomiendo.
Comparativa rápida
| MicroPython | Arduino | ESP-IDF | |
|---|---|---|---|
| Compilar | No | Sí | Sí |
| Velocidad | Baja | Alta | Alta |
| RAM disponible | Menos | Mucha | Mucha |
| Tareas | No | 1 loop | N tareas |
| Curva | Muy baja | Baja | Alta |
| Ideal para | Aprender, prototipos | Todo | Producto |
Cuándo usarlo (y cuándo no)
Sí:
- Estás aprendiendo o enseñando.
- Quieres probar una idea en 10 minutos.
- El proyecto es un sensor que publica y no necesita velocidad.
No:
- Necesitas timing preciso o DSP.
- Vas a producción con requisitos de memoria o consumo.
- Necesitas un periférico que no está expuesto en Python.
Resumen
- MicroPython: Python en el ESP32, sin compilar, con REPL y sistema de ficheros. Versión actual: 1.29.
- Es la mejor forma de empezar y de prototipar rápido.
- Es más lento y usa más RAM: no sirve para todo.
- Lua/NodeMCU ya no merece la pena para proyectos nuevos.
- Puedes empezar en MicroPython y bajar a C/Rust cuando el proyecto lo pida.
Siguiente paso: Rust en el ESP32, el otro extremo: máxima seguridad y control. O vuelve al hub de la serie.