52 projects
ESP32 Projects
The ESP32 is a dual-core microcontroller from Espressif with built-in Wi-Fi and Bluetooth. It runs at up to 240 MHz, offers far more memory and pins than an Arduino Uno and is still inexpensive. You program it in the Arduino IDE after adding the ESP32 board package, so most of what you learned on Arduino carries over with small changes.
These ESP32 projects are for anyone who wants to control devices from a phone, pull data from the internet or build a smart home system. Each IoT project, from a web server and Telegram alerts to a weather station, an NTP clock and sensor logging, includes a circuit diagram, commented code and a parts list.
How to get started: an ESP32 DevKit board, a USB cable that carries data and a breadboard are all you need. Get to know the board with the LED and Wi-Fi connection projects, then move on to web servers and sensors. Remember that ESP32 pins run at 3.3 V, so use a voltage divider or a level shifter when connecting modules that output 5 V.
The first 10 projects for beginners
Follow them in this order and each project adds one new skill on top of the last.
- 1
LED piscando com ESP32Ensina o uso básico de uma saída GPIO no ESP32. Fazemos um LED piscar ligando e desligando um pino digital. É a versão para ESP32 do clássico projeto blink do Arduino UNO: os comandos básicos de blink no ambiente Arduino são os mesmos, mas a disposição dos pinos e os níveis de 3,3 V dos GPIOs do ESP32 diferem dos do Arduino UNO.Iniciante - 2
Controle de LED com botão no ESP32 (momentâneo)O LED acende enquanto o botão está pressionado e apaga ao soltá-lo. Mostra como usar o pino de entrada digital e o resistor pull-up interno do ESP32. O modo INPUT_PULLUP dispensa um resistor externo.Iniciante - 3
Controle de LED com botão no ESP32 (alternância)Cada vez que o botão é pressionado, o estado do LED muda: se estiver aceso, apaga; se estiver apagado, acende. É o padrão clássico de alternância. Com debounce, eliminamos o ruído mecânico dos contatos do botão para garantir uma única mudança a cada pressionamento.Iniciante - 4
LED integrado do ESP32 piscandoFaça o LED azul integrado do ESP32 DevKit V1 piscar. Nenhum componente externo é necessário! O primeiro projeto para experimentar ao comprar um ESP32. GPIO 2 está conectado ao LED integrado.Iniciante - 5
Semáforo com ESP32Simulação de um semáforo real com 3 LEDs: vermelho, amarelo e verde. Os tempos se aproximam da lógica real: vermelho longo, amarelo curto e verde longo. Um exemplo clássico de controle sequencial de GPIOs.Iniciante - 6
LEDs sequenciais com ESP326 LEDs se acendem em sequência da esquerda para a direita e da direita para a esquerda, no estilo Knight Rider. Um exemplo básico de uso de laços for e arrays. Ensina a lógica de mudança de direção.Iniciante - 7
Efeito de luzes de viatura com ESP32Simule as luzes de uma viatura fazendo grupos de LEDs vermelhos e azuis piscarem rapidamente. Usar 2 LEDs em cada grupo deixa o efeito mais marcante. Um exemplo clássico de alternância rápida e controle de grupos.Iniciante - 8
Variação gradual do brilho do LED com PWM no ESP32Varie suavemente o brilho do LED de 0 ao máximo e do máximo a 0. Controlamos o PWM com analogWrite(), como no Arduino. A mesma sintaxe funciona sem problemas com ESP32 Arduino Core 3.0+. Basta definir o pino e usar pinMode e analogWrite.Iniciante - 9
Controle de LED RGB com ESP32Gere inúmeras cores com um único LED RGB em vez de 3 LEDs separados. Como no Arduino, ajustamos os valores R/G/B com analogWrite() para criar uma transição de arco-íris. Você vê a teoria das cores na prática, como vermelho + verde = amarelo.Iniciante - 10
Luz noturna com LDR e ESP32Uma luz noturna em que o LED acende automaticamente no escuro e apaga na claridade. Usamos o pino D0 (saída digital) do módulo sensor LDR. O pequeno potenciômetro no módulo ajusta o limiar de escuridão, e o próprio módulo gera a saída HIGH/LOW. O ESP32 apenas lê esse sinal com digitalRead(), deixando o código bem simples.Iniciante
Projects by difficulty
Beginner13 projects

