Controlar ESP32 pelo celular: BlueGrays IoT em 5 passos
Como controlar o ESP32 pelo celular com o BlueGrays IoT: ligação do relé e do DHT22, código pronto do Ohmi, 5 passos de configuração, gráficos e erros comuns.
Controlar o ESP32 pelo celular significa ligar e desligar um relé, um LED ou um motor da placa pelo telefone que está no seu bolso e ver os valores dos sensores na tela. É também o primeiro passo mais divertido para aprender IoT. Como o ESP32 já tem Wi-Fi de 2,4 GHz e Bluetooth embutidos, você não precisa de nenhum módulo extra. A pergunta é qual caminho escolher. Para controlar o ESP32 por app, você pode escrever seu próprio servidor web, conectar via Bluetooth ou criar um bot do Telegram. Painéis na nuvem como Blynk e Arduino IoT Cloud também são uma opção. Cada método tem tempo de configuração, alcance e limites diferentes.
Neste guia você vai montar, passo a passo, o caminho mais curto: o recurso BlueGrays IoT do app BlueGrays. O Ohmi prepara o código para você. Você só monta o circuito e carrega o código no ESP32 pela Arduino IDE. A placa se conecta ao servidor da BlueGrays por uma conexão criptografada, então o celular e a placa não precisam estar na mesma rede. Dá para acender a lâmpada de casa pelos dados móveis enquanto você está no trabalho. Primeiro você vai fazer um interruptor de lâmpada com relé. Depois vai acrescentar um DHT22 ao circuito e levar a temperatura e a umidade para o celular como valor ao vivo e gráfico. No fim do texto há uma comparação com os outros métodos e uma tabela com a solução dos erros mais comuns.

