Neste post, veremos como fazer um botão inteligente, que pode ser usado para controlar dispositivos de automação residencial. Utilizaremos um microcontrolador ESP8266 para acessar a internet e realizar a ação desejada.
Materiais Necessários
Para montar este projeto, serão necessários os seguintes componentes:
- Módulo ESP-01;
- Jumpers;
- Push-Button;
- Resistor 220Ω;
- LED Vermelho;
- Placa Perfurada;
- Bateria Li-Po 400mAh;
- Carregador de Bateria TP4056.
E as seguintes ferramentas:
Configuração
Neste projeto, utilizaremos o IFTTT para controlar um Sonoff com o botão inteligente. Siga os passos mostrados na seção Configuração IFTTT do post “Uso de Controle Remoto Infravermelho com aparelhos Sonoff”. Se quiser, pode associar a ação de apertar o botão com qualquer ação disponível no IFTTT.
Circuito
A montagem do circuito é relativamente simples e pode ser feita seguindo o esquema apresentado acima em uma placa perfurada ou conectando os componentes com auxílio de jumpers.
Código
Antes de carregar o código abaixo no microcontrolador, insira a chave do serviço Webhooks, o nome do evento de ligar e desligar definido no IFTTT e o nome e senha da sua rede WiFi no campo Configurações do código a seguir.
Para saber como carregar o código no ESP-01, acesse o post “Como usar o adaptador USB para ESP8266 ESP-01“.
/* #-------------------------# | BOTÃO | | INTELIGENTE | | Ítalo Coelho | #-------------------------# */ #include <EEPROM.h> #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> //Configurações----------------------------------------------------- #define LEDpin 3 //LED conectado ao pino RX #define Webhooks "insira-aqui-a-chave-do-serviço-webhooks" #define EventoLigar "insira-aqui-o-nome-do-evento-para-ligar" #define EventoDesligar "insira-aqui-o-nome-do-evento-para-desligar" #define MySSID "insira-aqui-o-nome-da-rede-wifi" #define MyWifiPassword "insira-aqui-a-senha-da-rede-wifi" //------------------------------------------------------------------ void IFTTTevent(String event) { HTTPClient http; String URL = "http://maker.ifttt.com/trigger/"; URL += event; URL += "/with/key/"; URL += Webhooks; http.begin(URL); //GET request URL http.GET(); //Envia GET Request http.end(); } void setup() { EEPROM.begin(4); byte control = EEPROM.read(1); control++; EEPROM.write(1, control); EEPROM.commit(); if(WiFi.SSID() != MySSID) { WiFi.mode(WIFI_STA); WiFi.begin(MySSID, MyWifiPassword); WiFi.persistent(true); WiFi.setAutoConnect(true); WiFi.setAutoReconnect(true); } pinMode( LEDpin, OUTPUT); if(WiFi.waitForConnectResult() == WL_CONNECTED) //Connected to WiFi { if(control == 1) //[1-Clique]: Liga o dispositivo { IFTTTevent(EventoLigar); } else if(control == 2) //[2-Clique]: Desliga o dispositivo { IFTTTevent(EventoDesligar); } EEPROM.write(1, 0); EEPROM.commit(); for(int i = 0; i < 512; i += 1) { analogWrite( LEDpin, i); delay(1); } for(int i = 512; i >= 0; i -= 1) { analogWrite( LEDpin, i); delay(1); } digitalWrite( LEDpin, LOW); } else //Falhou em conectar ao WiFi { digitalWrite( LEDpin, HIGH); delay(100); digitalWrite( LEDpin, LOW); } ESP.deepSleep(0); //Entra em Deep Sleep até ser reiniciado } void loop() { //vazio }
O programa se conecta à rede WiFi, envia o comando para o dispositivo que deseja controlar, aciona um LED indicando se foi bem sucedido e entra em modo Deep Sleep para economizar bateria. Para mais detalhes sobre o modo de economia de energia do ESP, acesse o post ”ESP8266 em Deep Sleep Mode através do IFTTT”.
PCB
Se preferir confeccionar uma placa de circuito impresso para montar esse projeto, acesse o post “Como fazer uma placa de circuito impresso de forma caseira“. O PDF com o design para confecção da PCB está disponível aqui: SmartButtonPCB. Os componentes mostrados na PCB são:
- R1 → Resistor de 10k;
- R2 → Resistor de 220;
- J1 → Conexão do LED;
- J2 → Conexão do Botão;
- J3 → Conexão da Bateria;
- J4 → Header para Programação (Opcional);
- J5 → Header para Mini Jumper.
Conclusão
A utilização do dispositivo é muito simples, um clique aciona a ação de ligar e dois cliques a de desligar. Se o LED piscar rapidamente apenas uma vez, significa que não foi possível se conectar ao WiFi; se ele pulsar lentamente, a conexão foi bem sucedida e o comando foi enviado. Para carregar a bateria, basta conectar um carregador de celular na entrada micro-USB.
Esse projeto pode ser usado para acionar qualquer ação disponível no IFTTT ou utilizado para controlar dispositivos de automação DIY, como os mostrados nos posts abaixo, através da rede local de forma quase instantânea.
Gostou de aprender a fazer um botão inteligente? Deixe um comentário aqui embaixo contando o que achou. Se ficou com alguma dúvida ou quiser compartilhar o resultado do seu projeto, acesse a nossa Comunidade Maker.