LED piscando com ESP32
Ensina o uso básico de uma saída GPIO no ESP32. Fazemos um LED piscar ligando e desligando um pino digital. É a versão para ESP32 do clássico projeto blink do Arduino UNO: os comandos básicos de blink no ambiente Arduino são os mesmos, mas a disposição dos pinos e os níveis de 3,3 V dos GPIOs do ESP32 diferem dos do Arduino UNO.

Controle de LED com botão no ESP32 (momentâneo)
O LED acende enquanto o botão está pressionado e apaga ao soltá-lo. Mostra como usar o pino de entrada digital e o resistor pull-up interno do ESP32. O modo INPUT_PULLUP dispensa um resistor externo.

Controle de LED com botão no ESP32 (alternância)
Cada vez que o botão é pressionado, o estado do LED muda: se estiver aceso, apaga; se estiver apagado, acende. É o padrão clássico de alternância. Com debounce, eliminamos o ruído mecânico dos contatos do botão para garantir uma única mudança a cada pressionamento.

LED integrado do ESP32 piscando
Faça o LED azul integrado do ESP32 DevKit V1 piscar. Nenhum componente externo é necessário! O primeiro projeto para experimentar ao comprar um ESP32. GPIO 2 está conectado ao LED integrado.

Semáforo com ESP32
Simulação de um semáforo real com 3 LEDs: vermelho, amarelo e verde. Os tempos se aproximam da lógica real: vermelho longo, amarelo curto e verde longo. Um exemplo clássico de controle sequencial de GPIOs.

LEDs sequenciais com ESP32
6 LEDs se acendem em sequência da esquerda para a direita e da direita para a esquerda, no estilo Knight Rider. Um exemplo básico de uso de laços for e arrays. Ensina a lógica de mudança de direção.

Efeito de luzes de viatura com ESP32
Simule as luzes de uma viatura fazendo grupos de LEDs vermelhos e azuis piscarem rapidamente. Usar 2 LEDs em cada grupo deixa o efeito mais marcante. Um exemplo clássico de alternância rápida e controle de grupos.

Variação gradual do brilho do LED com PWM no ESP32
Varie suavemente o brilho do LED de 0 ao máximo e do máximo a 0. Controlamos o PWM com analogWrite(), como no Arduino. A mesma sintaxe funciona sem problemas com ESP32 Arduino Core 3.0+. Basta definir o pino e usar pinMode e analogWrite.

Controle de LED RGB com ESP32
Gere inúmeras cores com um único LED RGB em vez de 3 LEDs separados. Como no Arduino, ajustamos os valores R/G/B com analogWrite() para criar uma transição de arco-íris. Você vê a teoria das cores na prática, como vermelho + verde = amarelo.

Luz noturna com LDR e ESP32
Uma luz noturna em que o LED acende automaticamente no escuro e apaga na claridade. Usamos o pino D0 (saída digital) do módulo sensor LDR. O pequeno potenciômetro no módulo ajusta o limiar de escuridão, e o próprio módulo gera a saída HIGH/LOW. O ESP32 apenas lê esse sinal com digitalRead(), deixando o código bem simples.

Leitura da intensidade da luz com módulo LDR e ESP32
Acompanhe em tempo real no Monitor Serial o valor bruto do ADC do módulo LDR e a porcentagem relativa de luz calculada a partir de referências de escuridão e claridade. Essa porcentagem não é uma medida em lux. O projeto ensina a lógica de calibração do módulo. É ideal fazê-lo antes do projeto 10, pois ajuda a determinar o valor do limiar.

Melodia com buzzer e ESP32
Toque uma melodia simples (Brilha, brilha, estrelinha) com um buzzer passivo. Usamos as funções tone() e noTone() para tocar as notas, como no Arduino. A mesma sintaxe funciona com ESP32 Arduino Core 3.0+. É preciso usar um buzzer passivo, pois o ativo não toca melodias.

