- Requisitos de Hardware
- Fluxo de projeto para LED controlado por voz Alexa
- Configurando uma conta Adafruit para comunicação
- Vincular Alexa a Adafruit IO usando IFTTT
- Explicação do código ESP12
- Trabalhando:
Em tutoriais anteriores, vimos Como podemos construir um Amazon Echo Speaker e, em seguida, como podemos controlar qualquer Raspberry Pi GPIO usando Alexa Voice. Agora estamos fazendo um projeto de IoT para controlar eletrodomésticos de qualquer lugar do mundo usando AlexaPi e ESP-12E (ou qualquer placa ESP).
Requisitos de Hardware
- Raspberry Pi com AVS instalado
- USB 2.0 mic / webcam
- ESP-12E
- Módulo de relé
- Lâmpada LED / AC
Você deve ter seu Raspberry Pi pronto com o serviço de voz Alexa instalado nele com uma conta de desenvolvedor Amazon configurada corretamente. Então, vá até o tutorial abaixo para preparar os serviços do Alexa.
- Construa seu próprio Amazon Echo usando um Raspberry Pi
Fluxo de projeto para LED controlado por voz Alexa
Seguiremos este fluxograma para este projeto de LED controlado por IoT:
Então, o processo é mais ou menos assim. Primeiro, a entrada é fornecida ao Raspberry Pi por meio do microfone USB. Agora, essa gravação é enviada para os serviços de voz Alexa e após o reconhecimento de voz, o AVS envia os dados para o IFTTT e aciona a condição no IFTTT. De acordo com a receita, o IFTTT enviará o comando para Adafruit IO, que é o corretor MQTT para executar uma ação. Em seguida, o ESP 12e receberá os dados do Adafruit IO via protocolo MQTT e o LED ligará / desligará de acordo com o comando.
Aqui, usamos uma WebCam USB para microfone. Já usamos o serviço Alexa Voice para acender uma lâmpada, mas ele só pode lidar com aparelhos que estão conectados localmente.
Como presumimos que você já tenha o Raspberry Pi com os serviços Alexa Voice instalados, ficamos com as duas etapas abaixo, que explicaremos uma a uma:
- Configurando uma conta Adafruit para comunicação
- Vincular Alexa a Adafruit IO usando IFTTT
- Carregar código em ESP12
Configurando uma conta Adafruit para comunicação
Primeiro, faremos um feed em Adafruit IO. O feed armazena os dados enviados pelo IFTTT. Para fazer feed, siga estas etapas:
Etapa 1: - Faça o login no Adafruit IO com suas credenciais ou cadastre-se se você não tiver uma conta.
Etapa 2: - Clique em Minha conta -> Painel
Etapa 3: - Clique em Ações e crie um novo painel .
Passo 4: - Dê nome e descrição ao seu feed e clique em Criar .
Passo 5: - Clique no botão Chave e anote as Chaves AIO, usaremos esta chave em nosso código.
Passo 6: - Clique no botão '+' para criar um novo bloco e clique no botão Alternar.
Passo 7: - Agora, digite o nome do feed e clique em Criar . Em seguida, selecione o feed e clique em Próxima etapa.
Passo 8: - Nas configurações de bloco, escreva '1' no campo de texto Botão LIGADO e '0' no campo Texto Botão DESLIGADO .
Etapa 9: - Seu feed foi criado com sucesso.
Vincular Alexa a Adafruit IO usando IFTTT
Siga estas etapas para fazer um Applet / Receita no IFTTT:
Passo 1: - Faça login no IFTTT com suas credenciais ou cadastre - se se você não tiver uma conta nele.
Etapa 2: - Em Meus miniaplicativos, clique em Novo miniaplicativo
Etapa 3: - Clique em + this
Passo 4: - Pesquise Amazon Alexa e clique nele, entre com os detalhes da sua conta de desenvolvedor Amazon.
Etapa 5: - Escolha o gatilho, diga uma frase específica
Passo 6: - Forneça “ acender a luz” como a frase, clique em Create Trigger.
Etapa 7: - Clique em + isso
Passo 8: - Pesquise Adafruit e clique nele.
Etapa 9: - Faça login na conta Adafruit usando suas credenciais. Clique em Enviar dados para Adafruit .
Selecione o nome do feed que você acabou de criar no Adafruit IO. Agora, forneça '1' em dados para salvar, isso significa que o LED estará LIGADO. Clique em Criar ação .
Etapa 10: - Siga os mesmos passos para fazer com que os miniaplicativos desliguem o LED . Basta colocar '0' no campo Dados para salvar. Todas as etapas permanecem as mesmas.
Você fez metade do seu trabalho. Agora, é hora de programar seu ESP-12E.
Explicação do código ESP12
Vamos programar o ESP12 com o Arduino IDE. O código completo é fornecido no final deste tutorial.
Primeiro, precisamos de uma biblioteca Adafruit Mqtt, que pode ser baixada deste link. Basta abrir o IDE do Arduino. Vá para exemplos -> biblioteca adafruit mqtt -> mqtt_esp8266
Vamos editar este código de acordo com nossas chaves AIO e credenciais de Wi-Fi.
Primeiro, incluímos todas as bibliotecas para ESP8266WIFI e Adafruit MQTT .
#incluir
Definimos o SSID e a senha para o seu Wi-Fi, a partir do qual você deseja conectar o ESP-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Esta seção define o servidor Adafruit e a porta do servidor que são fixados como “ io.adafruit.com ” e “ 1883 ” respectivamente.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Substitua os campos abaixo com seu nome de usuário e chaves AIO que você copiou do site Adafruit enquanto fazia o Feed.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Em seguida, crie uma classe WiFiClient ESP8266 para se conectar ao servidor MQTT.
Cliente WiFiClient;
Configure a classe do cliente MQTT passando o cliente WiFi e o servidor MQTT e os detalhes de login.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Configure um feed chamado 'light' para inscrever-se nas alterações.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
Na função de configuração, declaramos o PIN do ESP-12e no qual você deseja obter a saída. Estou usando o pino D0 como saída. Em seguida, conectamos o ESP-12e ao ponto de acesso Wi-fi.
configuração vazia () { Serial.begin (115200); atraso (10); pinMode (D0, OUTPUT); Serial.println (F ("Adafruit MQTT demo")); // Conecte ao ponto de acesso WiFi. Serial.println (); Serial.println (); Serial.print ("Conectando a"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); enquanto (WiFi.status ()! = WL_CONNECTED) { …. … …
Configure a assinatura MQTT para alimentação leve.
mqtt.subscribe (& light); }
Na função de loop , iremos garantir que a conexão com o servidor MQTT esteja ativa usando MQTT_connect (); função.
loop vazio () { MQTT_connect ();
Agora, nós assinamos nosso feed 'light' e pegamos a string de adafruit IO e a convertemos em número usando atoi (); função e escreva este número para PIND0 usando digitalWrite (); função.
Assinatura Adafruit_MQTT_Subscribe *; while ((subscription = mqtt.readSubscription (5000))) { if (subscription == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, num); }
Trabalhando:
Conecte seu ESP-12E ao laptop e carregue o código abaixo (não se esqueça de editar suas credenciais no código).
Conecte um LED ou relé ao pino D0. Agora, certifique-se de que seu serviço Alexa esteja rodando em seu RPi.
Para dar qualquer comando, você precisa ativar o serviço Alexa chamando “Alexa” cada vez que quiser enviar um comando. Você ouvirá um som de bipe. Depois de ouvir o bipe, diga “ Alexa Trigger, ligue a luz. ”Você pode ver que a luz se acende em um momento. E então se você disser “ Alexa Trigger, desligue a luz ”, a luz deve desligar.
É isso aí…. Você pode adicionar mais dispositivos no código acima adicionando os pinos GPIO do ESP-12E e criando diferentes miniaplicativos com frases diferentes no IFTTT.
Verifique o código completo e o vídeo de demonstração abaixo. Confira também nossos projetos de automação residencial aqui