Os diversos modelos do módulo WiFi ESP32 possuem variadas aplicações e são ideais para soluções IoT (Internet das Coisas). São capazes de fornecer I/O’s programáveis, entrada micro USB, conversor FTDI integrado, regulador de tensão 3,3 V, conexão Wi-Fi, conexão Bluetooth, e muito mais, tudo isso reunido em um só dispositivo. Já pensou em utilizá-lo para automatizar a sua residência de forma simples e descomplicada? Pois é, através desse tutorial você aprenderá a criar o aplicativo Android e criar um projeto de automação residencial por comando de voz utilizando um módulo ESP32 e o APP Inventor.
Através deste aplicativo conseguimos criar diversas frases, ou seja, ao falarmos diretamente no smartphone o software APP Inventor irá reconhecer a frase. Assim, caso essa frase esteja programada, será enviado um comando para o ESP32 a partir do endereço IP (Internet Protocol) + o comando cadastrado. Caso os caracteres recebidos estejam programados na IDE do Arduino haverá o disparo das porta de saída configurada ligando por exemplo luzes, ventilador, cafeteira e muito mais.
O que é AppInventor?
MIT App Inventor, também conhecido como AppInventor para Android, é uma aplicação código aberto originalmente criada pela Google, e atualmente mantida pelo Massachussetts Institute of Tecnology, conhecido como MIT.
Ele permite que os recém-chegados à programação de computador criem aplicativos de software para o sistema operacional Android. Ele usa uma interface gráfica, muito semelhante ao do Zero e da interface do usuário StarLogo TNG, que permite aos usuários arrastar e soltar objetos visuais para criar um aplicativo que pode ser executado em dispositivos Android.
Gostou da ideia? Então vamos aprender como isto funciona!
Material Necessário
Neste projeto utilizamos os seguintes componentes:
01 – Módulo WiFi ESP32 Bluetooth
01 – Módulo Relé 5V 4 Canais
01 – Jumpers Fêmea-Fêmea x 40 unidades
01 – Fonte DC Chaveada 5V 3A Micro USB
01 – Cabo micro USB 1 metro
Setup necessário
É de grande importância, que você tenha o Arduino IDE instalado em sua máquina, de preferência a última versão disponível no site site oficial do Arduino. Depois, é necessário realizar a configuração do Arduino IDE para realizar o desenvolvimento com a ESP32, veja abaixo:
Abra a Arduino IDE. Clique em Arquivo > Preferências.
No campo URLs Adicionais para Gerenciador de Placas digite https://dl.espressif.com/dl/package_esp32_index.json e depois clique em OK.
OBS: Se você já possui a URL de outras placas ESP, você pode separar as URLs com uma vírgula da seguinte forma:
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
Feito isso, clique em Ferramentas > Placa > Gerenciador de Placas…
Na caixa de busca, digite ESP32. Clique em Instalar.
Na Arduino IDE, vá em Ferramentas > Placa. E configure seu IDE Arduino conforme imagem abaixo:
Pronto! A IDE Arduino já está preparada para programar seu módulo WiFi ESP32.
Montagem do circuito para a automação residencial por comando de voz
Observe o circuito esquemático abaixo que será usado no projeto “Automação residencial por comando de voz com ESP32 e AppInventor“.
De acordo com a figura abaixo, podemos verificar que os módulos relés são compostos por contatos de potência e comando. Ou seja, através dos pinos D32 e D33 do ESP32 enviaremos os sinais de comando ao módulo relé e, através do mesmo, iremos acionar a lâmpada e/ou o ventilador, de acordo com o comando executado pelo AppInventor. O acionamento será feito pelos contatos de potência COMUM e NA.
Programando o Módulo WiFi ESP32
A programação deste módulo consiste em incluir a biblioteca “WiFi.h” e definir os pinos que iremos utilizar. Neste caso, definimos que um relé acionará a lâmpada na GPIO32 e outro relé acionará o ventilador na GPIO33. Também é preciso preencher o IP estático e o gateway da rede no qual a ESP32 foi conectada.
IPAddress staticIP(192,168,XXX,XXX); IPAddress gateway(192,168,XXX,1);
Preencha também os dados para iniciar o Wi-Fi colocando respectivamente seu SSID e sua SENHA.
"WiFi.begin("SEU SSID", "SUA SENHA");"
Segue o código-fonte do projeto. Leia atentamente todos os comentários do mesmo.
//bibilioteca necessária para conectar o wifi #include <WiFi.h> //led conectado nos pinos 32 e33 #define lampada 32 #define ventilador 33 //string de mensagem enviada pelo client String ClientRequest; //IP estático, de preferencia conectar ESP32 e smartphone na mesma rede IPAddress staticIP(192,168,XXX,XXX); //Gateway, colocar o gateway da rede em que está conectado IPAddress gateway(192,168,XXX,1); //Máscara, colocar a máscara da rede em que está conectado IPAddress subnet(255,255,255,0); //Porta de COM server/client WiFiServer server(80); // Wi-Fi Client WiFiClient client; //variável usada para solicitar o client String myresultat; String ReadIncomingRequest() { //Enquanto houver dados enviados pelo client while(client.available()) { //Atribui para a variável string o comando enviado pelo client ClientRequest = (client.readStringUntil('\r')); //Se existir "HTTP/1.1" na string então recebe comando if ((ClientRequest.indexOf("HTTP/1.1")>0)) myresultat = ClientRequest; } //Retorna variável resultado return myresultat; } void setup() { //Inicializa varíavel sem dados ClientRequest = ""; //Define os pinos como saida pinMode(lampada,OUTPUT); pinMode(ventilador,OUTPUT); //Inicializa a porta serial com taxa de transmissao 115200 bps Serial.begin(115200); //aguarda 10ms delay(10); //A partir daqui conectar wifi Serial.println("PRONTO!"); //Configura ssid e senha da rede WiFi.begin("SEU SSID", "SUA SENHA"); //Enquanto não conectar exibe "." while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //Exibe "conectado" Serial.println("Conectado!"); //Configura ip estático, gateway e máscara (definidos no início do código) WiFi.config(staticIP, gateway, subnet); //Exibe IP utilizado pelo ESP32 Serial.println("Seu IP é"); Serial.println((WiFi.localIP())); //Inicia COM com servidor server.begin(); } void loop() { //Obtem cliente client = server.available(); //Se nao houver, retorna até que ele realmente exista if (!client) return; //Enquanto nao existir COM com client aguardar while(!client.available()) delay(1); //Obtem respostas utilizando a função local ReadIncomingRequest ClientRequest = (ReadIncomingRequest()); //Retira dados da página e obtem apenas o comando enviado ClientRequest.remove(0, 5); ClientRequest.remove(ClientRequest.length()-9,9); //Controla as portas conforme o comando recebido if (ClientRequest == "acender") digitalWrite(lampada,HIGH); if (ClientRequest == "apagar") digitalWrite(lampada,LOW); if (ClientRequest == "ligar") digitalWrite (ventilador, HIGH); if (ClientRequest == "desligar") digitalWrite(ventilador,LOW); //Exibe na página a palavra "OK", caso acessado por um navegador client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("OK"); client.println("</html>"); client.flush(); client.stop(); delay(1); }
Por fim, carregue o código (esse processo pode levar algum tempo).
OBS: No momento em que o ESP32 estiver gravando o código em sua CPU é necessário apertar o BOOT.
Configurando o AppInventor para a automação residencial por comando de voz
Para configurar o AppInventor acesse aqui.
Utilize a sua conta Gmail através do LOGIN e SENHA.
No canto superior esquerdo, acesse a aba “Projetos” clicando em “Importar projeto (.aia) do meu computador”.
Para fazer o download do arquivo (.aia) clique aqui.
Após carregar o arquivo, é possível visualizá-lo e modificá-lo de acordo com o seu projeto específico.
No canto superior direito da tela, acesse a aba “Blocos”.
Agora, modifique o endereço IP (Internet Protocol) destacado na figura abaixo conforme sua conexão entre ESP32 e ROUTER, exemplo “http:// 192.168.10.105/acender”.
OBS: Para verificar o endereço IP da sua ESP32 é só abrir o monitor serial na IDE Arduino.
Depois de substituir os IP’s o próximo passo será compilar o arquivo. Portanto, clique em “Compilar” na parte superior da tela e acesse “App (fornecer o QR code para o .apk)”.
Agora, em seu smartphone baixe o aplicativo App Inventor.
Ao abrir o aplicativo App Inventor para Android, vá em scan QR code, aproxime a câmera de seu smartphone no QR Code disponível em seu PC.
Pronto! Agora é só baixar o arquivo .apk em seu smartphone android e dizer as palavras configuradas no arduino IDE / App Inventor.
Por exemplo:
Acender – GPIO 32 em nível alto.
Apagar – GPIO 32 em nível baixo.
Ligar – GPIO 33 em nível alto.
Desligar – GPIO 33 em nível baixo.
Resultado da automação residencial por comando de voz
É possível visualizar os módulos relés comutando indicando que a ESP32 foi conectada na rede Wi-Fi e que houve o reconhecimento de voz, conforme o vídeo abaixo:
É possível acrescentar mais relés em uma única ESP32, automatizando por exemplo a sua residência inteira!
Gostou do post “Automação residencial por comando de voz com ESP32 e AppInventor” ? Deixe seu comentário logo abaixo.
Até a Próxima!
Penso eu que o id seria o estático aquele que está no app do MIT, será que estou certo,
Oi interessante seu projeto
Com o arduino e o modulo Wi-fi, usando o MIT app inventor eu poderia acender um led via Wi-fino lugar do bluetooth?
Olá Alvaro.
No caso do ESP32 seria possível tanto por bluetooth quanto por WiFi.
Att.
Vitor Mattos.
Suporte Técnico MakerHero.
Ola 👋 gostei muito desse post, gostaria de saber estou com dúvidas , quanto como eu faço para controlar um relé com o esp8266 eu tenho o código porém minha maior dúvida e no app do MIt como faço para ter o códigos dos BLocos?????
ola o endereço que coloco no appinventor ná é o meu endereço de IP da minha rede, mas sim o endereço da minha esp32 ? correto! Pois nao to conseguindo achar esse endereço, o endereço que aparece na minha serial é o mesmo da minha rede local.
Conseguiria me tirar essa duvida, de como achar esse endereço da minha esp32 para colocar no appinventor?
Penso eu que o id seria o estático aquele que está no app do MIT, será que estou certo,
Eu coloquei esse codigo no meu e fica aparecendo o código abaixo constantemente, vc saberia como resolver?
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8
Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x40081045 PS : 0x00060030 A0 : 0x800d0ede A1 : 0x3ffb1f30
A2 : 0x00000007 A3 : 0x00000002 A4 : 0x80089cec A5 : 0x3ffba100
A6 : 0x00000003 A7 : 0x00060823 A8 : 0x3f4094e8 A9 : 0xddddddcd
A10 : 0xcc080000 A11 : 0x00000064 A12 : 0x00000000 A13 : 0x0000ff00
A14 : 0x00ff0000 A15 : 0xff000000 SAR : 0x0000001a EXCCAUSE: 0x0000001c
EXCVADDR: 0xcc080000 LBEG : 0x00000000 LEND : 0x00000000 LCOUNT : 0x00000000
Backtrace: 0x40081045:0x3ffb1f30 0x400d0edb:0x3ffb1f50 0x400d3183:0x3ffb1fb0 0x40088b7d:0x3ffb1fd0
Olá prof. Paulo, esse é um tipo de projeto sempre interessante!
Nesse seu projeto, portanto, é possível fazer o controle remotamente, por exemplo, apagar lâmpadas da casa, estando longe de casa ou somente pela rede local?
Se não, vc tem algum projeto que faça isso?
Obrigado
Olá Daniel Fernandes,
Sim é possivel controlar lâmpadas e tomadas a distância sem problemas, você pode fazer este teste conectando por exemplo seu smartphone numa outra rede Wi-Fi.
Qualquer dúvida estamos a disposição!
Olá comprei a ESP32 aqui do site Flip-Flop
Segue exemplo de programa com comunicação Wifi
https://www.youtube.com/watch?v=nz70smAvpW8
Att
Jonatas Ferreira
Jonatas, o vídeo não existe mais. Consegue me mandar um outro link ou ele de outra forma? Gostaria de ver funcionando