Temporizador Pomodoro com ESP32 (anel NeoPixel + botão + buzzer)
Um temporizador luminoso de mesa para você deixar o celular de lado enquanto estuda! O **anel NeoPixel de 24 LEDs** mostra o tempo restante como o mostrador de um relógio: estudo em **vermelho**, pausas curtas em **verde** e a pausa longa após cada quatro sessões em **azul**. Nos últimos 5 segundos, o anel pisca e o **buzzer passivo** emite tiques; depois, um arco-íris comemora o fim da etapa. Um único **botão** inicia, pausa e reinicia, tudo com um **ESP32** sem usar nenhum `delay()`.
Intermediate21 projects

Brilho do LED com potenciômetro no ESP32 (analógico → PWM)
Neste projeto, controlamos o brilho de um LED de forma analógica com um potenciômetro. O pino ADC do ESP32 lê a tensão de 0-3,3V do potenciômetro e converte esse valor em um sinal PWM (modulação por largura de pulso), enviado ao LED. Assim, ao girar o potenciômetro, o brilho do LED aumenta e diminui gradualmente. Com Arduino Core 3.0+, você pode usar `analogWrite()` diretamente; no ESP32-S2/S3, a resolução do ADC é fixada em 12 bits.

Medidor ultrassônico de distância HC-SR04 com ESP32
O sensor ultrassônico HC-SR04 calcula a distância medindo o tempo que a onda sonora emitida leva para atingir um objeto e retornar (tempo de voo). Neste projeto, enviaremos um pulso de 10 microssegundos do ESP32 ao pino TRIG do sensor e leremos a duração do eco no pino ECHO com `pulseIn()`. Exibiremos a distância calculada em centímetros em um LCD I2C 16x2. Como o HC-SR04 opera a 5V, é preciso usar um **divisor de tensão** no pino ECHO; caso contrário, o GPIO de 3,3V do ESP32 será danificado.

Temperatura e umidade com ESP32 e DHT22 (com display LCD)
Este projeto mede a temperatura e a umidade do ambiente com um sensor DHT22 e exibe os dados em tempo real em um LCD I2C 16x2. Os dados são lidos do sensor pelo protocolo de um fio (one-wire) com a biblioteca Adafruit DHT. Este projeto serve de base para estações meteorológicas IoT, automação residencial ou sistemas de monitoramento ambiental em estufas. A comunicação com o DHT22 é feita pelo pino GPIO 4 do ESP32.

Servo motor com ESP32 (controle por potenciômetro)
Neste projeto, controlamos um servo motor SG90 com um potenciômetro. Ajustamos o ângulo do servo mapeando o valor analógico lido do potenciômetro para a faixa de 0 a 180 graus. A biblioteca ESP32Servo gera sinais para o servo nos GPIOs do ESP32 adequados e capazes de operar como saída; este projeto usa o GPIO 18. Esse é um método básico de controle para braços robóticos, estabilizadores de câmera e mecanismos de portas automáticas.

Display LCD I2C com ESP32 (16x2)
Neste projeto, exibimos texto conectando um display LCD de 16x2 caracteres ao ESP32 pelo protocolo I2C. Com o I2C, controlamos o display usando apenas dois pinos de dados (SDA e SCL), dispensando o uso de seis ou mais pinos da conexão paralela tradicional. O código mostra uma mensagem fixa na primeira linha e um contador que aumenta a cada segundo na segunda linha. Na inicialização, também executamos um scanner I2C para mostrar o endereço do display no Monitor Serial (geralmente 0x27 ou 0x3F).

Relógio digital com ESP32 e RTC DS1307 (I2C + LCD)
Neste projeto, exibimos a hora e a data em um display LCD I2C 16x2 usando o módulo de relógio de tempo real (RTC) DS1307. O DS1307 é um RTC com bateria de reserva que mantém a hora mesmo quando o ESP32 é desligado. Os dois módulos compartilham o mesmo barramento I2C (SDA/SCL), permitindo aprender a controlar vários dispositivos com apenas dois fios de sinal. Você aprenderá na prática o protocolo de comunicação I2C, o funcionamento dos módulos RTC e a exibição de dados dinâmicos em um LCD.