5 formas de controlar o ESP32 pelo celular
- Servidor web local: o ESP32 serve uma página web e você acessa o endereço IP da placa pelo navegador do celular. Não precisa de conta extra, mas normalmente só funciona dentro da mesma rede Wi-Fi. Detalhes no texto ESP32 Async Web Server.
- Bluetooth Classic e BLE: não precisa de internet nem de roteador, o celular se conecta direto à placa. Em ambientes internos o alcance costuma ficar em torno de 10 metros. Explicamos os dois tipos no guia ESP32 Bluetooth.
- Bot do Telegram: você manda comandos para a placa por mensagem e recebe notificações dela. Funciona fora de casa também, mas não oferece um painel com gráficos ou controles deslizantes. Para configurar, veja o texto Bot do Telegram com ESP32.
- Painéis na nuvem (Blynk, Arduino IoT Cloud): você define modelos e variáveis no console web, escreve o código e desenha o painel no celular por conta própria. É um caminho flexível, mas exige aprender várias telas e conceitos diferentes. Para o Blynk, já temos o guia Blynk com ESP32.
- BlueGrays IoT: no app, você escolhe um dos 8 modelos prontos. O Ohmi prepara o código com as suas configurações de pinos e a sua chave do dispositivo. No celular, interruptor, controle deslizante, seletor de cor e gráficos aparecem sozinhos conforme o modelo. Você não precisa desenhar painel nem montar servidor.
O que você precisa: lista de materiais e software
| Material | Para que serve? | Observação |
|---|---|---|
| Placa de desenvolvimento ESP32 | Controlador com Wi-Fi | Compatível com ESP32 Dev Module, WROOM, S3 e C3 |
| Cabo USB de dados | Carregar o código e alimentar a placa | Com cabo só de carga, a porta não aparece |
| Módulo relé de 5 V | Chavear a lâmpada | Prefira módulo com optoacoplador que aciona com sinal de 3,3 V |
| LED + resistor de 220 Ω | Primeiro teste seguro no lugar do relé | No código, use RELAY_ACTIVE_LOW = false |
| DHT22 (opcional) | Medir temperatura e umidade | Para o modelo Estação ambiente |
| Protoboard e jumpers | Fazer as ligações | Jumpers macho-fêmea são práticos para os módulos |
| Rede Wi-Fi de 2,4 GHz | Acesso da placa à internet | A placa não se conecta a redes de 5 GHz |
| Arduino IDE | Carregar o código na placa | Precisa do pacote esp32 da Espressif, versão 3.x |
| App BlueGrays | Configuração e controle pelo celular | iOS e Android; o primeiro dispositivo é grátis |
Como funciona o controle do ESP32 pelo app?
No BlueGrays IoT, o celular e o ESP32 não se conectam diretamente. Ao ligar, a placa primeiro entra na rede Wi-Fi de 2,4 GHz da sua casa. Em seguida abre uma conexão WebSocket criptografada (TLS) com o servidor da BlueGrays pela porta 443 e mantém essa conexão sempre aberta. O app no celular se conecta ao mesmo servidor. Quando você toca no interruptor da lâmpada, o comando vai do celular para o servidor e do servidor para a placa. Como a conexão já está aberta, o comando chega sem espera. O valor de temperatura enviado pela placa faz o mesmo caminho no sentido contrário. A 443 é a mesma porta usada pelos sites. Por isso você não precisa configurar redirecionamento de portas no roteador, montar seu próprio servidor nem saber o IP da placa.
O que identifica a placa no servidor é a chave do dispositivo. Essa chave é um texto secreto que começa com bgd_, gerado pelo app quando você cria o dispositivo. A placa envia a chave no cabeçalho ao abrir a conexão, e o servidor repassa o comando vindo do celular para a placa certa. A chave não é exibida no Monitor Serial. Se a conexão cair, a biblioteca BlueGraysIoT tenta reconectar sozinha, em intervalos cada vez maiores. Os valores medidos enquanto estava offline são enviados quando ela volta, e depois de uma queda de energia o último estado dos interruptores é restaurado. Basta que a placa e o celular tenham acesso à internet: a placa pode estar no Wi-Fi de casa e o celular nos dados móveis em outra cidade.
Circuito: ligar o módulo relé ao ESP32
Nos modelos Lâmpada com relé e Estação ambiente, os pinos padrão são estes: o terminal IN do relé vai no GPIO26 e o pino de dados do DHT22 vai no GPIO4. Você pode trocar esses pinos no passo 3 da configuração. Confira a pinagem da sua placa na ferramenta Pinagem. Em algumas placas o pino de 5 V vem marcado como VIN, em outras como 5V.
| Componente | Pino do componente | Pino do ESP32 | Observação |
|---|---|---|---|
| Módulo relé | VCC | 5V (VIN) | A bobina precisa de 5 V; com a placa alimentada pelo USB, esse pino tem cerca de 5 V |
| Módulo relé | GND | GND | GND comum |
| Módulo relé | IN | GPIO26 | Sinal de controle de 3,3 V |
| LED (para teste) | Perna longa (+) | GPIO26 | Com resistor de 220 Ω; perna curta no GND, no código RELAY_ACTIVE_LOW = false |
| DHT22 | VCC | 3V3 | Para a Estação ambiente |
| DHT22 | DATA | GPIO4 | O sensor avulso precisa de pull-up de 10 kΩ; nos módulos ele já vem na placa |
| DHT22 | GND | GND | GND comum |
Configuração do BlueGrays IoT: os 5 passos no app
No app, siga o caminho Minha oficina › Meus dispositivos › Adicionar dispositivo. No topo da tela você vê um contador como “Passo 1 / 5”. Os três primeiros passos são no celular, o quarto no computador e o quinto de novo no celular.
- Placa e modelo: em “Qual é a sua placa?”, escolha ESP32; em “O que ela vai fazer?”, marque um dos 8 modelos. Para o primeiro teste, “Lâmpada com relé” ou a “Estação ambiente” com sensor são bons pontos de partida. Dê ao dispositivo um nome fácil de reconhecer, como “Lâmpada da sala”.
- Componentes e circuito: a lista “Separe os componentes” mostra as peças que o modelo pede. O esquema “Ligue os fios” desenha qual terminal vai em qual pino. Nos modelos com relé, aparece o aviso “Se for trabalhar com 220 V, faça isso com alguém que entende do assunto. Teste primeiro com um LED.”.
- Wi-Fi e código: digite o nome e a senha da rede Wi-Fi. O nome da rede precisa ser exatamente igual e ser da faixa de 2,4 GHz. Se quiser, troque o GPIO26 e o GPIO4 por outros pinos na seção “Pinos de ligação”. Depois toque em “Criar dispositivo e gerar código”. O Ohmi prepara o código com a sua chave do dispositivo; passe o código para o computador com “Copiar código” ou “Compartilhar”.
- Carregar pela Arduino IDE: você carrega o código no ESP32. Explicamos os subpassos do app um por um na próxima seção.
- Conexão: a tela “Aguardando sua placa” avança sozinha assim que a placa se conecta ao servidor.
Passos 4 e 5: carregar o código e ver a conexão
- Se a Arduino IDE não estiver instalada, instale. Os passos estão no texto Como instalar a Arduino IDE.
- No Gerenciador de Placas, busque “esp32” e instale o pacote esp32 da Espressif. É preciso a versão 3.x desse pacote; se a antiga 2.x estiver instalada, atualize. A instalação do pacote também está no texto O que é ESP32?.
- Conecte a placa com um cabo USB de dados. Em Ferramentas › Placa, escolha ESP32 Dev Module (ou o modelo da sua placa); em Ferramentas › Porta, escolha a porta que acabou de aparecer. Se a porta não aparecer, troque o cabo. Depois instale o driver CP210x ou CH340, conforme o chip USB da sua placa.
- No Gerenciador de Bibliotecas, busque BlueGraysIoT e clique em Instalar. Quando perguntar sobre as dependências, escolha “Instalar tudo”; assim WebSockets, ArduinoJson e DHT sensor library também são instaladas. Se travar, veja o guia Como instalar biblioteca no Arduino.
- Abra um sketch novo, apague o conteúdo, cole o código copiado do app e clique em Carregar. Se o painel inferior travar em “Connecting…”, segure o botão BOOT da placa. Solte quando as porcentagens de gravação começarem a aparecer.
- Abra o Monitor Serial e ajuste a velocidade para 115200. Primeiro deve aparecer “Wi-Fi connected” e, alguns segundos depois, a linha “BlueGrays IoT: connected”.
Assim que a mensagem de conectado aparecer no Monitor Serial, a tela “Aguardando sua placa” no celular passa para “Conectado: os valores agora chegam em tempo real.”. Agora toque no interruptor da lâmpada: você deve ouvir o clique do relé ou ver o LED acender. Se a placa não se conectar em 2 minutos, o app pede para você verificar três coisas. Você escolheu a rede de 2,4 GHz? O Monitor Serial mostra “Wi-Fi connected”? As maiúsculas e minúsculas da senha estão certas? Se nem a primeira linha aparece, o problema está no Wi-Fi. Nesse caso, a lista de verificação do texto ESP32 não conecta ao Wi-Fi resolve.
Primeiro código: ligar e desligar a lâmpada pelo celular
O código que o app gera para o modelo “Lâmpada com relé” é parecido com o abaixo. As três primeiras linhas já vêm preenchidas com a sua chave do dispositivo, o nome da rede e a senha; aqui aparecem com marcadores. O resto do código é curto: uma função do relé, a definição de um interruptor e um loop() de uma linha só.
1/*
2 * Salon lambası · BlueGrays IoT
3 * BlueGrays · bluegrays.com
4 * Bu kodu paylaşma: içinde cihaz anahtarın ve Wi-Fi şifren var.
5 * Do not share this code: it contains your device key and Wi-Fi password.
6 */
7
8#include <BlueGraysIoT.h>
9
10// Uygulama bu üç satırı senin bilgilerinle doldurur / The app fills these three lines with your details
11const char *DEVICE_KEY = "bgd_UYGULAMADAKI_ANAHTARIN";
12const char *WIFI_NAME = "EV_AGI_2_4_GHZ";
13const char *WIFI_PASSWORD = "WIFI_SIFREN";
14
15BlueGraysIoT bg(DEVICE_KEY);
16
17const int RELAY_PIN = 26;
18const bool RELAY_ACTIVE_LOW = true; // çoğu röle modülü LOW ile çeker / most relay modules switch on LOW
19void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
20
21void setup() {
22 Serial.begin(115200);
23 pinMode(RELAY_PIN, OUTPUT);
24 setRelay(false); // açılışta lamba kapalı / lamp off at power-up
25 bg.onSwitch("lamba", setRelay); // uygulamadaki "Lamba" anahtarı / the "Lamba" switch in the app
26 bg.setDebug(Serial); // durum mesajları Seri Port Ekranı'na / status messages to the Serial Monitor
27 bg.setLanguage(BG_LANG_TR);
28 bg.begin(WIFI_NAME, WIFI_PASSWORD);
29}
30
31void loop() {
32 bg.loop(); // burada uzun delay() kullanma / avoid long delay() calls here
33}
34| Linha | Função |
|---|---|
| #include | Inclui a biblioteca; ela cuida do Wi-Fi, da conexão criptografada e da reconexão |
| DEVICE_KEY, WIFI_NAME, WIFI_PASSWORD | Chave do dispositivo (começa com bgd_), nome da rede de 2,4 GHz e senha; o app preenche |
| BlueGraysIoT bg(DEVICE_KEY) | Cria o objeto bg com a chave; todos os outros comandos são dados por esse objeto |
| RELAY_PIN = 26 | Pino ligado ao terminal IN do relé; se você trocou o pino no passo 3, verá outro número aqui |
| RELAY_ACTIVE_LOW = true | A maioria dos módulos relé aciona com sinal LOW; se estiver testando com LED, use false, senão funciona invertido |
| setRelay(bool on) | Quando on é true, escreve o nível ativo: LOW no módulo ativo em LOW, HIGH no outro |
| setRelay(false) (dentro do setup) | A lâmpada começa desligada quando a placa liga |
| bg.onSwitch("lamba", setRelay) | Chama a função setRelay com true ou false sempre que o interruptor Lâmpada do app muda |
| bg.setDebug(Serial) | Escreve as mensagens de estado da conexão no Monitor Serial |
| bg.setLanguage(BG_LANG_TR) | Mostra as mensagens de estado em turco |
| bg.begin(WIFI_NAME, WIFI_PASSWORD) | Inicia a conexão com a rede Wi-Fi e com o servidor da BlueGrays |
| bg.loop() | Processa os comandos recebidos e mantém a conexão viva; precisa ser chamado o tempo todo dentro do loop() |
Adicionar sensor: Estação ambiente (relé + DHT22)
Agora vamos ligar um DHT22 na mesma placa e enviar dados para o celular. Se você escolher o modelo “Estação ambiente” no app, além do interruptor da lâmpada aparecem os valores de temperatura (°C) e umidade (%) com gráficos. O DHT22 mede de -40 a 80 °C com precisão de cerca de ±0,5 °C. A umidade é medida na faixa de 0–100%, e o sensor pode ser lido no máximo uma vez a cada 2 segundos. Ligue o pino de dados no GPIO4, o VCC no 3V3 e o GND no GND. Comparamos o funcionamento da família DHT no texto Sensor de temperatura e umidade DHT11.
1/*
2 * Oda istasyonu · BlueGrays IoT
3 * BlueGrays · bluegrays.com
4 * Bu kodu paylaşma: içinde cihaz anahtarın ve Wi-Fi şifren var.
5 * Do not share this code: it contains your device key and Wi-Fi password.
6 */
7
8#include <BlueGraysIoT.h>
9#include <DHT.h>
10
11const char *DEVICE_KEY = "bgd_UYGULAMADAKI_ANAHTARIN";
12const char *WIFI_NAME = "EV_AGI_2_4_GHZ";
13const char *WIFI_PASSWORD = "WIFI_SIFREN";
14
15BlueGraysIoT bg(DEVICE_KEY);
16
17const int RELAY_PIN = 26;
18const bool RELAY_ACTIVE_LOW = true; // çoğu röle modülü LOW ile çeker / most relay modules switch on LOW
19void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
20DHT dht(4, DHT22); // DHT22 veri ucu GPIO4 / DHT22 data on GPIO4
21unsigned long lastReadMs = 0;
22
23void setup() {
24 Serial.begin(115200);
25 pinMode(RELAY_PIN, OUTPUT);
26 setRelay(false);
27 bg.onSwitch("lamba", setRelay);
28 dht.begin();
29 bg.setDeadband("sicaklik", 0.1); // 0,1 °C değişmeden gönderme / send only after a 0.1 °C change
30 bg.setDeadband("nem", 1.0); // %1 değişmeden gönderme / send only after a 1 % change
31 bg.setDebug(Serial);
32 bg.setLanguage(BG_LANG_TR);
33 bg.begin(WIFI_NAME, WIFI_PASSWORD);
34}
35
36void loop() {
37 bg.loop(); // burada uzun delay() kullanma / avoid long delay() calls here
38 if (millis() - lastReadMs >= 2000) { // DHT22 en fazla 2 saniyede bir okunur / DHT22 reads at most every 2 s
39 lastReadMs = millis();
40 bg.send("sicaklik", dht.readTemperature());
41 bg.send("nem", dht.readHumidity());
42 }
43}
44A parte do relé é igual à do primeiro código; há três novidades. A primeira é a linha bg.send("sicaklik", dht.readTemperature()): ela envia um valor da placa para o app, e o primeiro parâmetro é o nome da variável no app. A segunda é a linha bg.setDeadband("sicaklik", 0.1). Ela define a menor variação considerada: a temperatura só é reenviada quando muda 0,1 °C; para a umidade essa margem é 1%. A terceira é a verificação millis() - lastReadMs >= 2000 dentro do loop. O sensor é lido a cada 2 segundos, mas nesse meio-tempo o bg.loop() continua rodando sem espera. A biblioteca só envia o valor quando ele muda e não ultrapassa a taxa do plano. Entre dois envios da mesma variável passa no mínimo 1 segundo no plano grátis e 0,2 segundo no Premium. Esses limites são controlados no servidor; mudar os números no código não os ultrapassa. Se a temperatura do ambiente ficar em 23,4 °C por vários minutos, a placa não envia nada novo; quando chega a 23,5 °C, sai uma única mensagem. Com fio frouxo ou sem pull-up, a leitura fica inválida (NaN). Se o valor não chegar, verifique primeiro a ligação do GPIO4 e a alimentação.
O que você vê no celular?
- Estado: no topo da tela do dispositivo aparece Online ou Offline e, logo abaixo, a informação “Último dado há …”. É aqui que você confirma primeiro se a placa está mesmo conectada.
- Controles: no modelo de lâmpada aparece um interruptor liga/desliga. No modelo de fita RGB vêm o seletor de cor, o brilho de 0–100% e a escolha de efeito. No modelo de cortina há um controle deslizante de ângulo de 0–180°.
- Valores ao vivo e gráficos: há os intervalos de 1 h, 24 h, 7 dias e 30 dias. Nas visões de 7 e 30 dias aparece a média por hora. O gráfico mostra os valores Mínimo, Máximo e Último. Enquanto a placa continua conectada, um novo ponto é adicionado a cada minuto.
- Código e chave: aqui você também vê depois o código completo, a chave do dispositivo e os dados do Wi-Fi. Se precisar reprogramar a placa, copie o código daqui.
- Gerar nova chave: use se alguém viu sua chave ou se você trocou de placa. A chave antiga perde a validade na hora; basta carregar o novo código na placa uma vez.
- Remover dispositivo: o dispositivo e o histórico dos gráficos são apagados, e você recupera a vaga de dispositivo.
Grátis e Premium: quanto dá para usar?
O primeiro dispositivo é grátis. Para montar um interruptor de lâmpada ou uma estação ambiente com um ESP32, você não precisa de mais nada. Na estação ambiente, temperatura e umidade são duas variáveis separadas. No plano grátis, os valores ao vivo das duas chegam ao celular, mas o histórico do gráfico é guardado só para uma variável. As diferenças entre os planos estão abaixo; detalhes no texto O que o BlueGrays Premium desbloqueia?.
| Recurso | Grátis | Premium |
|---|---|---|
| Número de dispositivos | 1 | 10 |
| Variáveis com histórico de gráfico | 1 | 20 |
| Duração do histórico | 24 horas | 30 dias |
| Intervalo mínimo entre dois envios da mesma variável | 1 segundo | 0,2 segundo |
Comparação com os outros métodos
| Método | Acesso fora de casa | O que você faz na configuração | Painel e gráficos | Quando vale a pena? |
|---|---|---|---|---|
| Servidor web local | Normalmente não, só na mesma rede | Escrever o código do ESP32 e a página HTML | Você mesmo desenha | Painel de controle doméstico sem internet |
| Bluetooth / BLE | Não, cerca de 10 m | Código da placa e um app no celular | Depende do app usado | Lugares sem roteador, controle de perto |
| Bot do Telegram | Sim | Criar o bot e escrever o código | Mensagens e botões, sem gráfico | Notificações e comandos simples |
| Blynk | Sim | Template, datastream, painel e código | Widgets prontos e gráficos | Quem quer desenhar o próprio painel |
| Arduino IoT Cloud | Sim | Definir Thing e variáveis na conta Arduino e completar o código | Widgets do dashboard | Quem fica no ecossistema Arduino |
| BlueGrays IoT | Sim | Montar o circuito e carregar o código | Controles e gráficos prontos conforme o modelo | Começar rápido e usar enquanto aprende |
A escolha certa depende da sua necessidade. Se não houver internet nenhuma, Bluetooth ou servidor web local são as únicas opções. BlueGrays IoT, Blynk e Arduino IoT Cloud exigem que a placa e o celular tenham acesso à internet. Se você quer configurações flexíveis, como desenhar a interface do zero ou integrar ao Home Assistant, ESP32 MQTT e os painéis na nuvem oferecem mais opções. O BlueGrays IoT tem 8 modelos prontos. Em compensação, esquema do circuito, lista de componentes, código e interface do celular já vêm prontos e combinando entre si. Assim, enquanto aprende, a chance de errar em algum ponto diminui.
Segurança: chave, senha do Wi-Fi e código
- A chave do dispositivo é a identidade da placa. Quem souber a chave que começa com bgd_ pode se passar pela sua placa. Por isso não compartilhe a chave em print de tela, fórum ou grupo de mensagens.
- A senha do Wi-Fi fica no celular. A senha não é enviada ao servidor; já o nome da rede é guardado junto com o dispositivo para que o código possa ser mostrado de novo depois. Mas a senha está escrita dentro do código carregado na placa.
- Não compartilhe o código. Como o próprio app avisa, o código contém sua chave do dispositivo e sua senha do Wi-Fi. Se for mostrar o código no fórum para pedir ajuda, apague antes as linhas DEVICE_KEY, WIFI_NAME e WIFI_PASSWORD.
- A conexão é criptografada. O tráfego entre a placa e o servidor passa com TLS pela porta 443; ninguém na mesma rede consegue ler os comandos.
- Na dúvida, gere uma nova chave. O botão Gerar nova chave invalida a chave antiga na hora. Se for passar a placa para outra pessoa, também gere uma nova chave ou remova o dispositivo.
Erros comuns e soluções
| Sintoma | Causa provável | Solução |
|---|---|---|
| “Wi-Fi connected” nunca aparece no Monitor Serial | Rede de 5 GHz escolhida ou erro de maiúscula/minúscula na senha | Digite o nome da rede de 2,4 GHz; se as faixas do roteador tiverem o mesmo nome, separe; redigite a senha com cuidado |
| Nenhuma porta em Ferramentas › Porta | Cabo só de carga ou driver faltando | Use cabo de dados; instale o driver CP210x ou CH340 conforme o chip |
| O carregamento trava em “Connecting…” | A placa não entra no modo de gravação | Segure o botão BOOT e solte quando a gravação começar; mais no texto Erro ao carregar código no Arduino |
| A compilação para com erros ligados ao core do ESP32 | Versão antiga 2.x do pacote esp32 instalada | Atualize para a versão 3.x no Gerenciador de Placas |
| “No such file or directory” (BlueGraysIoT.h, DHT.h, WebSockets) (arquivo não encontrado) | Biblioteca ou dependências não instaladas | Reinstale a BlueGraysIoT e escolha “Instalar tudo”; busque a que faltar pelo nome |
| Caracteres estranhos no Monitor Serial | Velocidade diferente de 115200 | Ajuste o Monitor Serial para 115200 |
| Aparece “Wi-Fi connected”, mas não “BlueGrays IoT: connected” | A rede não acessa a internet, a rede da empresa/escola bloqueia ou está carregado o código anterior à nova chave | Teste com o hotspot do celular; carregue o código atual da tela Código e chave |
| A placa reinicia quando o relé clica | Alimentação insuficiente (brownout) | Use cabo de qualidade e fonte forte, alimente o relé pelo 5V; veja ESP32 brownout |
| O LED acende com o interruptor desligado | RELAY_ACTIVE_LOW ficou true, valor do relé | Se estiver usando LED direto, use RELAY_ACTIVE_LOW = false |
| Sensor analógico dá sempre o mesmo valor com o Wi-Fi ligado | Sensor ligado a um pino ADC2 | Use um dos pinos ADC1 (GPIO32–39); detalhes no texto O que é ADC? |
| Os valores de temperatura e umidade não chegam | Pino de dados do DHT22 no pino errado ou sem pull-up | Ligue o DATA no GPIO4 e o VCC no 3V3; no sensor avulso, acrescente pull-up de 10 kΩ |
Ideias de projetos IoT com ESP32
- Interruptor de lâmpada: a versão completa do primeiro circuito deste texto está no projeto Interruptor de lâmpada IoT com ESP32 (relé). O projeto vem com esquema do circuito e lista de componentes.
- Estação ambiente: relé e DHT22 juntos, com gráfico de temperatura: Estação ambiente IoT com ESP32 (relé + DHT22).
- Irrigação de plantas: o sensor de umidade do solo vai no GPIO34 (um pino ADC1). Quando a umidade cai abaixo do controle deslizante Limite de irrigação no celular, a bomba liga; quando sobe 10 pontos acima do limite, desliga. Página do projeto: Irrigação de plantas IoT com ESP32 (sensor de umidade + bomba). Para calibrar o sensor, veja também o texto Sensor de umidade do solo.
- Fita LED RGB: escolha pelo celular a cor, o brilho e o efeito (Fixo, Arco-íris, Respiração, Pisca) de uma fita WS2812B de 30 LEDs no GPIO13: Fita LED RGB IoT com ESP32 (WS2812B). Em branco total, 30 LEDs podem puxar cerca de 1,8 A; alimente a fita por uma fonte de 5 V separada. Detalhes no texto WS2812B NeoPixel.
- Abridor de cortina: gire o servo SG90 do GPIO18 com um controle deslizante de 0–180°: Abridor de cortina IoT com ESP32 (servo SG90). Alimente o servo também por uma fonte de 5 V separada e una os GNDs.
- Outros modelos: os projetos sensor de porta, contador de movimento e temperatura e umidade foram explicados com o Pico W. No app, você também pode escolher esses modelos para o ESP32.
Depois de montar uma vez o caminho entre placa, servidor e celular, adicionar um novo dispositivo leva poucos minutos. Comece pelo interruptor de lâmpada, depois veja os dados do DHT22 chegando ao celular e então passe para projetos maiores, como irrigação ou cortina. No app BlueGrays você encontra esses projetos IoT com ESP32 passo a passo, com esquema do circuito e código. Use o filtro de projetos IoT em Explorar e, pelo cartão “Configurar como dispositivo IoT” da página do projeto, conecte o mesmo circuito direto ao seu celular.
Perguntas frequentes
Como controlar o ESP32 pelo celular?
O ESP32 pode ser controlado pelo celular com servidor web local, Bluetooth, bot do Telegram ou painéis na nuvem. Com o BlueGrays IoT, você segue o caminho Minha oficina › Meus dispositivos › Adicionar dispositivo. Escolhe a placa e o modelo, informa os dados do Wi-Fi e carrega pela Arduino IDE o código preparado pelo Ohmi. Quando a placa se conecta, interruptores e valores aparecem no celular.
Dá para controlar o ESP32 pelo celular sem internet?
Com o BlueGrays IoT, não: a placa e o celular precisam estar conectados à internet, porque os comandos passam pelo servidor. Para controle sem internet, use Bluetooth (BLE) ou um servidor web no ESP32 funcionando na mesma rede.
Posso controlar o ESP32 de outra cidade?
Sim. Como a placa e o celular se conectam ao mesmo servidor, eles não precisam estar na mesma rede. A placa pode estar no Wi-Fi de 2,4 GHz de casa e o celular nos dados móveis. Não precisa de redirecionamento de portas, IP fixo nem servidor próprio.
O BlueGrays IoT é pago?
O primeiro dispositivo é grátis. O plano grátis inclui 1 dispositivo, histórico de gráfico de 1 variável e histórico de 24 horas. O Premium libera 10 dispositivos, histórico de gráfico de 20 variáveis e histórico de até 30 dias.
Devo controlar o ESP32 por Bluetooth ou por Wi-Fi?
O Bluetooth não precisa de internet nem de roteador, mas o alcance em ambientes internos costuma ficar em torno de 10 metros. Com controle via Wi-Fi e servidor, você comanda a placa de qualquer lugar do mundo, e gráficos e histórico ficam guardados. Se você está sempre em casa e não tem roteador, Bluetooth; se quer acesso remoto, Wi-Fi é melhor.
Quantos dispositivos posso conectar ao BlueGrays IoT?
Você pode adicionar 1 dispositivo no plano grátis e 10 no Premium. As placas compatíveis são ESP32 (Dev Module, WROOM, S3, C3) e Raspberry Pi Pico W. Ao remover um dispositivo, você recupera a vaga.
Projetos para montar depois desta leitura
Ver todos os projetos
ESP32 Interruptor IoT de Lâmpada (Relé)
Ligue e desligue sua lâmpada pelo celular, onde você estiver. Este projeto é o guia passo a passo do modelo IoT Lâmpada com relé do app, montado com um ESP32 e um módulo relé e testado primeiro com um LED. Vá em Oficina › Dispositivos › Adicionar dispositivo e escolha Lâmpada com relé; o Ohmi prepara o código com a sua própria chave de dispositivo. O código desta página é um exemplo: a chave e os dados do Wi-Fi são valores de exemplo.

