Exploraremos neste tutorial, como usar a Alexa, um assistente pessoal inteligente desenvolvido pela Amazon Lab126, popularizado pelo Amazon Echo e Echo-Dot.
Alexa é capaz de interação de voz, reprodução de música, fazer listas de tarefas, configurar alarmes, transmitir podcasts, tocar audiobooks e fornecer informações meteorológicas, de trânsito e outras informações em tempo real. Alexa também pode controlar vários dispositivos inteligentes usando-se como um hub de automação residencial. Vamos usar neste projeto, o "Echo-Dot", que permite aos usuários ativar o dispositivo usando um wake-word (no caso, "Alexa").
No espaço da Domótica (automação residencial), Alexa pode interagir com vários dispositivos diferentes como Philips Hue, Belkin Wemo, SmartThings, etc. Em nosso caso, emularemos dispositivos do tipo WeMo, como estes mostrados abaixo (mas por apenas uma fração de seu preço):
WeMo é uma série de produtos da Belkin International, Inc. que permitem aos usuários controlar eletrônicos domésticos de qualquer lugar. A suite de produtos inclui um interruptor, sensor de movimento, Insight Switch, interruptor de luz, câmera e app. O WeMo Switch (nosso caso aqui) pode ser conectado a qualquer tomada de casa, que pode ser controlada a partir de um iOS ou Android smartphone executando o WeMo App, via rede doméstica WiFi ou rede de telefonia móvel.
O diagrama abaixo mostra o que será desenvolvido em nosso projeto:
E o vídeo abaixo, mostra como ficará o projeto ao final:
.
Valores referenciais em USD
Algumas excelentes fontes de informação sobre o assunto poderão ser encontradas nos links abaixo: HOW TO MAKE AMAZON ECHO CONTROL FAKE WEMO DEVICES, escrito por Rick Osgut Building an IoT power switch with the ESP8266 (and control it with ... escrito por Wai Lun Amazon Alexa + WeMos switch made with Arduino D1 Mini , codigos desenvolvidos por Aruna Tennakoon: Projects using NodeMCU, conjunto de códigos desenvolvidos por Christopher Kuzma
Verifique se você possui todas as bibliotecas necessárias para executar o código, como: ESP8266WiFi.h, ESP8266WebServer.h e WiFiUdp.h. Caso não as tenha, você poderá obtê-las aqui: Arduino core for ESP8266 WiFi chip.
const char* ssid = "YOUR SSID";
const char* password = "YOUR PASSWORD";
Confirme se você definiu corretamente o pino onde o LED está conectado e dê um nome ao seu dispositivo. Alexa reconhecerá seu dispositivo por este nome:String device_name = "lights";
int relayPin = D1;
No meu caso, o dispositivo será denominado "lights". Aqui neste primeiro exemplo o dispositivo acionará um único LED, mas o NodeMCU poderia estar conectado a um relé que por sua vez poderia ligar as luzes de meu laboratório, por exemplo. Carregue o código no NodeMCU. No monitor serial você pode ver a mensagem "Connecting to UDP" e "Connection Successful". Isso significa que do lado NodeMCU tudo está OK.Estarei levando em consideração que voce já tenha o Echo-Dot instalado em sua rede., bem como o Alexa App em seu smartphone. Os procedimentos para a instalação de ambos é bem simples e basta seguir as instruções da Amazon fornecidas junto com o dispositivo.
Esta parte do projeto foi baseada em grande parte no tutorial de Charles Gantt, How To: DIY Home Automation With NodeMCU and Amazon Alexa.
int relayOne = 14; // NodeMCU pin D5
int relayTwo = 15; // NodeMCU pin D8
int relayThree = 3; // NodeMCU pin RX
int relayFour = 1; // NodeMCU pin TX
lightOne = new Switch("Light One", 80, lightOneOn, lightOneOff);Agora, você deve definir as 2 funções relacionadas a cada condição do dispositivo: Para as lâmpadas:
lightTwo = new Switch("Light Two", 81, lightTwoOn, lightTwoOff);
outletOne = new Switch("Outlet One", 82, outletOneOn, outletOneOff);
outletTwo = new Switch("Outlet Two", 83, outletTwoOn, outletTwoOff);
void lightOneOn() {
Serial.print("Switch 1 turn on ...");
digitalWrite(relayOne, LOW); // sets relayOne on}
void lightOneOff() {
Serial.print("Switch 1 turn off ...");
digitalWrite(relayOne, HIGH); // sets relayOne off
}
void lightTwoOn() {
Serial.print("Switch 2 turn on ...");
digitalWrite(relayThree, LOW); // sets relayTwo on
}
void lightTwoOff() {
Serial.print("Switch 2 turn off ...");
digitalWrite(relayThree, HIGH); // sets relayTwo Off
}
E para as tomadas:void outletOneOn() { Serial.print("Socket 1 turn on ..."); digitalWrite(relayFour, LOW); // sets relayThree on }Uma vez que estamos utilizando relés, poderíamos testar o projeto com qualquer tipo de dispositivo real como TVs, geladeiras, etc. Obviamente que pelas especificações dos relés utilizados neste projeto, os dispositivos estariam limitados a 250VAC/10A ou 30 VDA/30A. Em meu caso, decidi testar os 4 WeMo switches com dispositivos alimentados externamente com 5 V DC .
void outletOneOff() {
Serial.print("Socket 1 turn off ...");
digitalWrite(relayFour, HIGH); // sets relayThree off
}
void outletTwoOn() {
Serial.print("Socket 2 turn on ...");
digitalWrite(relayTwo, LOW); // sets relayFour on
}
void outletTwoOff() {
Serial.print("Socket 2 turn off ...");
digitalWrite(relayTwo, HIGH); // sets relayFour off
}
const char* ssid = "YOUR SSID";E pronto! Siga o mesmo procedimento como definido na etapa anterior para permitir que a Alexa encontre seus 4 dispositivos. O vídeo abaixo mostra uma demonstração desta etapa:
const char* password = "YOUR PASSWORD";
2. Declaração dos "callbacks" para os novos grupos de dispositivos:
Switch *allDevices = NULL;
Switch *bedRoom = NULL;
Switch *livingRoom = NULL;
3. No setup(), devemos associar os switches com os novos callbacks and Ports (Lembre-se que temos um máximo de 14 dispositivos que podem ser manipulados com este código):
void allDevicesOn();
void allDevicesOff();
void bedRoomOn();
void bedRoomOff();
void livingRoomOn();
void livingRoomOff();
allDevices = new Switch("All Devices", 84, allDevicesOn, allDevicesOff);4. Adicionando "Switches upnp Broadcast Responder" ao setup():
bedRoom = new Switch("Bed Room", 85, bedRoomOn, bedRoomOff);
livingRoom = new Switch("Living Room", 86, livingRoomOn, livingRoomOff);
upnpBroadcastResponder.addDevice(*allDevices);5. Adicionando as linhas ao loop():
upnpBroadcastResponder.addDevice(*bedRoom);
upnpBroadcastResponder.addDevice(*livingRoom);
allDevices->serverLoop();6. E finalmente, criemos as funções para os "grupos de dispositivos" com as ações a serem executadas quando a Alexa receber um comando de voz:
bedRoom->serverLoop();
livingRoom->serverLoop();
void allDevicesOn() {
Serial.print("All Devices turn on ...");
digitalWrite(relayOne, LOW); // sets relay1 on
digitalWrite(relayTwo, LOW); // sets relay2 on
digitalWrite(relayThree, LOW); // sets relay3 on
digitalWrite(relayFour, LOW); // sets relay4 on
}
void allDevicesOff()
{
Serial.print("All Devices turn off ...");
digitalWrite(relayOne, HIGH); // sets relay1 off
digitalWrite(relayTwo, HIGH); // sets relay2 off
digitalWrite(relayThree, HIGH); // sets relay3 off
digitalWrite(relayFour, HIGH); // sets relay4 off
}
void bedRoomOn()
{
Serial.print("Bed Room turn on ...");
digitalWrite(relayThree, LOW); // sets relay3 on
digitalWrite(relayFour, LOW); // sets relay4 on
}
void bedRoomOff()
{
Serial.print("Bed Room turn off ...");
digitalWrite(relayThree, HIGH); // sets relay3 off
digitalWrite(relayFour, HIGH); // sets relay4 off
}
void livingRoomOn()
{
Serial.print("Living Room turn on ...");
digitalWrite(relayOne, LOW); // sets relay1 on
digitalWrite(relayTwo, LOW); // sets relay2 on
}
void livingRoomOff()
{
Serial.print("Living Room turn off ...");
digitalWrite(relayOne, HIGH); // sets relay1 off
digitalWrite(relayTwo, HIGH); // sets relay2 off
}
Este procedimento de 6 passos poderá ser utilizado para qualquer comando, dispositivo ou grupo de dispositivos que você deseja adicionar ao seu projeto.
E não deixe de visitar e seguir minha página: MJRoBot.org no Facebook
"Saludos desde el sur del mundo"!
Nos vemos em meu próximo post!
Obrigado e um abraço
Marcelo
Comentar
Olá pessoal, estou a procura de uma pessoa para realizar um projeto de automação com Android. E estou em Cabo Frio. O que eu preciso é automatizar umas trancas elétricas de portão usando senha e bluetooth direto do celular. Tudo isso alimentado por uma bateria de carro ligada a um painel solar. Como isso é uma unidade móvel, gostaria de saber a possibilidade de ser rastreada com um módulo gps.
Fico no aguardo.
Obrigado
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)