Iluminação automática com ESP32 e sensor de movimento PIR
Neste projeto, usaremos o sensor de movimento PIR HC-SR501 para detectar quando alguém entra no cômodo e acender o LED automaticamente. Acompanharemos o tempo em que o LED fica aceso com `millis()`. Cada leitura HIGH do sensor atualizará o instante do último movimento, e o LED apagará pelo menos 10 segundos após a última leitura HIGH. O código atual também espera 50 ms em cada ciclo com `delay(50)`, portanto o laço da aplicação não é totalmente livre de bloqueios.

Alarme detector de gás e fumaça com ESP32 e MQ-2
Neste projeto, um módulo sensor de gás MQ-2 detecta gases combustíveis (LPG, metano e propano) e fumaça, acionando um alarme tipo sirene em um buzzer passivo. A saída digital de limiar (DO) do sensor é conectada ao GPIO 4 do ESP32. Quando a concentração de gás ou fumaça ultrapassa o limiar, DO passa para LOW e o alarme é acionado. A sensibilidade é ajustada pelo potenciômetro do módulo. O buzzer passivo é acionado com `tone()` para criar um efeito de sirene que alterna entre duas frequências.

Leitor de cartões RFID RC522 com ESP32 e LCD
Neste projeto, vamos conectar o módulo RFID RC522, baseado no MFRC522, ao ESP32 via SPI e ler o UID do cartão ou da etiqueta. Isso serve de base para aplicações como fechaduras, sistemas de associados e controle de acesso. Vamos exibir o UID lido em um display LCD; nesta versão, ele não é comparado com uma lista de cartões autorizados. **ATENÇÃO:** o RC522 funciona apenas com **3,3V**; alimentá-lo com 5V queima o módulo!

Controle remoto com receptor IR, ESP32 e display LCD
Neste projeto, usamos o módulo receptor IR TSOP4838 para captar sinais de um controle remoto de TV, ar-condicionado ou outro controle infravermelho com o ESP32. Com a biblioteca IRremote v4, exibimos os códigos brutos decodificados diferentes de zero no display LCD I2C. Este exemplo serve para identificar os códigos do controle remoto; não inclui ligar ou desligar um LED nem ajustar seu brilho pelo controle. É um ótimo ponto de partida para usar controles antigos em uma casa inteligente.

Display TM1637 de 4 dígitos e 7 segmentos com ESP32
Vamos controlar um módulo de display de 4 dígitos e 7 segmentos com driver TM1637 usando um ESP32. Com apenas 2 pinos GPIO (CLK e DIO), executamos um contador de 0 a 9.999, ajustamos o nível de brilho e exibimos o caractere de dois-pontos (`:`) no centro, como em um relógio. Com a biblioteca TM1637Display, fica muito fácil controlar números, valores hexadecimais, segmentos e strings.

Controle de fita WS2812B NeoPixel com ESP32
Os LEDs endereçáveis WS2812B (NeoPixel) são LEDs RGB inteligentes que podem ser controlados em cadeia por um único pino de dados. Neste projeto, vamos controlar uma fita WS2812B de 8 LEDs com a biblioteca Adafruit_NeoPixel para criar uma animação suave de arco-íris. Embora o nível lógico de 3,3V do ESP32 funcione sem problemas na maioria dos lotes de WS2812B, vamos mostrar uma solução com um resistor de 470Ω em série e um capacitor de 1.000µF para casos de instabilidade.

Alarme de movimento com ESP32
Neste projeto com ESP32 e sensor PIR, um buzzer emite um alarme sonoro ao detectar movimento. É uma aplicação simples e de baixo custo de um sistema de segurança. (As imagens são ilustrativas; faça as conexões conforme o texto.)