ESP32 Estação IoT do Cômodo (Relé + DHT22)
Ligue a lâmpada pelo celular e veja a temperatura e a umidade do seu cômodo ao vivo, onde você estiver. Este projeto é o guia passo a passo do modelo IoT Estação do cômodo do app, com um ESP32, um módulo relé e um DHT22. Vá em Oficina › Dispositivos › Adicionar dispositivo e escolha Estação do cômodo; o Ohmi prepara o código com a sua chave de dispositivo. O código daqui é um exemplo: a chave e o Wi-Fi são valores de exemplo.

ESP32 Rega IoT de Plantas (Sensor + Bomba)
A bomba liga sozinha quando a terra do vaso seca, e você acompanha a umidade do solo ao vivo no celular. Este projeto é o guia passo a passo do modelo IoT Umidade do solo + bomba do app, com um ESP32, um sensor de umidade do solo, um relé e uma mini bomba d'água. Vá em Oficina › Dispositivos › Adicionar dispositivo; o Ohmi prepara o código com a sua chave de dispositivo. O código daqui é um exemplo: a chave e o Wi-Fi são valores de exemplo.

ESP32 Fita LED RGB IoT (WS2812B)
Controle a luz do cômodo pelo celular: escolha a cor, ajuste o brilho, ligue o efeito arco-íris ou respiração. Este projeto é o guia passo a passo do modelo IoT Fita LED RGB do app, montado com um ESP32 e uma fita WS2812B de 30 LEDs com três fios. Vá em Oficina › Dispositivos › Adicionar dispositivo e escolha Fita LED RGB; o Ohmi prepara o código com a sua própria chave de dispositivo. O código desta página é um exemplo: a chave e os dados do Wi-Fi são valores de exemplo.

