Nesse post vamos apresentar uma maneira de utilizar qualquer controle remoto infravermelho como meio de acionar dispositivos Sonoff, utilizando apenas uma placa de desenvolvimento baseado no ESP8266 e um Receptor Universal Infravermelho.
Com o projeto apresentado no post você pode facilmente utilizar um controle remoto sobressalente ou botões não utilizados do controle remoto da sua televisão para controlar as luzes e eletrodomésticos da sua casa.
Gostou da ideia? Então continue lendo 🙂
Materiais Necessários
Para montar esse projeto serão necessários os seguintes materiais:
- NodeMCU ESP-12E (placa de desenvolvimento baseada no ESP8266)
- Receptor Infravermelho
- Sonoff
- Jumpers
- Protoboard
Se você ainda não conhece os dispositivos Sonoff, acesse o post “Qual dispositivo Sonoff comprar?”
Montagem do Circuito
A montagem desse projeto é extremamente simples. O pino VCC do Receptor Infravermelho deve ser conectado ao pino 3V3 do NodeMCU, o pino GND do receptor ao GND do NodeMCU e o pino de dados do receptor a um pino digital do módulo – utilizaremos o D5.
Configuração IFTTT
Utilizaremos o IFTTT para enviar os comandos para a plataforma eWeLink quando fizermos um pedido GET através do ESP8266 ao URL fornecido.
O primeiro passo, é criar uma conta no serviço IFTTT através desse link ou do aplicativo mobile.
Após criada a conta, utilize a área de busca e escreva Webhooks. Vá na aba “Services” e clique em “Webhooks”.
No canto superior direito clique em “Documentation” você verá a frase “Your Key is:” seguido de uma senha em negrito que você deve anotar para uso posterior.
Na página inicial, vá em “Explore” (na web) ou “Get more” (no app) e clique em “Make your own Applets from scratch”.
Nesse momento você vai ser apresentado a uma página onde estará em destaque a frase If + This Than That. Clique em “This” para escolher a condição para a qual a ação será realizada.
Utilizaremos o serviço Webhooks, e a funcionalidade Receive a web request. Escolha um nome para o evento de ligar o seu interruptor e clique em “Create trigger”.
Agora você verá a frase If This Than + That. Clique em “That” para escolher a ação a ser realizada quando a condição é atendida.
Utilizaremos o serviço eWeLink que é a plataforma de controle padrão dos dispositivos Sonoff e cuja conta você criou no momento da configuração inicial do seu dispositivo. A atividade a ser selecionada é Turn 1 Channel Plug on or off. Escolha o dispositivo a ser controlado e selecione on.
Agora é só repetir o processo para desligar o dispositivo escolhendo um nome diferente para o evento do Webhooks e selecionando off na atividade do eWeLink. Caso deseje, o processo pode ser repetido para quantos dispositivos desejar.
Programação
Agora, precisamos obter os códigos referentes aos botões do controle remoto que deseja utilizar. Para isso vá até o gerenciador de bibliotecas da Arduino IDE e instale a biblioteca IRremoteESP8266.
Na IDE vá em Arquivo → Exemplos → IRremoteESP8266 → IRrecvDumpV2. Carregue esse sketch exemplo na sua placa. Para saber como carregar um programa no seu NodeMCU acesse “Como programar o NodeMCU com IDE Arduino”.
Após carregado o sketch e feita as conexões, abra o monitor serial. Aponte o controle remoto para o receptor e clique no botão que deseja utilizar para ligar o Sonoff. O monitor serial deve apresentar uma mensagem da forma abaixo.
Anote o código destacado, e repita o processo para o botão que deseja usar para desligar o dispositivo.
Com os códigos em mãos, copie o sketch abaixo para sua IDE e substitua os asteriscos nos locais indicados pela sua senha do serviço Webhooks, códigos do controle remoto, nome e senha da sua rede WiFi e o nome dos eventos para ligar e desligar os dispositivos.
No código abaixo o GPIO 14 (pino D5 da placa NodeMCU 1.0) está definido como o pino de dados do receptor infravermelho, caso seja necessário pode-se utilizar outro pino.
//Chave individual do serviço Webhooks #define Webhooks "**********************" //Códigos do controle a ser utilizado #define Ligado ********** #define Desligado ********** #define ssid "***********" //Substitua os asteriscos pelo nome da sua rede WiFi #define password "***********" //Substitua os asteriscos pela senha da sua rede WiFi #define kRecvPin 14 //Pino no qual o receptor infravermelho está conectado //Bibliotecas----------------- #include <IRac.h> #include <IRrecv.h> #include <IRtext.h> #include <IRutils.h> #include <Arduino.h> #include <ESP8266WiFi.h> #include <IRremoteESP8266.h> #include <ESP8266HTTPClient.h> //---------------------------- //Parâmetros da Biblioteca----- #define kTimeout 15 #define kMinUnknownSize 12 #define kCaptureBufferSize 1024 //----------------------------- //Declaração de Objetos------------------------------------- HTTPClient http; decode_results results; IRrecv irrecv(kRecvPin, kCaptureBufferSize, kTimeout, true); //---------------------------------------------------------- //Protótipos------------------ void IFTTTevent(String event); //---------------------------- void setup() { WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); //Espera a conexão com a rede ser bem sucedida while(WiFi.status() != WL_CONNECTED) { delay(100); } //Incia o Receptor Infravermelho #if DECODE_HASH irrecv.setUnknownThreshold(kMinUnknownSize); #endif // DECODE_HASH irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { if(results.value == Ligado) { IFTTTevent("*******************"); //Substitua pelo nome do evento para ligar o dispositivo! } if(results.value == Desligado) { IFTTTevent("*******************"); //Substitua pelo nome do evento para ligar o dispositivo! } } } void IFTTTevent(String event) { String URL = "http://maker.ifttt.com/trigger/"; URL += event; URL += "/with/key/" URL += Webhooks; http.begin(URL); //GET request URL http.GET(); //Send GET Request http.end(); }
Resultado
Com o projeto pronto, você pode colocá-lo próximo a sua televisão para que você possa apagar as luzes da sua casa ou ligar um ventilador de mesa sem levantar do sofá na hora de assistir um filme por exemplo. O dispositivo pode também ser usado para controlar as luzes de um quarto onde o interruptor fica longe da cama.
Gostou de aprender a controlar o Sonoff por Controle Remoto? Deixe um comentário aqui embaixo nos contando o que achou.