O avanço rápido da IoT (Internet of Things ou Internet…
Controlando o Sonoff através do Blynk e Interruptor Pulsador
Em artigos anteriores apresentei e ensinei a utilizar o Sonoff Básico e ensinei a fazer a substituição de firmware da placa para uso de códigos alternativos. Nesta postagem vou ensinar a utilizar o Sonoff em conjunto com o Blynk para fazer o acionamento de uma lâmpada remotamente através de smartphone ou tablet. Além disso, um interruptor pulsador vai ser conectado no Sonoff, permitindo uma segunda forma de acionamento da lâmpada.
ESTE TUTORIAL FOI EXECUTADO UTILIZANDO A PRIMEIRA VERSÃO DO SONOFF BÁSICO QUE É BASEADO NO ESP8266. PARA IDENTIFICAR SE O SEU SONOFF BÁSICO É DA NOVA VERSÃO, BASTA ABRIR A CAIXA ABS DO MESMO E VERIFICAR SE NA PLACA ESTÁ ESCRITO SONOFF RF R2 POWER V1.0. CASO AFIRMATIVO, O MÓDULO É BASEADO NO ESP8285 E NÃO SERÁ COMPATÍVEL COM ESTE TUTORIAL.
Se você ainda não conhece o Sonoff ou o Blynk, recomendo que leia estes artigos antes de continuar:
Conhecendo o Sonoff Relé WiFi para Automação Residencial
Substituindo o firmware original do Sonoff
A integração entre Sonoff e Blynk é ideal para usuários que já possuem um sistema de automação residencial todo gerenciado pelo Blynk e que desejam controlar cargas AC remotamente através do Sonoff sem depender do aplicativo eWeLink. Conforme mencionei no artigo Substituindo o firmware original do Sonoff, o Sonoff rodando o firmware original de fábrica não vai permitir que você possa inseri-lo em um sistema alternativo. Ou seja, você poderá usar apenas o app eWeLink ou outra ferramenta liberada pelo fabricante. Além disso, considerando que você esteja controlando uma lâmpada através do Sonoff, só irá conseguir fazer o acionamento da lâmpada através do aplicativo ou pelo push button que o módulo possui. Se quiser utilizar um interruptor pulsador externo, por exemplo, para que tenha um controle a mais sobre a lâmpada, isto não será possível, a não ser que faça uma pequena gambiarra e solde um interruptor pulsador em paralelo com o push button do módulo.
Portanto, ao final deste artigo teremos uma lâmpada conectada ao Sonoff sendo acionada remotamente através de um smartphone com o app Blynk e acionada manualmente através de um interruptor pulsador.
ATENÇÃO: A SUBSTUIÇÃO DO FIRMWARE PADRÃO DE FÁBRICA DO SONOFF É UM PROCESSO IRREVERSÍVEL! OU SEJA, APÓS SUBSTITUIR O FIRMWARE ORIGINAL, NÃO HÁ COMO FAZER A INSTALAÇÃO NOVAMENTE E O MÓDULO NÃO IRÁ MAIS FUNCIONAR COM O APLICATIVO eWeLink. PORTANTO, SÓ EXECUTE OS PROCEDIMENTOS AQUI ENSINADOS, CASO VOCÊ REALMENTE QUEIRA UTILIZAR O BLYNK COM O SONOFF. FAÇA POR SUA CONTA E RISCO!
Para prosseguir você vai precisar dos seguintes itens:
– Relé WiFi Interruptor Inteligente Sonoff
– Barra de pinos fêmea
– Ferro de solda e estanho
– Adaptador Conversor USB Serial TTL PL2303HX (ou outro conversor USB serial)
– Cabos jumper macho-fêmea
– Chave Gangorra KCD1-101 NA Preta 2T (Pulsante)
– Lâmpada
– Receptáculo (boquilha)
– Cabo paralelo de 1,5mm ou 2,5mm
– Tomada (Rede alternada de 127V)
– Roteador com conexão WiFi
Se estiver utilizando o PL2303HX e o mesmo não é reconhecido no seu Windows, acesse a postagem Conversor USB Serial TTL PL2303HX – Instalação no Windows 10, veja como resolver e em seguida retorne para continuar.
Na tabela abaixo você pode ver quais pinos do ESP8266 são utilizados no Sonoff e suas funções:
Na imagem abaixo temos a parte superior da placa do Sonoof e em destaque estão os pinos referente ao ESP8266:
Veja que a placa já conta com os terminais 3.3V / RX / TX / GND / GPIO14. Para poder fazer as conexões nestes terminais, é necessário soldar uma barra de pinos. Veja na imagem abaixo a barra fêmea de 5 vias já soldada na placa:
Veja na tabela abaixo como deve ser feita a conexão entre o conversor USB serial e o Sonoff:
Se precisar conferir a ordem dos pinos no Sonoff, basta acessar esta imagem.
Para fazer o envio de códigos ao ESP8266 é necessário que a GPIO0 esteja conectada ao GND pelo menos quando conectar o adaptador a porta USB. Portanto, mantenha pressionado o botão do Sonoff, conecte o conversor USB serial ao computador e em seguida solte o botão. Veja abaixo como deve ser feito:
Ao realizar este procedimento o ESP8266 entra em modo de gravação.
Se você utiliza alguma versão da IDE do Arduino inferior a 1.6.12, acesse a postagem Wemos D1 – Configurando a IDE do Arduino, veja como instalar o pacote ESP8266 na IDE e em seguida retorne para continuar.
Clique AQUI e veja como fazer a instalação do pacote de bibliotecas do Blynk na IDE do Arduino 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 48 49 50 51 52 53 54 55 56 57 58 59 60 |
#include <ESP8266WiFi.h> //INCLUSÃO DE BIBLIOTECA #include <BlynkSimpleEsp8266.h> //INCLUSÃO DE BIBLIOTECA char auth[] = "YourAuthToken"; //AUTH TOKEN (FORNECIDO PELO PROJETO NO BLYNK E POR E-MAIL) 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 const int relePin = 12; //PINO EM QUE O RELÉ ESTÁ CONECTADO const int pulsadorPin = 14; //PINO EM QUE O PULSADOR ESTÁ CONECTADO BlynkTimer timer; //OBJETO DO TIPO BlynkTimer void checkPhysicalButton(); //FUNÇÃO checkPhysicalButton int releState = HIGH; //ESTADO INICIAL DO RELÉ int pulsadorState = HIGH; //ESTADO INICIAL DO PULSADOR void setup(){ Blynk.begin(auth, ssid, pass); //INICIALIZA A COMUNICAÇÃO BLYNK INFORMANDO OS PARÂMETROS pinMode(relePin, OUTPUT); //DECLARA O PINO COMO SAÍDA pinMode(pulsadorPin, INPUT_PULLUP); //DECLARA O PINO COMO ENTRADA E ATIVA O RESISTOR INTERNO DE PULL UP DO ESP-01 digitalWrite(relePin, releState); //RELÉ RECEBE O ESTADO INICIAL timer.setInterval(100L, checkPhysicalButton); //DEFINE O INTERVALO DE 100 MILISSEGUNDOS(100L = 100 MILISSEGUNDOS) PARA EXECUÇÃO DA FUNÇÃO checkPhysicalButton } BLYNK_CONNECTED() { //FUNÇÃO QUE VERIFICA A CONEXÃO COM O SERVIDOR Blynk.syncVirtual(V2); //REQUISITA O ÚLTIMO ESTADO DO PINO VIRTUAL 2 } BLYNK_WRITE(V2) { //FUNÇÃO QUE MUDA O ESTADO DO RELÉ QUANDO O BOTÃO NO APP É PRESISONADO releState = param.asInt(); //VARIÁVEL RESPONSÁVEL POR RECEBER E ARMAZENAR O DADO VINDO DO APP digitalWrite(relePin, releState); //ALTERNA O ESTADO ATUAL DO RELÉ } void checkPhysicalButton(){ //FUNÇÃO QUE VERIFICA O PRESSIONAMENTO DO PULSADOR if (digitalRead(pulsadorPin) == LOW) { //SE LEITURA DO PULSADOR FOR IGUAL A LOW, FAZ if (pulsadorState != LOW) { //SE O ESTADO DO PULSADOR FOR DIFERENTE DE LOW (OU SEJA, HIGH), FAZ releState = !releState; //ESTADO DO RELÉ, RECEBE O ESTADO ATUAL INVERTIDO digitalWrite(relePin, releState); //ALTERNA O ESTADO ATUAL DO RELÉ Blynk.virtualWrite(V2, releState); //ATUALIZA NO WIDGET O ESTADO ATUAL (INDEPENDENTE SE FOI ACIONADO VIA APP OU PULSADOR) } pulsadorState = LOW; //ESTADO DO PULSADOR RECEBE LOW }else{ //SENÃO, FAZ pulsadorState = HIGH; //ESTADO DO PULSADOR RECEBE HIGH } } 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”;:
No menu “Ferramentas” da IDE, selecione a opção “Placas”, role a lista e selecione “Generic ESP8266 Module”:
Ainda no menu “Ferramentas”, configure o “Flash Mode” como DOUT e “Flash Size” como 1M (64K SPIFFS). Veja na imagem abaixo como deverá ficar:
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 COM20, porém, o seu módulo 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 e verificar a porta em que seu conversor USB serial está conectado, retornar na IDE e selecionar a porta COM.
Em seguida, clique no botão para enviar o código ao ESP8266 e aguarde o carregamento.
OBS: após enviar um código ao ESP8266, sempre que for enviar um novo código será necessário desconectar o conversor da USB, colocar a GPIO0 conectada ao GND (manter pressionado o botão do Sonoff antes de conectar o conversor USB serial) e inserir o conversor novamente na porta USB. Caso não faça desta forma, irá receber os erros espcomm_sync failed / espcomm_open failed / espcomm_upload_mem failed. Se tentar carregar o código no ESP8266 sem o mesmo estar em modo de gravação, também irá receber o erro:
Terminado o carregamento do código, 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 o “Button” para que ele seja inserido no contêiner do app:
Com o widget inserido no contêiner principal, clique sobre ele 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 (ESP8266, 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 V2 nas configurações do botão e este pino será responsável por acionar o relé do Sonoff e controlar o estado atual da lâmpada (ligada / desligada).
Terminado a configuração do widget, clique no botão de “Play” para iniciar a conexão e em seguida confira se o Sonoff está online:
Desconecte o conversor USB serial do computador e desconecte os cabos do Sonoff. Conecte um dos terminais do interruptor pulsador ao GND da placa e o outro terminal conecte a GPIO14. Veja na imagem abaixo como a conexão deve ser feita:
Note que fixei os dois cabos com cola quente para não ter problema de mau contato. Coloque a tampa do módulo e em seguida conecte a alimentação da rede AC aos terminais do borne de entrada (input) e depois conecte aos terminais de saída (output) os fios que serão conectados ao receptáculo da lâmpada.
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.
Feito as conexões o resultado final da montagem será similar a imagem abaixo:
Com o Sonoff alimentado pela rede AC, clique no botão de “Play” para iniciar a conexão. Agora basta pressionar o botão no app Blynk para acender ou apagar a lâmpada. Pressione também o interruptor pulsador para acender ou apagar a lâmpada. Note que o estado atual da lâmpada é mostrado no app Blynk independentemente se o acionamento é feito pelo aplicativo ou pelo interruptor pulsador.
Veja no vídeo abaixo o resultado final:
Aliado ao firmware original do Sonoff o app eWeLink já faz o acionamento remoto do relé instalado na placa e também permite o acionamento manual através do push button que faz parte do módulo, contudo, não há como utilizar o GPIO14 para conexão do interruptor pulsador, por exemplo. Logo, o uso do Blynk no Sonoff, permite controlar o módulo remotamente e permite também o uso da GPIO14 para acionamento de algum outro módulo, componente ou leitura de um sensor digital.
Na próxima postagem sobre o Sonoff e o Blynk vou ensinar a utilizar um sensor de temperatura e mostrar as informações no aplicativo.
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: Blynk – Como utilizar com ESP8266 ESP-01, NodeMCU e Wemos D1
Próxima postagem: Como usar com Arduino – Módulo Sensor de Temperatura LM35
Bom dia, amigo como outra pessoa poderá controlar o mesmo dispositivo usando o blynk e o mesmo token? Ex: controlar o portão de minha por mais de uma pessoa? Grato.
Olá Jeferson.
Agradeço pelo comentário!
Neste caso você pode compartilhar o seu projeto para que seja acessado em outro smartphone via app Blynk.
No tutorial há um trecho em que falo sobre o compartilhamento do projeto.
https://blogmasterwalkershop.com.br/blynk/conhecendo-o-blynk
Olá Euler, parabéns por suas publicações, elas são incríveis.
Gostaria de saber se você não consegue adequar esse código para trabalhar no Sonoff TH10/16 que tem sensor de temperatura DS18B20, para utilização no Blynk também.
Muito obrigado,
Glauber Gallo
Olá Glauber.
Agradeço pelo comentário e reconhecimento!
Não temos este modelo de Sonoff para produzir algum conteúdo.
Olá. Teria alguma forma de fazer os botões físicos funcionarem mesmo sem internet?
Ola!
Primeiramente queria agradecer por compartilhar tanta informação.
Gostaria de implementar um projeto semelhante mas não com o blynk e sim com o homekit, teria algum exemplo de instalação de um botão pulsante no sonoff e homekit ?
Olá Cristian.
Agradeço pelo comentário!
Sonoff com Pulsador e Homekit não temos nenhum tutorial ainda. Os únicos tutoriais que temos para o Sonoff e o Homekit podem ser vistos nos links abaixo:
https://blogmasterwalkershop.com.br/automacao/sonoff-compativel-com-o-homekit-app-casa-apple-iphone-ipad-ios/
https://blogmasterwalkershop.com.br/automacao/integrando-sonoff-com-homebridge-app-casa-siri-ewelink/
Como uso a função timer no Blink após substituir o firmware do sonoff?
Olá Lucas.
Agradeço pelo comentário!
Recomendo que verifique diretamente na documentação do Blynk:
http://docs.blynk.cc/
Tem como usar esse código ou até mesmo o blink com o wifimanager para quando mudarmos a senha da internet podermos mudar sem precisar carregar o código no ESP novamente?
Boa noite tenho o sonoff Basic tem alguma forma de deixar ele compatível com controle transmissor 433
Olá Edcarlos.
Da forma como a placa vem de fábrica não é possível.
Bom dia Euler, meu mestre!Rss
Amigo será que você não poderia passar um exemplo desse mesmo código seu, porém com aquele código Watchdog(que faz o reset automaticamente quando trava)juntos, para evitar travamento, porque aqui em casa eu não sei qual motivo ainda ta fazendo meu ESP travar. Ai não consigo fazer nada, só consigo se desligar e ligar ele.
Olá Junior.
Infelizmente não tenho nenhum código de watchdog.
Bom dia
Carreguei meu Esp32 DEVKIT V1 com seu código e funcionou, porém o relé fica ligando e desligando sozinho. Saberia me dizer o porque?(Já troquei as portas e não adiantou)
Olá Junior.
Está utilizando interruptor pulsador? Se sim, configurou no código os pinos com INPUT_PULLUP?
Obrigado!!! Acho que era isso mesmo, eu tinha deixado só INPUT quando estava testando com modulo Touch, agora retornando com INPUT_PULLUP com interruptor pulsador por enquanto não deu mais problema. Valeu obrigado.
Show de bola Junior!
Se não for ativado o resistor interno de PULLUP para o pino em que o pulsador está conectado, ocorre flutuação entre HIGH e LOW e por este motivo fica ligando e desligando.
Seria possível fazer um post sobre o módulo relé wi-fi esp8266 com interruptor ou pulsador ??
Não tô conseguindo
Olá Marcus.
Teria o nome completo deste Módulo Relé WiFi ESP8266 que está com dificuldade?
No mercado há vários modelos.
posso ligar quantas lampadas e 1 sonoff
Olá Juliano.
Conforme informado no artigo Conhecendo o Sonoff Relé WiFi para Automação Residencial, é possível conectar 1 carga na saída do Sonoff.
Se for um conjunto de lâmpadas, atente-se a para a potência máxima em 127V e 220V.
Mesmo seguindo os passos do artigo, quando descarrego o programa é mostrado o erro descrito na OBS: após enviar um código ao ESP8266, sempre que for enviar um novo código será necessário desconectar o conversor da USB, colocar a GPIO0 conectada ao GND (manter pressionado o botão do Sonoff antes de conectar o conversor USB serial) e inserir o conversor novamente na porta USB. Caso não faça desta forma, irá receber os erros espcomm_sync failed / espcomm_open failed / espcomm_upload_mem failed. Se tentar carregar o código no ESP8266 sem o mesmo estar em modo de gravação, também irá receber o erro.
O que pode ser?
Euler, no sketch com APP Blynk tem como acender um led também por URL?
Exemplo: além do botão ON/OFF do APP, eu enviar pelo browser http://192.168.0.1/led1ON…….é possível?
É possível sim, basta entrar nesse link e fazer as configurações necessárias:
https://blynkapi.docs.apiary.io/#reference/0/write-pin-value-via-get/write-pin-value-via-get?console=1
Consegui fazer funcionar, porem eles ficam desligando sozinhos.
Alguém pode me ajudar? Todo cabo que coloco com mais de cm faz o aparelho desamar.
Muito bom, muito esclarecedor.
Artigo muito bom! Parabéns. Tenho uma dúvida simples, já tenho alguns Sonoff e pretendo utilizá-los com pulsadores do tipo que são vendidos em lojas de material de construção. Tem algum problema? Existem diferenças entre esses pulsadores e o que você utilizou?
Olá Marlon.
Não há nenhum problema em utilizar pulsadores convencionais. Usei a chave gangorra só para fins de demonstração.
Top d+ @Euler Oliveira
Parabéns e obrigado por compartilhar!
Fiquei com uma duvida…. O blink mantem sempre a conexão com o sonoff para saber o estado da lampada(tipo socket) ou o aplicativo fica sempre solicitando o estado?
Agradeço se puder responder, novamente Obrigado por compartilhar 🙂