Se você acompanha nosso blog, você deve ter ficado bastante empolgado com um dos nossos últimos posts, que mostrava como fazer uma automação residencial bastante interessante, usando a Alexa, a assistente virtual da Amazon, integrando ela com o Módulo WiFi ESP8266 NodeMcu ESP-12E. Se você não sabe do que estou falando, clique aqui e veja o nosso post sobre Automação Residencial com a Alexa e NodeMCU.
Uma das coisas que ficou bastante perceptível nesse projeto, é que, apesar de o projeto ser bastante legal, versátil e mostrar uma possibilidade para implementação prática, ele tem o problema de que o NodeMCU fica sendo muito subutilizado, ocupando espaço que não precisava.
Tendo em vista isso, poderíamos então usar para o projeto o Módulo WiFi Serial ESP8266 ESP-01, que possui um tamanho bastante compacto com a quantidade de pinos o suficiente. Assim o projeto ficará perfeito para uma possível aplicação de uso final, para instalar na sua casa.
Para este projeto iremos precisar dos seguintes materiais e serviços
Gerou muitas dúvidas no último post quais seriam a vantagem desse serviço Sinric Pro, pois, existem outras formas de conectar o ESP ao controle da Alexa, como a biblioteca FauxmoESP, que é mais difundida para esse meio. A diferença entre esses métodos é que a biblioteca FauxmoESP faz com que o seu ESP simule um dispositivo IOT, e o Amazon Echo Dot se conecta ao ESP acreditando que ele é um dispositivo inteligente. Logo, esse método precisa de um Amazon Echo Dot para atuar como um hub IOT necessário para conectar os seus aparelhos a internet, e sem a aquisição de Amazon Echo Dot não há a opção de usar a Alexa.
A principal vantagem do Sinric Pro é que ele faz uma conexão direta dos dispositivos à Cloud própria deles, onde eles dão acesso a relatórios de uso, uso em diversas plataformas, e a não necessidade de ter um Amazon Echo Dot, pois a comunicação é feita diretamente entre a Cloud da Sinric Pro e o servidor da Alexa, através das configurações feitas no aplicativo Alexa.
Dessa forma, quando você opta por usar os serviços Sinric Pro, você possui de forma gratuita 5 dispositivos para colocar na nuvem, e ter acesso a esses dispositivos tanto pela Alexa, futuramente pelo Google Home, e também é possível acessar pelo aplicativo proprietário deles, que vale a pena conferir.
Link para o aplicativo Sinric Pro
Se você gostou dos serviços Sinric, e quer ter mais que 5 dispositivos, saiba que estaremos sorteando futuramente 2 licenças para 10 dispositivos, com validade 1 ano! No final do post falarei mais sobre isso.
Nessa sessão iremos falar sobre os outros componentes do nosso projeto, que é basicamente o mesmo texto presente no outro post. Se você já leu esse post e já conhece o ESP-01, você pode pular para a próxima sessão.
ESP8266 ESP-01: Será a placa de desenvolvimento usada neste projeto, o funcionamento dela é similar as placas Arduino, mas com algumas peculiaridades que fazem ela ser a escolha melhor para este projeto:
Um ponto marcante nessa placa também é que ela não se encaixa diretamente na Protoboard, logo, iremos precisar de um adaptador DIP para essa função.
Se você é iniciante no universo Arduino, clique aqui e leia mais sobre. Aqui no blog você achará outros posts ensinando a programar, como este, ou baixe alguma de nossas apostilas que estão disponíveis gratuitamente.
Se caso você não conhece a placa ESP-01 ou quer saber mais sobre ele funcionando em outros projetos, você poderá aprender mais sobre ela clicando neste nosso post.
Módulo Relé: Um relé funciona como uma chave que basicamente tem a função de interromper a conexão de um circuito, fisicamente, ou fazer a função dele. Pode-se imaginar que um relé é como um botão que é comandado eletricamente.
Ele possui dois tipos de funcionamento: Normalmente Aberto, onde ele irá funcionar exatamente como um botão: quando acionado ele fecha a conexão entre dois fios, e quando não acionado ele interrompe. Também possui o funcionamento Normalmente Fechado, que é o inverso do apresentado anteriormente, onde, quando acionado ele abre a conexão entre dois fios, e quando não acionado ele fecha a conexão.
Para aprender mais sobre um relés, clique aqui.
Importante: Esse relé é acionado com o comando LOW, sendo que o seu estado desligado é com o HIGH.
Amazon Alexa: A Alexa se tornou muito conhecida como assistente pessoal desde o seu lançamento, em 2014, para rivalizar com outras assistentes do mercado. Graças ao investimento da Amazon em dispositivos de automação residencial, a Alexa se tornou cada vez mais presente nesse segmento. Há diversos aparelhos domésticos que já são integrados com a Alexa nativamente através do Amazon Echo Dot, como TVs, ar condicionados, etc, que poderão ser usados neste projeto se você possuir um.
A Alexa funciona através de comandos de voz, onde você pode gerenciar desde alarmes, lembretes, agenda, bem como perguntar informações gerais como clima, notícias, etc.
O mais importante a se citar é que ela consegue identificar de forma automática dispositivos conectados a ela, através da rede ou de “skills” de terceiros, que é basicamente a conexão dela a serviços de terceiros, que será o que usaremos.
É muito comum ter em mente que o ESP-01 só possui 2 pinos disponíveis, que é o GPIO_0 e o GPIO_2, e muitas pessoas que já usam essa placa a mais tempo também pensam isso, pois é essa informação que geralmente temos na internet. Mas aqui você vai aprender que podemos expandir os pinos disponíveis para 4, sem nenhum adicional, só abrindo mão da conexão serial (que não iremos usar aqui)
Dessa forma, o ESP-01 fica com exatamente a quantidade de pinos que precisamos para controlar o relé de 4 canais.
O pinout do ESP-01 é este:
E usaremos os pinos GPIO_0, GPIO_1, GPIO_2 e GPIO_3, assim abrindo mão da conexão serial.
O que faremos na primeira parte deste tutorial é justamente realizar uma conexão do relé com o ESP-01, para testar suas 4 saídas. Se você não sabe como gravar programas no ESP-01, veja nosso tutorial demonstrando como fazer isso: clicando aqui.
Para facilitar a conexão do ESP-01 a protoboard, usaremos o adaptador DIP. Ele facilita o trabalho, pois já faz um pinout em sua carcaça, e se encaixa perfeitamente a protoboard.
E a forma correta de se encaixar é assim, no sentido inverso do adaptador USB, pois, do outro jeito poderá ocasionar danos permanentes a sua placa se energizado.
Lembrando que o ESP-01 funciona em 3V3, para isso iremos precisar usar um regulador de tensão para 5V, que é a fonte de tensão que estamos usando no projeto. Esse regulador se encaixa perfeitamente na protoboard, possui LED de indicação de funcionamento e já vem com seus pinos marcados, o que facilita o uso.
A montagem na protoboard deve ser a seguinte::
E agora iremos fazer a gravação do código no ESP-01. Se você não sabe configurar a sua Arduino IDE para gravar programas em ESP8266, clique aqui e faça as configurações.
Com tudo configurado, vamos enviar um programa que faz o acionamento de um relé por vez. O código é este:
// Aqui definimos o pino de cada relé #define Rele1 0 #define Rele2 1 #define Rele3 2 #define Rele4 3 void setup() { //Aqui definimos cada pino de relé como saída pinMode(Rele1, OUTPUT); pinMode(Rele2, OUTPUT); pinMode(Rele3, OUTPUT); pinMode(Rele4, OUTPUT); } void loop() { //Aqui fazemos com apenas um relé seja LOW, e todos os outros HIGH, e vai alternando a cada segundo digitalWrite(Rele1, LOW); digitalWrite(Rele2, HIGH); digitalWrite(Rele3, HIGH); digitalWrite(Rele4, HIGH); delay(1000); digitalWrite(Rele1, HIGH); digitalWrite(Rele2, LOW); digitalWrite(Rele3, HIGH); digitalWrite(Rele4, HIGH); delay(1000); digitalWrite(Rele1, HIGH); digitalWrite(Rele2, HIGH); digitalWrite(Rele3, LOW); digitalWrite(Rele4, HIGH); delay(1000); digitalWrite(Rele1, HIGH); digitalWrite(Rele2, HIGH); digitalWrite(Rele3, HIGH); digitalWrite(Rele4, LOW); delay(1000); }
Se você ficou em dúvida do porquê de acionar com o comando LOW, e não HIGH, saiba que essa é uma características desses módulos relé, que possui um resistor de Pull-up interno para receber os comando.
Uma coisa legal de comentar é a pratica de elegância de códigos. Muitas vezes gastamos extensas linhas de código de forma inútil, onde poderíamos resumir o código em poucas linhas, economizando espaço na memória do Arduino. Para algumas aplicações isso é muito necessário.
Abaixo veremos esse mesmo código, com o mesmo comportamento, de maneira bem mais condensada.
void setup() { for(int i = 0; i < 4; i++) pinMode(i, OUTPUT); // Seta todas as portas como saída } void loop() { for(int i=0; i<4; i++){ for(int j=0; j<4; j++) digitalWrite((i+j)%4,constrain(j,0,1)); // Faz com que apenas uma saída seja LOW a cada segundo, e todas as outras HIGH delay(1000); } }
Se desejar, faça o envio de ambos os programas e veja que o comportamento é igual.
O resultado deverá ser este:
Para prosseguir, você já precisará ter feito a conta na Sinric Pro e ter baixado o App da Amazon Alexa. Se você não sabe como criar as contas e realizar a criação dos dispositivos, vá no post “Automação Residencial com Alexa e NodeMCU” e leia a parte “Executando o projeto“.
Lembrete: É necessário instalar a biblioteca Sinric Pro.
Este código está refinado em relação ao do último post, onde foi corrigido o problema de precisar usar o relé no modo Normalmente Fechado (NF).
#include <ESP8266WiFi.h> #include "SinricPro.h" #include "SinricProSwitch.h" #define WIFI_SSID "Coloque_Aqui_o_nome_do_seu_WiFi" #define WIFI_PASS "A_Senha_do_seu_WiFi" #define APP_KEY "Coloque aqui a chave do app, que você acha lá no site do Sinric Pro" // O seu App Key é algo como "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx" #define APP_SECRET "Coloque o senha do app, está na parte de credenciais" // O seu App Secret é algo como "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx" #define Abajour_ID "Copie e cole aqui O ID do seu dispositivo" // Algo como "5dc1564130xxxxxxxxxxxxxx" #define Lampada_ID "Copie e cole aqui O ID do seu dispositivo" // Algo como "5dc1564130xxxxxxxxxxxxxx" #define Regua_ID "Copie e cole aqui O ID do seu dispositivo" // Algo como "5dc1564130xxxxxxxxxxxxxx" #define Ventilador_ID "Copie e cole aqui O ID do seu dispositivo" // Algo como "5dc1564130xxxxxxxxxxxxxx" #define Abajour_Pin 0 // O pino fisico onde está ligado #define Lampada_Pin 1 // O pino fisico onde está ligado #define Regua_Pin 2 // O pino fisico onde está ligado #define Ventilador_Pin 3 // O pino fisico onde está ligado #define BAUD_RATE 9600 // Se precisar, pode trocar o baud rate void setupWiFi(); void setupSinricPro(); bool AbajourState(const String &deviceId, bool &state); bool LampadaState(const String &deviceId, bool &state); bool ReguaState(const String &deviceId, bool &state); bool VentiladorState(const String &deviceId, bool &state); // main setup function void setup() { setupWiFi(); setupSinricPro(); pinMode(Abajour_Pin, OUTPUT); pinMode(Lampada_Pin, OUTPUT); pinMode(Regua_Pin, OUTPUT); pinMode(Ventilador_Pin, OUTPUT); digitalWrite(Abajour_Pin, HIGH); digitalWrite(Lampada_Pin, HIGH); digitalWrite(Regua_Pin, HIGH); digitalWrite(Ventilador_Pin, HIGH); } void loop() { SinricPro.handle(); } bool AbajourState(const String &deviceId, bool &state) { digitalWrite(Abajour_Pin, !state); return true; // request handled properly } bool LampadaState(const String &deviceId, bool &state) { digitalWrite(Lampada_Pin, !state); return true; // request handled properly } bool ReguaState(const String &deviceId, bool &state) { digitalWrite(Regua_Pin, !state); return true; // request handled properly } bool VentiladorState(const String &deviceId, bool &state) { digitalWrite(Ventilador_Pin, !state); return true; // request handled properly } // setup das conexões Wifi void setupWiFi() { WiFi.begin(WIFI_SSID, WIFI_PASS); while (WiFi.status() != WL_CONNECTED) { delay(250); } } // setup das funções para o SinricPro void setupSinricPro() { // add devices and callbacks to SinricPro SinricProSwitch &mySwitch1 = SinricPro[Abajour_ID]; mySwitch1.onPowerState(AbajourState); SinricProSwitch &mySwitch2 = SinricPro[Lampada_ID]; mySwitch2.onPowerState(LampadaState); SinricProSwitch &mySwitch3 = SinricPro[Regua_ID]; mySwitch3.onPowerState(ReguaState); SinricProSwitch &mySwitch4 = SinricPro[Ventilador_ID]; mySwitch4.onPowerState(VentiladorState); // setup SinricPro SinricPro.onConnected([](){ }); SinricPro.onDisconnected([](){ }); SinricPro.begin(APP_KEY, APP_SECRET); }
Se você não sabe oque é o APP_KEY e APP_SECRET, volte no outro post, que há uma explicação detalhada em como conseguir esses dados.
Se você criou novos dispositivos no Sinric, você precisará ir no App Alexa e sincronizar seus novos dispositivos. (instruções no post antigo na parte “Integrando a Alexa ao projeto“).
Depois de ter o programa gravado com sucesso, você pode remover o ESP-01 do adaptador e encaixar de novo no adaptador DIP, e energizar, com a mesma montagem antiga. O resultado deverá ser este:
E para fazer a ligação final para automatizar seus componentes, você pode seguir o diagrama abaixo:
Atenção: Se você for criança ou não tenha experiência, peça ajuda a um adulto experiente, pois montagens mal feitas podem ocasionar em acidentes sérios.
Feito tudo, o resultado será idêntico ao do post anterior, com a vantagem de economizar recursos e espaço.
Nossos clientes sempre merecem o melhor, e por isso vamos sortear 2 licenças do Sinric Pro com 10 dispositivos, para que você possa automatizar toda a sua casa. A licença será válida por um ano.
Fique atento ao nosso instagram (@eletrogate), porque lá iremos fazer a divulgação do sorteio e a regra para participar.
Então, se você não nos segue no instagram, não espere! Comece a seguir agora e fique por dentro das nossas dicas de projeto, sorteio e novidades da Eletrogate.
Gostou do projeto? Deixe um gostei para nos incentivar a sempre trazer conteúdos legais! Já sabia que dava para fazer com o ESP-01 e já tinha feito? Deixe um comentário relatando como você implementou.
Você montou o projeto e já está automatizando sua casa? Tire uma foto ou grave um vídeo e marque a gente no instagram: @eletrogate.
Em caso de dúvidas ou sugestão, deixe um comentário!
Muito obrigado por ter lido até aqui!
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!