Aprende MicroPython en la ESP32 sin necesidad de tener la placa
PyPlaca es un IDE gratuito que corre en el navegador. Escribes el programa en Python a la izquierda, montas el circuito en la protoboard a la derecha y ves reaccionar la ESP32 DevKit V1: el LED se enciende, el servo gira, el sensor lee. No hace falta instalar nada ni crear una cuenta. Cuando quieras, el mismo main.py pasa a la placa de verdad.
Un primer programa completo
Este es el programa que el IDE abre la primera vez. Hace parpadear el LED azul que ya viene soldado en la DevKit V1, conectado al GPIO2, tres veces, y escribe en el Serial la cuenta de cada parpadeo.
Pin(2, Pin.OUT) convierte el pin en salida; led.on() y led.off() cambian su nivel; time.sleep_ms(500) espera medio segundo. El simulador cuenta ese tiempo en el reloj de la placa simulada, así que el LED parpadea al ritmo correcto aunque el ordenador sea lento.
En el Serial aparece:
piscada 1 piscada 2 piscada 3
from machine import Pin
import time
led = Pin(2, Pin.OUT)
for i in range(3):
led.on()
print('parpadeo', i + 1)
time.sleep_ms(500)
led.off()
time.sleep_ms(500)
Qué puedes hacer en el navegador
- Escribir y ejecutar MicroPython
- El intérprete sigue el MicroPython v1.29.0 de la ESP32: las mismas funciones, los mismos mensajes de error y el REPL (
>>>) cuando el programa termina. - Montar el circuito
- Protoboard de 830 puntos y 21 piezas para arrastrar y conectar con cables. El banco de trabajo avisa cuando falta la resistencia del LED o cuando un pin recibe más tensión de la que aguanta.
- Ver reaccionar la placa
- El banco de trabajo en 3D o la vista desde arriba muestran LEDs, displays y motores cambiando mientras corre el programa. El botón de la protoboard se pulsa con el ratón, y el sensor cambia de valor con un control deslizante.
- Avanzar línea a línea
- Puntos de parada, paso a paso, entrar y salir de funciones e incluso volver un paso. La pestaña Variables muestra el valor de cada variable en cada línea, como en una prueba de escritorio.
- Internet de las cosas
- Wi-Fi, peticiones HTTP y MQTT simulados: la placa entra en la red del laboratorio, consulta un servidor y publica en un broker, sin depender de la red de la escuela.
- Llevarlo a la placa real
- Exportar el proyecto en
.zipcon la lista de materiales, o grabar directo en la ESP32 por el cable USB (Chrome y Edge), incluso instalar MicroPython en una placa nueva.
Las rutas
Son 11 rutas con 48 lecciones y 111 desafíos con corrección automática. La de lógica con Python y la de los primeros pasos en la ESP32 empiezan abiertas; las demás se abren cuando termina la anterior. Cada desafío se corrige ejecutando tu código con entradas que ves y con casos ocultos, como en un examen.
- Lógica con Python 60 desafíos
Variables, input/print, decisiones, bucles, funciones, listas y matrices: los 60 desafíos de lógica del logicabr, ahora en Python. - Primeros pasos con la ESP32 4 lecciones y 4 desafíos
El LED azul de la placa (GPIO2), el tiempo en MicroPython, LED externos con resistencia y tu primer semáforo. - Entradas digitales 4 lecciones y 4 desafíos
Botones, pull-up y pull-down, el pin flotante, interrupciones (Pin.irq) y el debounce. - PWM: brillo, color, sonido y movimiento 5 lecciones y 6 desafíos
Modulación por ancho de pulso en la ESP32: el LED a media luz, el fade, colores en el LED RGB, notas en el zumbador pasivo y el servo SG90. - Analógico: ADC, potenciómetro y LDR 6 lecciones y 6 desafíos
El conversor analógico-digital de la ESP32: leer tensiones, el potenciómetro y el divisor de tensión, la atenuación, mapear rangos, el LDR y la media móvil. - Sensores: temperatura, distancia y presencia 4 lecciones y 5 desafíos
El DHT22 (temperatura y humedad), el HC-SR04 (distancia por ultrasonido) con el divisor de tensión en el ECHO y el PIR (presencia). - Pantallas: OLED, LCD y NeoPixel 5 lecciones y 5 desafíos
El bus I2C y el scan(), el OLED SSD1306 con el ssd1306.py, el LCD 16×2 con el módulo I2C y el anillo de LED NeoPixel. - Tiempo sin trabarse 5 lecciones y 5 desafíos
Por qué el sleep() traba el programa, el reloj ticks_ms/ticks_diff, varias tareas al mismo tiempo, el machine.Timer y la máquina de estados. - Wi-Fi y HTTP 5 lecciones y 5 desafíos
La placa entra en la red con network.WLAN (DHCP, IP, status y scan), conversa con servidores por HTTP con el requests, entiende JSON, envía lecturas con POST y no se queda esperando para siempre a un servidor lento. - MQTT: publicar y suscribirse 5 lecciones y 6 desafíos
El broker MQTT y el modelo publicar/suscribirse (y por qué es distinto del petición y respuesta de HTTP), temas, comodines, mensajes retenidos y QoS, recibir comandos sin trabarse con check_msg(), el DHT22 y el relé desde el panel de temas, Keep Alive, última voluntad y reconexión. - Proyecto final: estación meteorológica IoT 5 lecciones y 5 desafíos
Una estación meteorológica construida en etapas: el DHT22 y el OLED en un bucle que no se traba, la configuración traída por HTTP con un valor por defecto para cuando la red falla, las lecturas publicadas en MQTT con estado online/offline, el montaje en la protoboard y, al final, la estación completa que cambia el intervalo por el broker.
Artículos para empezar
Textos largos, con ejemplos que se abren directo en el simulador, sobre la ESP32 y sobre Python desde cero. Algunos de los primeros:
- Primeros pasos con MicroPython en la ESP32
Qué es MicroPython, cómo la ESP32 DevKit V1 ejecuta tu main.py, el LED del GPIO2, el tiempo, el primer LED en la protoboard y el camino hasta la placa real. - GPIO en la ESP32: entradas, pull-up y el pin flotante
Cómo lee un pin la ESP32: niveles lógicos, pull-up y pull-down internos, el pin flotante, los GPIO 34 a 39, interrupciones con Pin.irq y debounce de botones. - PWM en la práctica con la ESP32: LED, zumbador y servo
PWM en la ESP32 con MicroPython: frecuencia, duty, por qué 1000 Hz se vuelve 998, brillo de LED, notas en el zumbador y ángulo del servo SG90. - El ADC de la ESP32: atenuación, curva y por qué no llega a 3,3 V
Cómo mide tensiones la ESP32 con MicroPython: read y read_uv, ADC1 y ADC2, las cuatro atenuaciones, la curva de calibración, el LDR y la media móvil. - Sensores en la ESP32: DHT22, HC-SR04, PIR y el divisor de tensión
DHT22, HC-SR04 y PIR en la ESP32 con MicroPython: el protocolo de cada sensor, los errores que muestra la placa y el divisor de tensión en el ECHO de 5 V. - I2C en la ESP32: OLED SSD1306 y LCD 16×2 con MicroPython
El bus I2C en la ESP32 (direcciones, scan, pull-ups, ENODEV) y cómo usar el OLED SSD1306 y el LCD 16×2 con PCF8574 en MicroPython, sin restos en la pantalla.
Piezas del banco de trabajo
Cada pieza tiene una ficha con la distribución de pines, un ejemplo listo y las especificaciones con la fuente de cada número: ESP32 DevKit V1 (DOIT, 30 pines), ESP32-C3 Super Mini (16 pines), Protoboard de 830 puntos, LED de 5 mm, Resistencia, Pulsador táctil de 6 mm, Potenciómetro de 10 kΩ, LDR (GL5528), Buzzer activo, Buzzer pasivo, LED RGB (cátodo común), Servo SG90, DHT22 (AM2302), DHT11, Sensor de temperatura DS18B20, Sensor ultrasónico HC-SR04, Sensor de movimiento PIR HC-SR501, Módulo de relé de 1 canal y 5 V, Display OLED SSD1306 de 128×64 (I2C), LCD de 16×2 con módulo I2C (PCF8574), Anillo NeoPixel WS2812B. El mapa de pines de la DevKit V1 dice qué hace cada pin y cuáles evitar.
Para profesores
El laboratorio no siempre tiene una placa por alumno. Con el perfil de profesor creas el grupo, compartes el código de invitación, eliges las actividades con plazo y sigues en un panel quién ya las hizo, cuántos intentos usó y la nota de cada uno. La corrección oficial corre en el servidor, con la misma placa simulada, y el resultado no depende del ordenador del alumno.
Quién lo hace
PyPlaca lo crea y mantiene Prof. Rodrigo dos Santos Faustino, profesor de programación, bajo la marca FAUSTINOPSY. La plataforma nació en el aula: el alumno necesita equivocarse, medir e intentarlo de nuevo sin miedo a quemar un componente. Conoce más sobre PyPlaca o escríbenos por el contacto.