Olhos de robô com ESP32 (display OLED + sensor de toque TTP223)
Um robô de mesa com sentimentos! O **ESP32** desenha em um **OLED de 0,96 polegada** dois olhos que olham ao redor e piscam sozinhos. Toque no **sensor de toque TTP223** e o robô fica feliz; mantenha o toque e os olhos viram corações; toque muitas vezes seguidas e ele fica bravo; ignore-o por 20 segundos e ele dorme. Um **buzzer passivo** dá a cada humor seu próprio som: máquina de estados, animação com formas e áudio sem bloqueio em um só projeto.

Jogo do dinossauro T-Rex Run com ESP32 (display OLED + botão + buzzer)
O jogo do dinossauro do Chrome aquele de quando falta internet, agora na sua mesa! O **ESP32** desenha um dinossauro correndo em um **OLED de 0,96 polegada**; pressione o **botão** para pular enquanto os cactos aceleram. A pontuação e o recorde ficam na linha superior, e o recorde é salvo na memória flash do ESP32 com **Preferences**, e não se perde sem energia. É a versão ESP32 do OLED T-Rex Run com Arduino, com um **buzzer passivo** para os sons de pulo, 100 pontos e colisão.

Alarme de tremores com ESP32 (MPU-6050 + display OLED + buzzer)
Este display percebe quando sua mesa começa a tremer! O **ESP32** mede a vibração com um acelerômetro **MPU-6050** e desenha um traçado de sismógrafo em tempo real em um **OLED de 0,96 polegada**. Quando o tremor supera o limite, um **buzzer passivo** toca uma sirene e um **LED vermelho** pisca; um único botão silencia e reinicia o alarme. O alarme exige três leituras consecutivas acima do limite; um pico de apenas uma leitura é descartado, mas uma única batida com vibrações que durem o…

Display de cotações de ouro e moedas com ESP32 (Wi-Fi + display OLED + botão)
Qual é a cotação do ouro agora? Não precisa olhar o celular! O **ESP32** se conecta ao Wi-Fi, busca as cotações de **ouro por grama**, **dólar americano** e **euro** em uma fonte JSON gratuita que não exige chave e as mostra em um **OLED de 0,96 polegada**. As cotações são atualizadas a cada 60 segundos; o **botão** troca de página e um toque longo atualiza os dados na hora. Se a internet cair, os últimos valores continuam no display com a indicação `OFFLINE`.

Relógio de horários de oração com ESP32 (Wi-Fi + display OLED + buzzer)
Quanto falta para a oração do pôr do sol? O **ESP32** obtém a hora pela internet, busca os horários de oração da sua cidade pelo método Diyanet e mostra a próxima oração com uma **contagem regressiva** grande em um **OLED de 0,96 polegada**. Quando chega a hora, um **buzzer passivo** toca uma melodia curta e suave. Pressione o **botão** para listar todos os horários de hoje ou mantenha-o pressionado para testar o alerta na hora em modo de demonstração.

Corrida de cliques para dois com ESP32 (display OLED + 2 botões + buzzer)
Desafie um amigo para uma corrida de cliques de 10 segundos! Cada jogador aperta seu **botão** para se preparar e, após a contagem 3-2-1, clica o mais rápido que puder. O **ESP32** move duas barras lado a lado em um **OLED de 0,96 polegada**, com o tempo restante, os dois placares e quem está na frente. No fim, aparecem o vencedor e os cliques por segundo, e o recorde fica salvo com **Preferences**. Um **buzzer passivo** dá um clique diferente a cada jogador, um apito e uma fanfarra.

Jogo de caça-níqueis com ESP32 (display OLED + botão + buzzer)
Puxe a alavanca e veja os rolos girarem! Este projeto **ESP32** gira três rolos com ícones de cereja, sino, BAR e 7 em um **OLED de 0,96 polegada**, com desaceleração realista, usando um único **botão**. Os créditos são virtuais, sem dinheiro real: o objetivo é aprender a **probabilidade** e os números aleatórios por trás dos jogos de azar. Se os dois primeiros rolos coincidirem, o terceiro gira mais para criar suspense; 7-7-7 toca uma melodia de JACKPOT, e **Preferences** salva os créditos.

