Aprender

ESP32 projects for beginners, in the order to try them

Iniciante

Ou veja todas as aulas.

  • 503componentes na bancada
  • 44placas rodando agora
  • 1.00xtempo real, em todas as placas
ESP32 DevKit: um potenciômetro controla o brilho de um LEDlive0.000 s 0.00x
Clique para abrir no editor
O exemplo knob do ESP32: um potenciômetro no GPIO 32 define o brilho de um LED no GPIO 4, com a leitura bruta impressa.

O ESP32 é uma ótima primeira placa: custa mais ou menos o mesmo que um clone de Arduino, tem WiFi e roda o mesmo código Arduino. Esta página lista projetos para iniciantes na ordem que mais ensina, e todos já estão montados e rodando no Mokxi, então você pode experimentar no navegador antes de comprar um único componente.

O circuito acima é o projeto três, um potenciômetro que controla o brilho de um LED num ESP32 DevKit clássico. Aperte Rodar e gire o potenciômetro: o monitor serial imprime a leitura bruta e o ciclo de trabalho do PWM. No meio ele lê 1892, e não 2048, e chega a 4095 um pouco antes do potenciômetro estar no máximo. O motivo disso é a coisa mais útil que um iniciante pode aprender sobre o ADC do ESP32, e está explicado abaixo.

Antes de começar: três diferenças do ESP32

Ele funciona em 3,3 V. Um pino GPIO fornece 3,3 V e nunca pode receber 5 V. Sensores feitos para o Uno muitas vezes funcionam em 3,3 V, mas confira, e coloque um divisor ou um conversor de nível em qualquer sinal de 5 V que chegue na placa.

O ADC dele lê de 0 a 4095, doze bits, e não de 0 a 1023. Na atenuação padrão a leitura não é uma linha reta: ela satura em cerca de 3,1 V, então um potenciômetro ligado em 3,3 V chega a 4095 antes da hora e lê uns 1890 no meio. É exatamente isso que o circuito acima imprime.

Os números dos pinos são números de GPIO, e alguns pinos são especiais. No ESP32 clássico, os GPIO 34 a 39 são só de entrada, e alguns pinos decidem como o chip inicializa. A página de cada placa no Mokxi lista os pinos dela.

Projetos 1 a 4: pinos, PWM e o ADC

1. Piscar um LED. O primeiro sketch em qualquer placa: pinMode, digitalWrite e delay. No ESP32-C3 o LED fica no GPIO 8.

2. Um botão e um LED. Um botão de um pino até o terra com INPUT_PULLUP, acendendo o LED enquanto está pressionado. Ele ensina resistores de pull-up sem nenhum resistor.

3. Um potenciômetro que controla o brilho de um LED. O circuito acima: analogRead no GPIO 32 e analogWrite no GPIO 4. Ele ensina o ADC de 12 bits e o PWM.

4. Uma varredura de servo. Um SG90 num canal de PWM de 50 Hz, indo de uma ponta à outra. A largura do pulso é o ângulo, e o hardware LEDC do ESP32 mantém os pulsos saindo enquanto o núcleo faz outro trabalho.

Projetos 5 a 7: sensores e displays

5. Um arco-íris de NeoPixel. Dezesseis LEDs WS2812B num único pino de dados de um ESP32-C3, com uma roda de cores correndo por eles. Numa placa de verdade, a biblioteca Adafruit NeoPixel cuida da temporização para você.

6. Um monitor de temperatura e umidade. Um DHT22 num pino, lido a cada dois segundos e impresso no monitor serial. Acrescente um OLED SSD1306 no I2C para mostrar os valores sem computador.

7. Um sensor de ambiente. Um DHT22, um sensor de luz BH1750 e um sensor de movimento PIR num só ESP32-C3, a montagem com que muitos usuários de Home Assistant começam. Cada leitura é impressa como a mensagem MQTT que ela enviaria.

Projetos 8 a 10: WiFi

8. Conectar ao WiFi. WiFi.begin(), esperar a conexão, imprimir o endereço IP. No Mokxi a rede é simulada dentro do navegador, e nada sai do seu computador a não ser que você entre na sua conta e ative a internet de verdade. Mude a senha de propósito e a conexão falha depois de cinco segundos, como acontece numa placa de verdade.

9. Uma página web que liga uma lâmpada. Um WebServer no ESP32 serve uma página com dois botões; aperte um deles no painel Web e o LED obedece. É o projeto que faz o ESP32 fazer sentido para a maioria das pessoas.

10. Buscar dados com HTTP. O HTTPClient pede um JSON a um servidor, e o sketch extrai os números. No Mokxi ele conversa com um servidor simulado cujas respostas você pode editar, e uma requisição a um site de verdade é recusada com uma mensagem clara, a não ser que você entre na sua conta e ative a internet de verdade.

Qual placa ESP32 comprar

Para uma primeira placa, um ESP32 DevKit V1 (o ESP32 clássico) ou um ESP32-C3 SuperMini. O DevKit tem mais pinos e mais tutoriais. O SuperMini é minúsculo e barato e tem USB nativo. O ESP32-S3 é a escolha para câmeras, displays e mais memória. Os três, e vários outros, rodam no Mokxi, então você pode testar o seu projeto em cada um antes de escolher.

Se você já tem um Arduino Uno, faça os dois primeiros projetos nele; eles não precisam de nenhuma mudança além dos números dos pinos. A página que compara o Uno, o ESP32 e o Pico vai mais a fundo.

Erros comuns de iniciante

Ligar 5 V num GPIO. O ESP32 é um chip de 3,3 V, e 5 V num pino pode danificá-lo.

Esperar que o analogRead seja uma linha reta de 0 a 3,3 V. Na atenuação padrão ele lê uns 1890 no meio do potenciômetro e 4095 a partir de uns 3,1 V, como o circuito acima mostra; use analogReadMilliVolts() para ler em volts.

Usar pinos do ADC2 com o WiFi ligado. No ESP32 clássico, os pinos do ADC2 não podem ser lidos enquanto o WiFi está rodando. Use pinos do ADC1, como os GPIO 32 a 39, para qualquer leitura analógica num projeto com WiFi.

Escolher um pino que afeta a inicialização. Se a placa não liga com o seu circuito conectado, tire o componente dos pinos de strapping listados na página da placa.

Perguntas

Qual é um bom primeiro projeto com ESP32?

Piscar um LED, depois um botão, depois um potenciômetro que controla o brilho de um LED. Esses três ensinam saída digital, entrada com pull-up, o ADC de 12 bits e PWM. Depois disso, uma página web que liga uma lâmpada mostra para que serve o WiFi.

Dá para experimentar projetos de ESP32 sem a placa?

Dá. Todos os projetos desta página rodam no Mokxi, no seu navegador, com o código Arduino compilado e rodando num ESP32 simulado. Não precisa de conta para abrir e rodar.

Projetos de ESP32 usam a Arduino IDE?

A maioria dos tutoriais para iniciantes usa, com o pacote de placas ESP32 instalado. O código desta página é código Arduino e faz upload pela Arduino IDE sem nenhuma mudança.

Por que o analogRead do meu ESP32 chega a 4095 antes de 3,3 V?

Na atenuação padrão de 11 dB, a leitura bruta de um ESP32 de verdade satura em cerca de 3,1 V e faz uma curva no caminho, então o meio de um potenciômetro em 3,3 V lê uns 1890, e não 2048. Use analogReadMilliVolts() para ter a leitura em milivolts.

Monte isto de verdade

Abra o editor, mude um valor e veja o número mudar junto. Nada para instalar, e não precisa de conta.