- Descrição: O Módulo Chave Magnética Reed Switch KY-021 é um tipo…
Blynk – Controle do Arduino via WiFi com ESP8266 ESP-01
A interação entre o Arduino e o ESP8266 permite que a placa possa acessar redes WiFi e com isso se torna possível desenvolver projetos bem interessantes, principalmente de automação residencial. O uso do Blynk em conjunto com o Arduino e o ESP8266 ESP-01 vai facilitar bastante a implementação do seu projeto de automação residencial ou IoT e vai permitir controlar o Arduino através do seu smartphone ou tablet.
Caso ainda não conheça o Blynk, recomendo que leia a postagem Conhecendo o Blynk, pois nela apresentei a ferramenta, mostrei as opções de configurações, mostrei as funções básicas e ensinei a instalar o pacote de bibliotecas na IDE do Arduino. Recomendo também que leia a postagem Blynk – Executando os Primeiros Projetos com Arduino para que possa executar algumas práticas simples e se familiarizar com a ferramenta.
A proposta para esta prática é a integração entre o Arduino, o ESP-01 e o Blynk. O ESP-01 vai permitir que o Arduino se conecte a uma rede sem fio e se comunique com o aplicativo Blynk instalado no seu dispositivo móvel. Se tratando de um projeto de automação residencial, o Blynk possibilita controlar as lâmpadas a partir de um smartphone ou tablet que esteja conectado à internet pela rede WiFi ou até mesmo no 3G / 4G. Além disso, é possível obter informações dos sensores e demais módulos que estiverem conectados ao Arduino e mostrar estas informações na tela do dispositivo móvel.
Vamos utilizar um módulo relé 5V conectado ao Arduino para fazer o controle de uma lâmpada através do Blynk e usar também um sensor de temperatura e umidade DHT11 para obter as informações e mostrar no aplicativo.
Para continuar, será necessário que tenha o Blynk instalado e configurado no seu smartphone ou tablet, e que tenha a biblioteca Blynk instalada na IDE do Arduino. Acesse a postagem Conhecendo o Blynk, pois nela explico tudo isso detalhadamente.
Para que o ESP-01 possa se comunicar com o Arduino e com o Blynk, é necessário que o módulo esteja com um firmware que permita o envio de comandos AT. Nos testes que eu fiz, o firmware que funcionou perfeitamente foi a versão Ai-Thinker_ESP8266_DOUT_8Mbit_v1.5.4.1-a AT Firmware. Acesse a postagem Upgrade de Firmware do WiFi ESP8266 ESP-01 através do Arduino e Conversor USB Serial e veja como instalar esta versão de fimrware no ESP-01. Em seguida retorne para continuar.
O ESP-01 conectado a uma rede WiFi pode consumir até 300mA, logo, será necessário alimentá-lo com uma fonte que forneça a corrente necessária para o perfeito funcionamento.
Utilizei uma fonte ajustável para protoboard, pois a mesma aceita de 6,5 a 12VDC na entrada, reduzindo a saída para 3.3VDC / 5VDC e fornece uma corrente de saída de aproximadamente 700mA. Desta forma, a fonte ajustável para protoboard será responsável por alimentar todas as peças que fazem parte do circuito, inclusive o Arduino através do pino VIN.
Além de um dispositivo móvel Android ou iOS, você vai precisar também dos seguintes itens:
01 – Arduino Uno R3 com Cabo USB
01 – Módulo WiFi ESP8266 ESP-01
01 – Módulo Relé 5V 1 Canal
01 – Sensor de Umidade e Temperatura – DHT11
01 – Protoboard de 400 Pontos
03 – Resistor de 10KΩ
08 – Cabos Jumper macho-fêmea
07 – Cabos Jumper macho-macho
01 – Fonte Ajustável 3.3V / 5V para Protoboard MB102
01 – Fonte DC 9V 1A Bivolt Chaveada
01 – Lâmpada
01 – Receptáculo (boquilha)
01 – Cabo paralelo de 1,5mm ou 2,5mm
01 – Tomada (Rede alternada de 127V)
Monte o esquema de ligação conforme a imagem abaixo:
ATENÇÃO: MUITO CUIDADO AO EXECUTAR PRÁTICAS QUE ENVOLVAM TENSÃO / CORRENTE ALTERNADA! FAÇA TODAS AS LIGAÇÕES COM O CIRCUITO COMPLETAMENTE DESLIGADO E ANTES DE FAZER OS TESTES VERIFIQUE CADA UMA DAS LIGAÇÕES PARA ELIMINAR A POSSIBILIDADE DE CURTO ENTRE FASE / NEUTRO OU FASE / FASE.
(Clique na imagem para ampliar)
Observe no esquema de ligação que o ESP-01 está sendo alimentado com a tensão de 3.3V que sai da fonte ajustável MB102, pois este é o nível lógico e a máxima alimentação que pode ser aplicada ao módulo de forma direta. Note também que, o módulo relé, o DHT11 e o Arduino estão sendo alimentados pelos 5V fornecidos na outra extremidade da protoboard. No esquema de ligação você pode ver que na fonte ajustável MB102 foi circulado em vermelho os jumpers que definem qual tensão será disponibilizada em cada lado da protoboard.
Mantenha a fonte ajustável MB102 desligada e após conferir todo o esquema de ligação você deverá conectar uma ponta do cabo USB ao Arduino e a outra ponta conectar ao computador para carregamento do código.
Em seguida, faça download da biblioteca para o DHT11:
Caso não saiba como importar bibliotecas para a IDE do Arduino, acesse a postagem Arduino – Importando bibliotecas para a IDE e em seguida retorne para continuar.
Copie o código abaixo e cole na IDE do Arduino:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#include <ESP8266_Lib.h> //INCLUSÃO DE BIBLIOTECA #include <BlynkSimpleShieldEsp8266.h> //INCLUSÃO DE BIBLIOTECA #include <SoftwareSerial.h> //INCLUSÃO DE BIBLIOTECA #include "dht.h" //INCLUSÃO DE BIBLIOTECA SoftwareSerial EspSerial(10, 11); //PINOS QUE EMULAM A SERIAL (PINO 10 É O RX E PINO 11 É O TX) char auth[] = "YourAuthToken"; //AUTH TOKEN (FORNECIDO PELO PROJETO NO BLYNK E POR E-MAIL) BlynkTimer timer; //OBJETO DO TIPO BlynkTimer dht DHT; //VARIÁVEL DO TIPO DHT const int pinoDHT11 = A0; //PINO ANALÓGICO UTILIZADO PELO DHT11 const int pinoRele = 4; //PINO DIGITAL UTILIZADO PELO MÓDULO RELÉ char ssid[] = "NOME DA SUA REDE WIFI"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO EM QUE VAI CONECTAR char pass[] = "SENHA DA SUA REDE WIFI"; //VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO EM QUE VAI CONECTAR #define ESP8266_BAUD 9600 //TAXA DE COMUNICAÇÃO DO ESP8266 COM O ARDUINO UNO (SEMPRE UTILIZE 9600 BAUDS) ESP8266 wifi(&EspSerial); //PASSO OS PARÂMETROS PARA A FUNÇÃO void setup(){ pinMode(pinoDHT11, INPUT); //DECLARA O PINO COMO ENTRADA pinMode(pinoRele, OUTPUT); //DECLARA O PINO COMO SAÍDA EspSerial.begin(ESP8266_BAUD); //INICIA A COMUNICAÇÃO COM A TAXA INFORMADA NO ESP8266_BAUD delay(10); //INTERVALO DE 10 MILISSEGUNDOS Blynk.begin(auth, wifi, ssid, pass); //INICIALIZA A COMUNICAÇÃO BLYNK INFORMANDO OS PARÂMETROS timer.setInterval(1000L, sendUptime); //DEFINE O INTERVALO DE 1 SEGUNDO(1000L = 1000 MILISSEGUNDOS) //PARA EXECUÇÃO DA FUNÇÃO sendUptime digitalWrite(pinoRele, HIGH); //RELÉ INICIA DESLIGADO } void sendUptime(){ //FUNÇÃO QUE OBTÉM A TEMPERATURA / UMIDADE E ENVIA O VALOR OBTIDO PARA OS WIDGETs GAUGE DHT.read11(pinoDHT11); //LÊ AS INFORMAÇÕES DO SENSOR Blynk.virtualWrite(1, DHT.temperature); //ENVIA AO WIDGET GAUGE (PINO VIRTUAL 1) O VALOR DA TEMPERATURA Blynk.virtualWrite(2, DHT.humidity); //ENVIA AO WIDGET GAUGE (PINO VIRTUAL 2) O VALOR DA UMIDADE } void loop(){ Blynk.run(); //INICIALIZA O BLYNK timer.run(); //INICIALIZA O TIMER } |
No código vá até a linha char auth[] = “YourAuthToken”; apague o texto YourAuthToken e adicione o seu AuthToken (para mais detalhes sobre como obter o AuthToken, clique AQUI):
Você deverá inserir o nome da sua rede WiFi na linha char ssid[] = “NOME DA SUA REDE WIFI”; e a senha deverá inserir na linha char pass[] = “SENHA DA SUA REDE WIFI”;:
Para integrar o ESP-01 com o Arduino é necessário o uso de comunicação serial. O Arduino Uno possui apenas uma serial física e que é utilizada para comunicar a placa com o computador. Portanto, para comunicar o ESP-01 com o Arduino é necessário emular uma conexão serial através da biblioteca “SoftwareSerial” utilizando dois pinos digitais, sendo um o RX e o outro TX. A comunicação serial entre o ESP-01 e o Arduino flui sem problemas com a taxa de comunicação em 9600 bauds. No código, a linha “#define ESP8266_BAUD 9600” já está definida com esta velocidade, mas o seu ESP-01 também deverá estar configurado em 9600.
No menu “Ferramentas” selecione a opção “Placa” e selecione o “Arduino/Genuino Uno”:
No menu “Ferramentas”, selecione a opção “Porta” e marque a porta COM em que sua placa foi alocada:
Veja que no meu caso a placa foi alocada na COM6, porém, o seu Arduino pode ter sido alocado em uma COM de outro valor. Caso não saiba em qual porta COM sua placa foi alocada, basta retornar no menu Iniciar do Windows, acessar a opção Dispositivos e Impressoras , verificar a porta em que seu Arduino está conectado, retornar na IDE e selecionar a porta COM.
Em seguida, clique no botão para enviar o código ao Arduino e aguarde o carregamento.
Terminado o carregamento do código, desconecte o cabo USB do Arduino, conecte a fonte de alimentação 9V na tomada e no plug jack da fonte ajustável para protoboard, e pressione o interruptor para liga-la.
Abra o app Blynk em seu dispositivo móvel Android ou iOS, faça login e acesse o seu projeto. Se ainda não tem o projeto criado no Blynk, clique AQUI e leia a postagem para aprender a fazer as devidas configurações do projeto. Seu projeto deverá ser criado com as seguintes configurações:
Na tela principal do projeto, vá até a lista de widgets, selecione um “Button” e selecione também dois “Gauge” (um para temperatura e outro para umidade):
Com os widgets inseridos no contêiner principal, clique sobre o “Button” para acessar as configurações. Em “OUTPUT” selecione o tipo de pino “Digital” e D4. As configurações deverão ficar similar a imagem abaixo:
Clique sobre um dos “Gauge” para acessar as configurações. Em “OUTPUT” selecione o tipo de pino “Virtual” e V1. As configurações deverão ficar similar a imagem abaixo:
Clique sobre o outro widget “Gauge” para acessar as configurações. Em “OUTPUT” selecione o tipo de pino “Virtual” e V2. As configurações deverão ficar similar a imagem abaixo:
O Blynk pode controlar de forma direta os pinos digitais e analógicos da plataforma sem que seja necessário escrever uma linha de código. Contudo, controlar entradas e saídas da plataforma não é suficiente, logo, se faz necessário a troca de informação com qualquer tipo de dado.
Para possibilitar o envio de qualquer tipo de dado da plataforma (Arduino, por exemplo) para o aplicativo e do aplicativo para a plataforma, foram criados os pinos virtuais. A partir destes pinos, você pode trocar qualquer tipo de informação entre o app no dispositivo móvel e a plataforma. Logo, você pode processar algo na plataforma e em seguida enviar o resultado para o aplicativo. Veja que definimos os pinos virtuais V1 e V2 nas configurações dos “Gauge” e estes pinos serão responsáveis por informar a temperatura e a umidade.
Depois de efetuar as configurações dos widgets você terá uma tela similar a imagem abaixo:
Agora clique no botão de “Play” para iniciar a conexão e em seguida confira se o projeto está online:
Agora basta pressionar o botão no app Blynk para acender ou apagar a lâmpada e nos widgets “Gauge” você pode ver a temperatura e umidade que está sendo medida pelo DHT11.
Veja no vídeo abaixo o resultado final:
Se por ventura precisar atualizar o código e enviar ao Arduino, lembre-se de sempre desligar a fonte ajustável antes de conectar o cabo USB a placa e ao computador.
Caso ao final desta postagem você não tenha conseguido o resultado mostrado no vídeo, volte e confira todas as ligações. Lembre-se de conferir também a versão do firmware que está instalado no ESP-01 e se a taxa de comunicação está configurada em 9600 bauds (vide tutorial).
Para que o Arduino possa se conectar à rede WiFi e em seguida ao servidor Blynk, é necessário que o ESP-01 seja ligado de forma simultânea com o Arduino. Caso você ligue o Arduino e só depois ligar o ESP-01 (ou vice versa), certamente a comunicação irá falhar.
Gostou desta postagem? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Como usar com Arduino – Módulo Chave Magnética Reed Switch KY-021
Boa noite,
Essas bibliotecas funcionam em conjunto com uma interrupção do Timer 0 do arduino?
Euler! Tudo joia! Já tentei de tudo para instalar a biblioteca ESP8266Wifi… não consigo… dê-me uma luz!
Olá Rodrigo.
Agradeço pelo comentário!
Acesse o link abaixo, vá até a parte do texto “Instalando o pacote ESP8266 na IDE” e execute os passos para instalar o pacote ESP8266 no IDE do Arduino:
https://blogmasterwalkershop.com.br/embarcados/wemos/wemos-d1-configurando-a-ide-do-arduino/
Boa noite. Estou utilizando o Arduino Uno, ESP01, Dht11, sensor de solo e um relê (para ligar uma válvula solenóide) para fazer a automação de irrigação do meu jardim. Estou usando o Blynk para fazer essa interface. Ele lê os sensores e traz respostas corretas. Mas estou tendo problemas quando uso “BlynkTimer timer;” pois estou utilizando horários para não realizar rega do jardim e uma hora específica para a rega.
O problema é que sempre que ele executa alguma ação no horário programado o Blynk perde conexão e só volta a conectar quando desligo o arduino. Existe algum problema de conexão serial entre o ESP01 e o Arduino Uno? Existe alguma rotina que posso inserir no meu projeto para que esse erro seja corrigido?
Obrigado e parabéns pelo site. Tem me ajudado em muito.
Olá Rodrigo.
Agradeço pelo comentário!
Pode ser que o tempo de execução das rotinas estejam longos e por este motivo está perdendo a conexão.
Veja se o uso de u RTC no seu projeto ao invés da BlynkTimer não seria mais viável.
Boa Noite muito bom seu post só estou numa duvida eu conseguiria fazer esse direto no esp8266 se sim como seria desde já agradeço Att Carlos
Boa tarde amigo, esta de parabéns, gostaria de saber como incluir um lcd 16×2 nesse projeto, pois quero colocar esse projeto em minha caixa de filamento da impressora 3D para o controle de umidade.
Olá Eduardo.
Agradeço pelo comentário!
Não temos nenhum projeto utilizando Display LCD. No fórum oficial do Blynk você pode pesquisar por projetos similares a este que está desenvolvendo ou como integrar o display com a ferramenta.
boa tarde gostaria de uma ajuda nao estou conseguindo dar prosseguimento ao projeto por causa disso ESP8266WiFi.h: No such file or directory ja instalei as bibliotecas mas mesmo assim esta dando este erro desde ja agradeço pela ajuda [email protected]
Olá Marcello.
Agradeço pelo comentário!
Esse erro aparece quando falta alguma biblioteca.
Recomendo que verifique se seu IDE do Arduino possui o pacote do ESP8266 instalado.
Boa noite,
O código não está rodando no meu caso. O App não conseguiu comunicação, e fui testar o código ele nem chega a executar a função sendUptime.
O que poderia ser?
Olá Amanda.
Agradeço pelo comentário!
Provavelmente deixou passar alguma etapa do tutorial ou não adicionou as bibliotecas no lugar correto.
Euler, Boa tarde !
Como fazemos para que o SSID e a Senha do Wifi possam ser alterados sem que necessite conectar o ESP8266 ao Notebook ? Teria como fazer isso por uma página WEB ?
Abr. e Parabéns pelo tutorial.
Olá Paulo.
Agradeço pelo comentário!
Que eu saiba, somente carregando o código atualizado no ESP8266 através do computador.
Bom dia
Apos ter trocado minha internet que estava funcionando normalmente da vivo pela idc fibra, o meu nodemcu nao conecta mais com a rede.
Se eu utilizar a internet do meu cel funciona mas quando utilizo a rede nova nao funciona.
Poderia me ajudar
Olá Valter.
Agradeço pelo comentário!
Provavelmente está havendo algum tipo de bloqueio de portas por parte do seu provedor de internet.
Entre em contato com eles e relate que o que antes funcionava, com esta nova conexão não funciona mais e se há algo que eles possam fazer pra te ajudar.
As configurações e conexões de esp01 com arduíno que vi na internet me pareciam muito confusas, o módulo chegou e estou usando o site como referência para atualizar firmware e etc, muito detalhado e didático, parabéns e obrigado pelo conteúdo!
Olá Rodrigo.
Agradeço pelo comentário!
Fico satisfeito em saber que o tutorial te ajudou.
Vlw!!!
olá, qual o software que você montou esse esquema?
Olá Ana.
Agradeço pelo comentário!
Foi utilizado o Fritzing e um outro editor de imagens que tenho.
Vários itens não há no Fritzing e nós desenhamos eles aqui para fazer as práticas.
Boa noite .
Gostaria de montar um esquema desse .Gostaria de montar com uma placa com 16 relés .
gostaria de uma ajuda pra montar o circuito.
Olá Erlan.
Agradeço pelo comentário!
A postagem do link abaixo serve como base para que possa desenvolver este projeto com um módulo relé com quantidade maior de canais:
https://blogmasterwalkershop.com.br/arduino/como-usar-com-arduino-modulo-rele-5v-de-16-canais/
Boa noite,
Não consigo descarregar o programa, da erro na ESP8266_Lib.h
Você teria essa biblioteca?
Olá Vinícius.
Agradeço pelo comentário!
Você deve instalar o pacote ESP8266 no IDE do Arduino.
Acesse o link abaixo e execute os passos a partir de “Instalando o pacote ESP8266 na IDE”.
https://blogmasterwalkershop.com.br/embarcados/wemos/wemos-d1-configurando-a-ide-do-arduino/
Olá Euler.
Você poderia fornecer TODAS bibliotecas necessárias?
Está aparecendo muito erro na compilação.
Obrigado
Olá Ricardo.
Agradeço pelo comentário!
No tutorial já está disponível os links necessários para que possa fazer a implementação desta prática:
https://blogmasterwalkershop.com.br/blynk/conhecendo-o-blynk/#8211_Instalacao_do_pacote_de_bibliotecas_na_IDE_do_Arduino
https://blogmasterwalkershop.com.br/arquivos/libs/DHT.zip
Além das bibliotecas acima, você precisa ter o pacote ESP8266 instalado no IDE do Arduino.
Só não entendi uma coisa , no ESP01 só terá o firmware AT e mais nada , correto ?
Olá Rogério.
Isso mesmo. No ESP-01 deve ficar apenas o firmware de comandos AT conforme o tutorial:
https://blogmasterwalkershop.com.br/embarcados/esp8266/upgrade-de-firmware-do-wifi-esp8266-esp-01-atraves-do-arduino-e-conversor-usb-serial/
Não está compilando !!!!
Já troquei o nome da pasta e tudo mais não acha o diretorio ….
No such file or directory
Olá Rogério.
Acabei de testar os arquivos da prática junto ao código e está funcionando sem nenhum problema.
Veja se está adicionando as bibliotecas no lugar correto.
funciona na eternet tmbm ? ou so na internet?
Olá Rato.
Só com internet, mas você pode montar um servidor local.
Ta certo esse Vin do arduino ligando no negativo na foto?
Olá Wesley.
Agradeço por informar sobre este erro.
Já fiz a correção no esquema de ligação.
Obrigado!
Cara, fenomenal seu blog. Estou gostando muito da sua abordagem rica em detalhes, o que faz com que a gente não se perca entre o código e a configuração das Shields e etc. Está de parabéns, já compartilhei com os amigos que trabalham com IoT.
Olá Igor.
Fico satisfeito em saber que o conteúdo do Blog está lhe agradando.
Vlw!