Mini caixa de música com ESP32 (display OLED + 3 botões + buzzer)
Três botões, um buzzer e cinco melodias clássicas: uma caixa de música de bolso com **ESP32**! O **OLED de 0,96 polegada** mostra a lista de músicas, e os **botões** anterior, reproduzir/pausar e próxima navegam entre Ode to Joy, Für Elise, Jingle Bells, Happy Birthday e Twinkle Twinkle. Na reprodução, o nome da nota aparece e sua tecla acende em um **teclado de piano** de duas oitavas, com tempo decorrido e barra de progresso. As melodias são de domínio público e tocam em um **buzzer passivo**.
Advanced18 projects

Conexão Wi-Fi STA com ESP32 e display LCD
Neste projeto, conectamos o ESP32 à rede Wi-Fi de casa no modo estação (STA), de forma segura e tolerante a falhas. Guardamos o SSID e a senha em um arquivo `secrets.h` separado para evitar que sejam expostos no Git, configuramos um mecanismo de reconexão automática e exibimos o nível de sinal RSSI e o endereço IP em um display LCD I2C. O LED integrado funciona como indicador de status. É um gerenciador de conexão pronto para uso em produção.

Hora exata pela internet com ESP32 e NTP
O ESP32 se conecta ao Wi-Fi e obtém a hora exata com precisão de milissegundos de servidores NTP (Network Time Protocol). Com a função `configTzTime()`, o fuso horário configurado (TRT, UTC+3 neste exemplo) é aplicado automaticamente, e as mudanças nos países que adotam horário de verão são gerenciadas automaticamente por uma string POSIX TZ. A hora é exibida tanto no Monitor Serial quanto em um LCD I2C opcional.

Servidor web assíncrono com ESP32 (IP no LCD)
Neste projeto, transformamos o ESP32 em um **servidor web assíncrono** que você pode controlar pelo celular ou computador na mesma rede Wi-Fi. Com a biblioteca ESPAsyncWebServer, o servidor processa várias requisições ao mesmo tempo (ao contrário do `WebServer.h` tradicional, que bloqueia a execução ao processar uma requisição). Você poderá abrir o endereço IP do ESP32 no navegador e clicar nos botões ON/OFF (as rotas `/on` e `/off`) para ligar e desligar o LED conectado ao GPIO 5.

Contador WebSocket com ESP32 (2 botões + LCD + web em tempo real)
Neste projeto, dois botões conectados ao ESP32 (GPIO 5 aumenta, GPIO 4 diminui) alteram um contador. O valor é atualizado instantaneamente no LCD I2C 16x2 e, com o suporte a WebSocket do ESPAsyncWebServer, em todos os navegadores conectados, sem recarregar a página. Em vez de consultas periódicas por HTTP, usamos uma única conexão persistente, e o ESP32 envia o novo valor a todos com ws.textAll().

ESP32 mDNS: acesso via bluegrays-esp.local (com display LCD)
Neste projeto, adicionamos o serviço mDNS (Multicast DNS) ao ESP32 para acessar o dispositivo por um nome de host fácil de ler, como `bluegrays-esp.local`, em vez de um endereço IP. Mesmo que o IP atribuído pelo DHCP mude, você pode acessar o dispositivo pelo mesmo nome. Também executamos um pequeno servidor web no dispositivo para enviar comandos de controle do LED pelo navegador no endereço `http://bluegrays-esp.local/`.

Atualização OTA no ESP32 — firmware sem fio (com display LCD)
Neste projeto, você aprende a carregar um novo firmware no ESP32 por Wi-Fi, sem cabo USB. Com a biblioteca `ArduinoOTA`, o ESP32 fica visível na rede e aparece automaticamente como `bluegrays-ota` na aba "Porta de rede" do Arduino IDE. A primeira carga é feita por USB, e todas as atualizações seguintes são sem fio — um recurso essencial para dispositivos em campo. O LCD I2C mostra o estado do Wi-Fi, o IP, o nome do host, a porcentagem de envio por OTA e as mensagens de erro em turco e inglês.

