Botão inteligente Deixe um comentário

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.

Botão inteligente

Materiais Necessários

Para montar este projeto, serão necessários os seguintes componentes:

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

Botão inteligente

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

Botão inteligente

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.

Botão inteligente

Gostou de aprender a fazer um botão inteligente?


Se você tiver dúvidas, sugestões ou experiências para compartilhar, fique a vontade para deixar um comentário abaixo. E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.

Faça seu comentário

Acesse sua conta e participe