Blynk – Controle do Arduino via WiFi com ESP8266 ESP-01

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.

img01_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio_relay

(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:

Download biblioteca 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:

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):

img02_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

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”;:

img03_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

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.

img04_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

No menu “Ferramentas” selecione a opção “Placa” e selecione o “Arduino/Genuino Uno”:

img05_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

No menu “Ferramentas”, selecione a opção “Porta” e marque a porta COM em que sua placa foi alocada:

img06_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

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:

img07_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

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):

img08_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

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:

img09_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

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:

img10_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

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:

img12_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

Agora clique no botão de “Play” para iniciar a conexão e em seguida confira se o projeto está online:

img13_controle_do_arduino_via_wifi_com_esp8266_esp-01_automacao_residencial_rele_dht11_smartphone_tablet_internet_sem fio

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:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 36 comentários para esta postagem
  1. Edgard às 21:56

    Boa noite,
    Essas bibliotecas funcionam em conjunto com uma interrupção do Timer 0 do arduino?

  2. Rodrigo às 22:11

    Euler! Tudo joia! Já tentei de tudo para instalar a biblioteca ESP8266Wifi… não consigo… dê-me uma luz!

  3. Rodrigo às 21:55

    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.

    • Euler Oliveira Autor às 08:41

      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.

  4. Carlos às 20:58

    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

  5. EDUARDO FARIAS BEZERRA às 16:42

    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.

    • Euler Oliveira Autor às 11:51

      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.

  6. marcello às 16:12

    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]

    • Euler Oliveira Autor às 16:55

      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.

  7. Amanda Julia às 18:56

    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?

    • Euler Oliveira Autor às 19:32

      Olá Amanda.

      Agradeço pelo comentário!

      Provavelmente deixou passar alguma etapa do tutorial ou não adicionou as bibliotecas no lugar correto.

  8. Paulo às 14:04

    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.

    • Euler Oliveira Autor às 16:36

      Olá Paulo.

      Agradeço pelo comentário!

      Que eu saiba, somente carregando o código atualizado no ESP8266 através do computador.

  9. Valter às 10:15

    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

    • Euler Oliveira Autor às 13:22

      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.

  10. Rodrigo às 17:38

    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!

    • Euler Oliveira Autor às 18:44

      Olá Rodrigo.

      Agradeço pelo comentário!

      Fico satisfeito em saber que o tutorial te ajudou.

      Vlw!!!

  11. Ana Beatriz às 12:34

    olá, qual o software que você montou esse esquema?

    • Euler Oliveira Autor às 19:26

      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.

  12. Erlan às 20:52

    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.

  13. vinícius borges silva ozelim às 18:52

    Boa noite,

    Não consigo descarregar o programa, da erro na ESP8266_Lib.h
    Você teria essa biblioteca?

  14. Ricardo às 08:20

    Olá Euler.
    Você poderia fornecer TODAS bibliotecas necessárias?
    Está aparecendo muito erro na compilação.
    Obrigado

  15. Rogerio às 00:28

    Só não entendi uma coisa , no ESP01 só terá o firmware AT e mais nada , correto ?

    • Euler Oliveira Autor às 16:03

      Olá Rato.

      Só com internet, mas você pode montar um servidor local.

  16. Wesley Melo às 22:15

    Ta certo esse Vin do arduino ligando no negativo na foto?

    • Euler Oliveira Autor às 06:57

      Olá Wesley.

      Agradeço por informar sobre este erro.

      Já fiz a correção no esquema de ligação.

      Obrigado!

  17. Igor Mota às 11:52

    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.

    • Euler Oliveira Autor às 11:55

      Olá Igor.

      Fico satisfeito em saber que o conteúdo do Blog está lhe agradando.

      Vlw!