ESP32 Abridor de Cortina IoT (Servo SG90)
Toque em + ou − no celular e o servo gira para esse ângulo no mesmo instante: abra e feche uma cortina de maquete, a haste de uma persiana ou uma tampinha de onde você estiver. Este projeto é o guia passo a passo do modelo IoT Cortina com servo do app, com um ESP32 e um servo SG90, com só 3 fios. Vá em Oficina › Dispositivos › Adicionar dispositivo; o Ohmi prepara o código com a sua chave de dispositivo. O código daqui é um exemplo: a chave e o Wi-Fi são valores de exemplo.

Pico W Temperatura e Umidade IoT (DHT22)
Acompanhe ao vivo no celular a temperatura e a umidade do cômodo, onde você estiver. Este projeto é o guia passo a passo do modelo IoT Temperatura e umidade do app, montado com um Raspberry Pi Pico W e um DHT22. Vá em Oficina › Dispositivos › Adicionar dispositivo, escolha Pico W como placa e Temperatura e umidade como modelo; o Ohmi prepara o código com a sua própria chave de dispositivo. O código desta página é um exemplo: a chave e os dados do Wi-Fi são valores de exemplo.

Pico W Sensor IoT de Porta (Reed)
A porta ou a janela ficou aberta? Confira no celular. Este projeto é o guia passo a passo do modelo IoT Porta / janela do app, montado com um Raspberry Pi Pico W, um sensor reed e um pequeno ímã. Vá em Oficina › Dispositivos › Adicionar dispositivo, escolha Pico W como placa e Porta / janela como modelo; o Ohmi prepara o código com a sua própria chave de dispositivo. O código desta página é um exemplo: a chave e os dados do Wi-Fi são valores de exemplo.

Pico W Contador de Movimento IoT (PIR)
Conte quantas vezes alguém passa por uma porta ou um corredor e veja o momento do movimento ao vivo no celular. Este projeto é o guia passo a passo do modelo IoT Detector de movimento do app, com uma Raspberry Pi Pico W e um sensor de movimento PIR, com só 3 fios. Vá em Oficina › Dispositivos › Adicionar dispositivo; o Ohmi prepara o código com a sua chave de dispositivo. O código daqui é um exemplo: a chave e o Wi-Fi são valores de exemplo.
Mais artigos
App BlueGrays
Monte este circuito passo a passo pelo celular
Esquema do circuito, código e lista de componentes em uma só tela. Mais de 200 projetos com Arduino, ESP32 e Pico prontos para montar.
Escaneie com seu celular
Aponte a câmera para o código para abrir a loja de aplicativos do seu celular.
ou abrir a loja

