- Descrição: O Sensor de Umidade e Temperatura - DHT11 é um…
Blynk – Utilizando com o Módulo Ethernet ENC28J60 e Arduino
Nesta postagem você vai aprender a utilizar o Blynk em conjunto com o Módulo Ethernet ENC28J60 e o Arduino. O ENC28J60 é utilizado para atribuir ao Arduino conexão com a internet, dessa forma torna-se possível controlar a placa remotamente a partir de um smartphone, tablet ou página web, por exemplo.
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.
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.
Para demonstrar a integração entre o Arduino, o Módulo Ethernet ENC28J60 e o Blynk utilizei um módulo relé para acionamento de uma lâmpada e um sensor de temperatura. Através do Blynk uma lâmpada poderá ser ligada ou desligada e a informação da temperatura ambiente será mostrada na interface do aplicativo.
Será necessário que tenha o Blynk instalado e configurado no seu smartphone ou tablet, e que tenha a biblioteca Blynk instalada no IDE do Arduino. Acesse a postagem Conhecendo o Blynk, pois nela explico tudo isso detalhadamente.
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 Ethernet ENC28J60
01 – Módulo Relé 5V 1 Canal
01 – Sensor de Temperatura LM35
01 – Protoboard
01 – Fonte DC 9V 1A Bivolt Chaveada
04 – Cabos Jumper macho-macho
10 – Cabos Jumper macho-fêmea
01 – Lâmpada
01 – Receptáculo (boquilha)
– Cabo paralelo de 1,5mm ou 2,5mm
– Tomada (Rede alternada de 127V)
– Cabo de rede RJ45
Nas imagens a seguir você pode ver as conexões feitas entre o ENC28J60 e o Arduino, e o esquema de ligação completo com os demais componentes desta prática:
OBS: na tabela é mostrado as conexões que devem ser feitas entre o ENC28J60 e o Arduino Uno ou Arduino Mega 2560.
O uso da fonte de 9V 1A se faz necessário para que seja possível fornecer ao circuito a corrente necessária para funcionamento e que não haja queda de tensão no referencial de tensão da placa, que no caso é 5V por padrão. Após a montagem do circuito acima, conecte uma ponta do cabo de rede ao roteador e a outra porta conecte a porta ethernet no ENC28J60.
Em seguida, faça download da biblioteca para o ENC28J60:
Download biblioteca UIPEthernet
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 no 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 |
#include <UIPEthernet.h> //INCLUSÃO DE BIBLIOTECA #include <BlynkSimpleUIPEthernet.h> //INCLUSÃO DE BIBLIOTECA char auth[] = "YourAuthToken"; //AUTH TOKEN (FORNECIDO PELO PROJETO NO BLYNK E POR E-MAIL) BlynkTimer timer; //OBJETO DO TIPO BlynkTimer const int pinoRele = 8; //PINO DIGITAL UTILIZADO PELO MÓDULO RELÉ const int sensorPin = A2; //PINO ANALÓGICO UTILIZADO PELO SENSOR float temperatura = 0; //VARIÁVEL DO TIPO FLOAT void setup(){ pinMode(pinoRele, OUTPUT); //DEFINE O PINO COMO SAÍDA digitalWrite(pinoRele, HIGH); //MÓDULO RELÉ INICIA DESLIGADO Blynk.begin(auth); //INICIALIZA A COMUNICAÇÃO BLYNK timer.setInterval(1000L, sendUptime); //DEFINE O INTERVALO DE 1 SEGUNDO(1000L = 1000 MILISSEGUNDOS) } void sendUptime(){ //FUNÇÃO QUE OBTÉM A TEMPERATURA E ENVIA O VALOR OBTIDO PARA O WIDGET GAUGE temperatura = (analogRead(sensorPin) * 0.0048828125 * 100); //VARIÁVEL RECEBE A TEMPERATURA MEDIDA Blynk.virtualWrite(1, temperatura); //ENVIA AO WIDGET GAUGE (PINO VIRTUAL 1) O VALOR DA TEMPERATURA } void loop(){ Blynk.run(); //INICIALIZA O BLYNK timer.run(); //INICIALIZA O TIMER } |
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):
No menu “Ferramentas” selecione a opção “Placa” e selecione o modelo do seu Arduino. Ainda no menu “Ferramentas”, selecione a opção “Porta” e marque a porta COM em que seu Arduino foi alocado.
Clique no botão para enviar o código ao Arduino e aguarde o carregamento.
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 em seguida selecione o “Gauge”:
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 D8. As configurações deverão ficar similar a imagem abaixo:
Clique sobre o “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:
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 o pino virtual V1 nas configurações do widget “Gauge” e este pino será responsável por informar a temperatura medida pelo LM35.
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 no widget “Gauge” você pode ver a temperatura que está sendo medida pelo sensor.
Veja no vídeo abaixo o resultado final:
Caso o seu projeto no app Blynk esteja apresentando várias desconexões em intervalos curtos de tempo, pode ser necessário que você aumente o intervalo do heartbeat no arquivo BlynkConfig.h dentro da pasta de biblioteca do Blynk. Se após um determinado tempo o cliente não tiver respondido a uma mensagem (ping / heartbeat) enviada pelo servidor, o mesmo irá considerar que a conexão com o cliente foi perdida e irá encerrar esta conexão e o Blynk irá acusar “Heartbeat Timeout”.
Por padrão, o intervalo definido no heartbeat do arquivo BlynkConfig.h é de 10 segundos. Para alterar este valor, acesse a pasta de instalação das bibliotecas no IDE do Arduino. A pasta em que as bibliotecas são instaladas se chama “Arduino” e ela fica dentro da pasta “Documentos” do seu Windows. A pasta “Documentos” pode ter o nome do usuário do computador. Dentro da pasta “Arduino”, acesse a pasta “libraries”, e em seguida abra a sequência de pastas: “Blynk”, “src” e “Blynk”. Dentro da pasta há o arquivo BlynkConfig.h e você deve abrir o mesmo através do Bloco de Notas ou Notepad++. Com o arquivo aberto, procure pela linha “#define BLYNK_HEARTBEAT 10”:
O valor deverá ser alterado caso seu projeto no app Blynk venha recebendo muitas desconexões. Caso essa situação se aplique a você, mude o valor de 10 para 30 e faça um teste. Caso ainda haja desconexões, mude de 30 para 60 e faça um novo teste. Antes de editar o arquivo, feche todas as instâncias do IDE do Arduino que estiverem abertas.
A partir desta prática você pode incluir outros módulos e sensores para ir ampliando o seu projeto de automação residencial ou IoT.
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 – Sensor de Cor TCS230 (TCS3200)
Próxima postagem: Como usar com Arduino – Display LCD 84×48 Nokia 5110
Bom dia.
Euler, desde lhe parabenizo pelos conhecimentos e por compartilha-los.
Pretendo gerenciar muitos splits e a principal dívida é: Quantos dispositivos são suportados no App ?
Existe modelos para splits de 60 mil Btus ?
Muito obrigado.
Olá Juliano.
Agradeço pelo comentário!
O limite na verdade é baseado no tamanho da tela do dispositivo móvel que for utilizar e na quantidade de energia disponível no app Blynk para inserção de widgets.
O Blynk não é específico para controlar um determinado tipo de equipamento. Basta fazer a devida programação e poderá controlar diversos dispositivos elétricos e eletrônicos.
Gostei muito do projeto, mas fiquei na dúvida. Como faço caso queira usar uns 5 relés individuais? No relé serial sei que é usando as portas virtuais no App. Usando essa quantidade de relé, usa-se uma protoboard com metodo de portas virtuais? ou existe alguma outra forma?
Olá Wanderson.
Agradeço pelo comentário!
Será da mesma forma que mostrado na postagem, contudo, irá conectar cada módulo relé em um pino digital e no app Blynk irá adicionar mais widgets button e em cada um deles definir um pino digital referente a cada um dos módulos relés.