ESP32 HTTPClient + API de clima (com display LCD)
Neste projeto, usamos o ESP32 para fazer uma chamada REST à API de clima wttr.in pela internet com `HTTPClient.h`. Interpretamos a resposta JSON com ArduinoJson v7 e mostramos cidade, temperatura, umidade, condições do tempo e vento em um display LCD I2C, em turco e inglês. O wttr.in é grátis e não exige chave de API — basta informar o nome de uma cidade para consultar o clima atual. Os dados se atualizam sozinhos a cada 30 minutos, e o LED dá um retorno visual diferente para cada tela.

ESP32 HTTPClient + API de clima (com display OLED SSD1306)
Neste projeto, usamos o ESP32 para fazer uma chamada REST à API de clima wttr.in pela internet com `HTTPClient.h`. Diferentemente da versão anterior com LCD I2C, aqui usamos um display OLED SSD1306 (128×64), que permite usar fontes grandes, ícones vetoriais e uma apresentação visual rica em uma única tela. Sete ícones vetoriais de condições do tempo (ensolarado, parcialmente nublado, nublado, chuvoso, com neve, com tempestade e com neblina) são desenhados durante a execução, sem arquivos bitmap.

ESP32 em sono profundo — Economia de bateria (OLED + contador na RAM RTC)
O modo de sono profundo do ESP32 reduz o consumo de corrente para ~10 µA ao desligar a CPU e a maioria dos periféricos, sendo essencial para dispositivos IoT alimentados por bateria. Neste projeto, usamos três fontes de despertar: um temporizador (15 segundos), um pino externo (EXT0 — botão no GPIO 33) e toque (T0/GPIO 4). As variáveis marcadas com `RTC_DATA_ATTR` são preservadas durante o sono profundo, mantendo os contadores de inicializações e de despertares por temporizador e botão.

Contador de rakats para oração com ESP32 (HC-SR04 + OLED SSD1306 + 2 botões)
Você às vezes esquece quantos rakats já fez durante a oração? Este projeto cria um contador de rakats que fica ao lado do tapete de oração e conta as prostrações quando você aproxima a mão. O sensor ultrassônico de distância HC-SR04 detecta a aproximação da mão, o display OLED SSD1306 mostra a contagem de rakats e dois botões permitem selecionar 2, 3 ou 4 rakats e zerar a contagem.

Fechadura RFID com ESP32 (RC522 + servo + OLED + buzzer + LED)
Vamos montar uma fechadura inteligente com ESP32, módulo RFID RC522, servo motor SG90, display OLED SSD1306, buzzer ativo e 2 LEDs. Ao ler um cartão, seu UID é comparado à lista de cartões autorizados definida no código. Se estiver autorizado, o servo motor gira para abrir a fechadura (LED verde + 2 bipes curtos), que trava novamente após 5 segundos. Com um cartão não autorizado, o LED vermelho acende, 3 bipes rápidos soam e o UID lido aparece no OLED.

Luminária com mistura de cores e ESP32 (3 potenciômetros + LED RGB + OLED)
Uma luminária inteligente que permite misturar a cor que você quiser girando três potenciômetros com o ESP32! Ao girar os potenciômetros de vermelho, verde e azul, o LED RGB de cátodo comum muda de cor em tempo real. O display OLED SSD1306 mostra os valores de cada cor na faixa de 0–255, barras de preenchimento e o código HEX da cor para a web, como #FF8040.

Sistema inteligente de irrigação de plantas com ESP32
Neste projeto, foi desenvolvido um sistema automático de irrigação de plantas com ESP32 e um sensor de umidade do solo. O sensor mede continuamente a umidade do solo. Quando ela fica abaixo do limite definido, o ESP32 aciona o relé para ligar a bomba de água e regar a planta. Quando o solo está úmido o suficiente, a bomba para automaticamente. O projeto permite regar as plantas regularmente e economizar água. _______________________________ Conexões

Iluminação inteligente com ESP32 (PIR + LDR + relé + OLED)
Transforme a iluminação do corredor, banheiro ou despensa em iluminação inteligente com ESP32! Com um sensor de movimento PIR, um sensor de luz LDR e um módulo relé, montamos o cenário clássico de "acender a luz ao detectar movimento no escuro" — se o ambiente já estiver claro, o movimento NÃO aciona a luz, economizando energia durante o dia. A luz fica acesa por 30 segundos; se o movimento continuar, o temporizador reinicia e a luz permanece acesa por mais tempo.

