Aprenda MicroPython na ESP32 sem precisar ter a placa
O PyPlaca é uma IDE gratuita que roda no navegador. Você escreve o programa em Python à esquerda, monta o circuito na protoboard à direita e vê a ESP32 DevKit V1 reagir: o LED acende, o servo gira, o sensor lê. Não precisa instalar nada nem criar conta. Quando quiser, o mesmo main.py vai para a placa de verdade.
Um primeiro programa completo
Este é o programa que a IDE abre na primeira vez. Ele pisca o LED azul que já vem soldado na DevKit V1, ligado ao GPIO2, três vezes, e escreve no Serial a contagem de cada piscada.
Pin(2, Pin.OUT) transforma o pino em saída; led.on() e led.off() mudam o nível dele; time.sleep_ms(500) espera meio segundo. O simulador conta esse tempo no relógio da placa simulada, então o LED pisca no ritmo certo mesmo que o computador seja lento.
No 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('piscada', i + 1)
time.sleep_ms(500)
led.off()
time.sleep_ms(500)
O que dá para fazer no navegador
- Escrever e rodar MicroPython
- O interpretador segue o MicroPython v1.29.0 da ESP32: as mesmas funções, as mesmas mensagens de erro e o REPL (
>>>) quando o programa termina. - Montar o circuito
- Protoboard de 830 pontos e 21 peças para arrastar e ligar com fios. A bancada avisa quando falta o resistor do LED ou quando um pino recebe mais tensão do que aguenta.
- Ver a placa reagir
- A bancada em 3D ou a vista de cima mostram LEDs, displays e motores mudando enquanto o programa roda. O botão da protoboard se aperta com o mouse, e o sensor muda de valor num controle deslizante.
- Andar linha por linha
- Pontos de parada, passo a passo, entrar e sair de funções e até voltar um passo. A aba Variáveis mostra o valor de cada variável a cada linha, como num teste de mesa.
- Internet das coisas
- Wi-Fi, pedidos HTTP e MQTT simulados: a placa entra na rede do laboratório, consulta um servidor e publica num broker, sem depender da rede da escola.
- Levar para a placa real
- Exportar o projeto em
.zipcom a lista de materiais, ou gravar direto na ESP32 pelo cabo USB (Chrome e Edge), inclusive instalar o MicroPython numa placa nova.
As trilhas
São 11 trilhas com 48 lições e 111 desafios com correção automática. A de lógica com Python e a dos primeiros passos na ESP32 começam abertas; as outras abrem quando a anterior termina. Cada desafio é corrigido rodando o seu código com entradas que você vê e com casos escondidos, como numa prova.
- Lógica com Python 60 desafios
Variáveis, input/print, decisões, laços, funções, listas e matrizes: os 60 desafios de lógica do logicabr, agora em Python. - Primeiros passos na ESP32 4 lições e 4 desafios
O LED azul da placa (GPIO2), o tempo no MicroPython, LEDs externos com resistor e o seu primeiro semáforo. - Entradas digitais 4 lições e 4 desafios
Botões, pull-up e pull-down, o pino flutuante, interrupções (Pin.irq) e o debounce. - PWM: brilho, cor, som e movimento 5 lições e 6 desafios
Modulação por largura de pulso na ESP32: o LED a meia-luz, o fade, cores no LED RGB, notas no buzzer passivo e o servo SG90. - Analógico: ADC, potenciômetro e LDR 6 lições e 6 desafios
O conversor analógico-digital da ESP32: ler tensões, o potenciômetro e o divisor de tensão, a atenuação, mapear faixas, o LDR e a média móvel. - Sensores: temperatura, distância e presença 4 lições e 5 desafios
O DHT22 (temperatura e umidade), o HC-SR04 (distância por ultrassom) com o divisor de tensão no ECHO e o PIR (presença). - Displays: OLED, LCD e NeoPixel 5 lições e 5 desafios
O barramento I2C e o scan(), o OLED SSD1306 com o ssd1306.py, o LCD 16×2 com o módulo I2C e o anel de LEDs NeoPixel. - Tempo sem travar 5 lições e 5 desafios
Por que o sleep() trava o programa, o relógio ticks_ms/ticks_diff, várias tarefas ao mesmo tempo, o machine.Timer e a máquina de estados. - Wi-Fi e HTTP 5 lições e 5 desafios
A placa entra na rede com network.WLAN (DHCP, IP, status e scan), conversa com servidores por HTTP com o requests, entende JSON, envia leituras com POST e não fica esperando para sempre por um servidor lento. - MQTT: publicar e assinar 5 lições e 6 desafios
O broker MQTT e o modelo publicar/assinar (e por que ele é diferente do pedido e resposta do HTTP), tópicos, curingas, mensagens retidas e QoS, receber comandos sem travar com check_msg(), o DHT22 e o relé pelo painel de tópicos, Keep Alive, última vontade e reconexão. - Projeto final: estação meteorológica IoT 5 lições e 5 desafios
Uma estação meteorológica construída em etapas: o DHT22 e o OLED num laço que não trava, a configuração buscada por HTTP com um padrão para quando a rede falha, as leituras publicadas no MQTT com estado online/offline, a montagem na protoboard e, no fim, a estação completa que muda o intervalo pelo broker.
Artigos para começar
Textos longos, com exemplos que abrem direto no simulador, sobre a ESP32 e sobre Python do zero. Alguns dos primeiros:
- Primeiros passos com MicroPython na ESP32
O que é o MicroPython, como a ESP32 DevKit V1 roda o seu main.py, o LED do GPIO2, o tempo, o primeiro LED na protoboard e o caminho até a placa real. - GPIO na ESP32: entradas, pull-up e o pino flutuante
Como a ESP32 lê um pino: níveis lógicos, pull-up e pull-down internos, o pino flutuante, os GPIOs 34 a 39, interrupções com Pin.irq e o debounce de botões. - PWM na prática com a ESP32: LED, buzzer e servo
Modulação por largura de pulso na ESP32 com MicroPython — frequência, duty, por que 1000 Hz vira 998, brilho de LED, notas no buzzer e o ângulo do servo SG90. - O ADC da ESP32: atenuação, curva e por que não chega a 3,3 V
Como a ESP32 mede tensões com MicroPython: read e read_uv, ADC1 e ADC2, as quatro atenuações, a curva de calibração, potenciômetro, LDR e média móvel. - Sensores na ESP32: DHT22, HC-SR04, PIR e o divisor de tensão
DHT22, HC-SR04 e PIR na ESP32 com MicroPython: o protocolo de cada sensor, os erros que a placa mostra e o divisor de tensão no ECHO de 5 V. - I2C na ESP32: OLED SSD1306 e LCD 16×2 com MicroPython
O barramento I2C na ESP32 — endereços, scan, pull-ups e erros ENODEV — e como usar o OLED SSD1306 e o LCD 16×2 com PCF8574 em MicroPython, sem sobras na tela.
Peças da bancada
Cada peça tem uma ficha com a pinagem, um exemplo pronto e as especificações com a fonte de cada número: ESP32 DevKit V1 (DOIT, 30 pinos), ESP32-C3 Super Mini (16 pinos), Protoboard 830 pontos, LED 5 mm, Resistor, Botão tátil 6 mm, Potenciômetro 10 kΩ, LDR (GL5528), Buzzer ativo, Buzzer passivo, LED RGB (cátodo comum), Servo SG90, DHT22 (AM2302), DHT11, Sensor de temperatura DS18B20, Sensor ultrassônico HC-SR04, Sensor de presença PIR HC-SR501, Módulo relé 1 canal 5 V, Display OLED SSD1306 128×64 (I2C), LCD 16×2 com módulo I2C (PCF8574), Anel NeoPixel WS2812B. O mapa de pinos da DevKit V1 diz o que cada pino faz e quais evitar.
Para professores
O laboratório nem sempre tem uma placa por aluno. Com o perfil de professor você cria a turma, passa o código de convite, escolhe as atividades com prazo e acompanha num painel quem já fez, quantas tentativas usou e a nota de cada um. A correção oficial roda no servidor, com a mesma placa simulada, e o resultado não depende do computador do aluno.
Quem faz
O PyPlaca é criado e mantido pelo Prof. Rodrigo dos Santos Faustino, professor de programação, sob a marca FAUSTINOPSY. A plataforma nasceu da sala de aula: o aluno precisa errar, medir e tentar de novo sem medo de queimar um componente. Saiba mais sobre o PyPlaca ou fale pelo contato.