Controlando o Sonoff através do Blynk e Interruptor Pulsador

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.

img00_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

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

Conhecendo o Blynk

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:

img01_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Na imagem abaixo temos a parte superior da placa do Sonoof e em destaque estão os pinos referente ao ESP8266:

 img02_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

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:

img03_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

Veja na tabela abaixo como deve ser feita a conexão entre o conversor USB serial e o Sonoff:

img04_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

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:

img05_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

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:

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

 img06_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

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

img07_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

No menu “Ferramentas” da IDE, selecione a opção “Placas”, role a lista e selecione “Generic ESP8266 Module”:

img08_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Ainda no menu “Ferramentas”, configure o “Flash Mode” como DOUT e “Flash Size” como 1M (64K SPIFFS). Veja na imagem abaixo como deverá ficar:

img09_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

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

img10_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

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:

img11_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

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:

img13_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

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:

img14_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

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:

img15_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

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:

img16_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

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:

img17_controlando_o_sonoff_atraves_do_blynk_e_interruptor_pulsador_arduino_esp8266_nodemcu_automacao_web_android_iphone_app_ewelink

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:
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 30 comentários para esta postagem
  1. Jeferson Gonçalves às 09:24

    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.

  2. Glauber Gallo às 09:01

    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

    • Euler Oliveira Autor às 14:49

      Olá Glauber.

      Agradeço pelo comentário e reconhecimento!

      Não temos este modelo de Sonoff para produzir algum conteúdo.

  3. Guilherme às 21:16

    Olá. Teria alguma forma de fazer os botões físicos funcionarem mesmo sem internet?

  4. Cristian Russo às 23:46

    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 ?

  5. Lucas Crestani às 12:12

    Como uso a função timer no Blink após substituir o firmware do sonoff?

  6. Junior às 11:02

    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?

  7. Edcarlos Melo às 22:32

    Boa noite tenho o sonoff Basic tem alguma forma de deixar ele compatível com controle transmissor 433

    • Euler Oliveira Autor às 07:15

      Olá Edcarlos.

      Da forma como a placa vem de fábrica não é possível.

  8. Junior às 10:25

    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.

    • Euler Oliveira Autor às 11:33

      Olá Junior.

      Infelizmente não tenho nenhum código de watchdog.

  9. Junior às 08:09

    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)

    • Euler Oliveira Autor às 08:41

      Olá Junior.

      Está utilizando interruptor pulsador? Se sim, configurou no código os pinos com INPUT_PULLUP?

      • Junior às 10:22

        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.

        • Euler Oliveira Autor às 11:15

          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.

  10. Marcus às 18:46

    Seria possível fazer um post sobre o módulo relé wi-fi esp8266 com interruptor ou pulsador ??
    Não tô conseguindo

    • Euler Oliveira Autor às 19:00

      Olá Marcus.

      Teria o nome completo deste Módulo Relé WiFi ESP8266 que está com dificuldade?

      No mercado há vários modelos.

  11. lucas às 15:07

    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?

  12. Leandro Alves Silva às 22:46

    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.

  13. Marlon às 14:33

    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?

    • Euler Oliveira Autor às 11:48

      Olá Marlon.

      Não há nenhum problema em utilizar pulsadores convencionais. Usei a chave gangorra só para fins de demonstração.

  14. Wellington Dias às 23:46

    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 🙂