Sensor de estacionamento com ESP32 (HC-SR04 + barra de 5 LEDs + buzzer + OLED)
A versão com ESP32 do sensor de estacionamento de carro! Usamos o sensor ultrassônico HC-SR04 para medir a distância até o objeto à sua frente. Conforme a distância diminui, a barra de 5 LEDs vai se preenchendo (verde → amarelo → vermelho) e o intervalo entre os bipes do buzzer diminui. Quando o objeto chega muito perto (menos de 10 cm), o alarme soa continuamente e todos os LEDs acendem.

Controle remoto universal IR com ESP32 (receptor IR + controle remoto + 3 LEDs + buzzer + OLED)
Com o ESP32, você pode ler os sinais de um controle remoto IR comum e usá-lo para controlar seu próprio dispositivo! Neste projeto, usamos um receptor infravermelho (protocolo NEC, 38 kHz) para captar os sinais de um controle IR de 20 botões. Definimos ações diferentes para cada botão: os botões 1, 2 e 3 ligam e desligam três LEDs separados; o botão PWR apaga todos; e os números 4–9 exibem indicações especiais no OLED.

Registrador de temperatura com ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
Monte um registrador de temperatura com data e hora usando ESP32! Leia a temperatura e a umidade do DHT22 a cada minuto, obtenha a hora real do DS1307 RTC e grave os dados em CSV no cartão microSD. O OLED exibe a temperatura atual em letras grandes, a porcentagem de umidade, a data e a hora e o contador de registros. O arquivo `/temp_log.csv` no cartão SD pode ser aberto no Excel, Google Sheets ou pandas do Python para análise — ideal para monitorar estufas, acompanhar a temperatura de casa ou…

Alarme de movimento com ESP32 (PIR + buzzer + LED + Telegram)
Um sistema de alarme de segurança inteligente que aciona o buzzer e o LED quando o sensor PIR detecta movimento e, ao mesmo tempo, envia uma notificação instantânea ao proprietário pelo Telegram. Inclui um intervalo de espera de 30 segundos para limitar a frequência dos alarmes repetidos; esse mecanismo não valida as detecções do PIR nem elimina disparos falsos. Pode ser usado na segurança de casas, no monitoramento de garagens, depósitos ou salas de trabalho.
Parts and tools
The parts used most often in these projects, calculators that help while you build, and step-by-step guides.
Frequently asked questions
What is the difference between the ESP32 and Arduino?
The ESP32 has built-in Wi-Fi and Bluetooth, a dual-core 240 MHz processor and much more memory. The Arduino Uno is a simpler 5 V board that forgives mistakes. The ESP32 is better for connected projects, the Uno for your first steps in electronics.
Can the ESP32 be programmed with the Arduino IDE?
Yes. Add Espressif's board manager URL in the Arduino IDE preferences and install the esp32 package from the Boards Manager. Then select ESP32 Dev Module as the board and upload your code.
Are ESP32 pins 5 V tolerant?
No. ESP32 GPIO pins work at 3.3 V and a 5 V signal can damage them. Use a voltage divider or a logic level shifter with sensors that output 5 V.
Which ESP32 board should I buy?
An ESP32 DevKit with the ESP32-WROOM-32 module is the most common board and has the most examples. For camera projects there is the ESP32-CAM, and for simpler Wi-Fi projects an ESP8266-based NodeMCU also works.
What IoT projects can you build with an ESP32?
Popular ESP32 projects include relays and LEDs controlled from a phone, a weather station that shows sensor data on a web page, a motion alarm that sends Telegram alerts, an NTP clock that gets the time from the internet and Bluetooth-controlled devices.
What should I do if code will not upload to my ESP32?
Make sure the USB cable carries data and that the CP2102 or CH340 driver is installed. If the upload hangs at “Connecting...”, hold the BOOT button on the board. The correct port and ESP32 Dev Module must be selected.










