/
/
Utilizando o Google Assistente com o NodeMCU

Utilizando o Google Assistente com o NodeMCU

Sumário

Baixe agora a apostila Arduino Iniciante e comece seus projetos

Compartilhe seu conhecimento e receba em dinheiro ou produtos.

blog-eletrogate-assistente-google-capa

Introdução

Neste post, você aprenderá a desenvolver um sistema capaz de receber e interpretar dados do Google Assistente, que se aplica a vários projetos de IoT (Internet das Coisas) e automações residenciais, utilizando a ferramenta da Adafruit, com a tecnologia do Google Assistente, usando o IFTTT (Se Isso Então Aquilo) que intermediará a conexão do Google Assistente com a Adafruit.

Materiais Necessários para o Projeto Utilizando o Google Assistente com o NodeMCU

Para este tutorial você precisará dos seguintes componentes eletrônicos:

cta_cart Também será necessário ter: Mais abaixo, será detalhado o processo de criação das contas.

Dashboard na Internet

Para controlar as cargas via Internet é necessário ter uma plataforma da internet para gerenciar os dados de nosso Arduino. Iremos utilizar a plataforma da Adafruit IO. Para isso é necessário criar uma conta da Adafruit.

  • Acesse o site io.adafruit.com e clique no botão "Get Started for Free", localizado na parte direita superior da página.
Clique em Get Started for Free
  • Insira seus dados para realização do cadastro e em seguida clique em CREATE ACCOUNT.
Insira seus Dados para o Cadastro
  • Será solicitado selecionar o Fuso Horário em que você está. Após selecionar, clique em SAVE SETTINGS para salvar as configurações.
Selecione o Fuso Horário
  • Após a criação da conta, teremos que criar o dashboard, para que o IFTTT consiga ativar e desativar a carga, então acesse o site io.adafruit.com  e clique no menu
  • Depois que o menu abrir você deve clicar em Dashboard
  • Assim que você for redirecionado clique em "+ Dashboard"
  • Insira os dados, como o nome e a descrição e para criá-lo basta clicar em "Create"
  • Acesse o Dashboard clicando no nome do seu dashboard, como eu coloquei o meu de "Nome do projeto" eu irei clicar em "Nome do projeto"
  • Isto fará o seu dashboard abrir, e então clique no ícone de configurações (Canto Superior Direito).
  • Em seguida irá aparecer o menu de configurações do dashboard, então basta você clicar em "Create Block"
  • Abrindo o menu com todas as possibilidades de botões, mapas, sliders, nós iremos utilizar o botão do tipo "Toggle Button". Para selecionar ele clique no 1º bloco
  • E então irá abrir um menu onde você deve colocar o nome do feed (Lista de conteúdo atualizada: Ou simplificando a variável que armazena o estado do botão)
  • Preenchido, selecione o feed e clique em "Next Step" para passar para o próximo passo
  • Em seguida preencha os dados do botões, mas o título pode ser como você quiser (Eu escolhi "Relé 1"), já as outras opções preencha do jeito que está na imagem, e em seguida clique em "Create Block".
  • Agora, que terminamos a criação do dashboard, teremos que pegar os nossos dados do dashboard, para substituirmos no código
  • Isso fará que um menu se abra, e então role e clique em "View AdaFruit IO Key"
  • Caso não tenha aparecido o menu para você, basta clicar no botão da chave (Canto Superior Direito)
  • Ambos irão abrir esse menu (Imagem abaixo) e lá que estarão todas as suas credenciais que você deve substituir no seu código, para fazer isto basta substituir o "Username" pelo valor da variável "AIO_USERNAME" e substituir a "Active Key" pelo valor da variável "AIO_KEY"
Agora que já fizemos a criação do dashboard e a configuração das credenciais, vamos passar para o próximo passo que é criar os comandos, configurar o IFTTT e o Google Assistente

Criação dos Comandos

Para o google assistente conseguir comunicar com o Dashboard (Criado no passo anterior) ele precisará que alguém intermedie essa comunicação, ou seja, por isso que nós iremos utilizar o IFTTT (Se Isso Então Aquilo), então para utilizarmos teremos que criar uma conta na IFTTT

  • Para começarmos acesse o site da ifttt.com/join para a criação da sua conta
  • Depois de você ter feito o registro no IFTTT e ter preenchido as perguntas, você deverá clicar em "Create" para criar um Applet (Mini aplicativo)
  • Selecione o bloco do "Google Assistant V2" e clique em "Continue"
  • E clique em "Not now" para ignorar o teste grátis e clique em "Get Started"
  • Depois clique em "Create" novamente
  • Em seguida, basta você ignorar o aviso clicando em "Got It Thanks"
  • Agora, clique em "Add" para criar um comando "If This" (Se isso)
  • E procuramos por "Google Assistant" e selecionamos o bloco do Google Assistente
  • Proceda clicamos em "Active Scene”
  • Agora temos que sincronizar o Google Assistente com o IFTTT, basta clicar em “Connect” (Conectar)
  • Para conectarmos o Google Assistente ao IFTTT devemos acessar o Google Home pelo celular (Que pode ser encontrado na Google Play ou na Appstore), após baixar e acessar o "Google Home", nós iremos criar uma nova "Casa", selecione sua conta Google e clique em "Vamos começar"
  • Depois de ter clicado, clique para avançar clicando em "Próxima" e permita o Google Home acessar a sua localização clicando em "Durante o uso do app"
  • Ative o bluetooth clicando em "Ligar" e depois clique em "Permitir"
  • E defina que você não está configurando novos dispositivos, para isso, clique em "Agora não"
  • Após a criação da "Casa" acesse as Configurações através das engrenagens (No centro da tela)
  • Role até encontrar o botão "Compatíveis com o google" e clique nele
  • Agora procure pelo serviço do IFTTT e clique nele
  • Clique em continuar para proceder
  • Depois de clicar você será redirecionado para o site deles para que você entre com sua conta da IFTTT
  • Após você ter entrado com sua conta, você entrará em uma pagina para você autorizar o acesso do IFTTT para integra-lo com o Google Assistente, então clique em "Authorize".
  • Agora voltando para o computador, você vai escrever o nome do seu comando (Eu nomeie o meu de: ligar relé) e clique em "Create Trigger" para criar o "If this" (Se Isso).
  • Novamente iremos clicar em "Add" para adicionar um Then That "Então isso"
  • Procure por Adafruit e selecione o bloco da Adafruit
  • Selecione a caixa "Send data to Adafruit IO"
  • Assim como fazemos com o google iremos conectar com a AdaFruit
  • Role até encontrar o botão de autorização ("Authorize")
  • Agora basta selecionar o feed que colocamos no botão e colocar o valor como (1), ou seja, ligar (HIGH), e enviar clicando no botão "Create Action" (Criar Ação)
  • Depois de ter feito o Applet temos que finalizar ele, para isso clique em “Finish” (Finalizar)
  • Para desligarmos o relé devemos fazer o mesmo que fizemos para ligar, mas trocando o valor para (0) desligar, ou seja, LOW, como a imagem abaixo :
Depois de ter terminado a configuração do IFTTT, iremos para a configuração do Google Assistente
  • Agora novamente no celular, nós devemos  adicionar os comandos para que quando falarmos “Ligar relé” ou “Desligar relé” o google assistente executar o comando corretamente, para fazer isso devemos ir no google assistente, e clicar na sua foto de perfil e ir em “Configurações”
  • Depois de entrar nas configurações, nós devemos entrar rolar até encontrar por “Rotinas”
  • Após clicar em “Rotinas” nós devemos criar uma nova rotina em clicando em “Nova”
  • O tipo da rotina será do tipo “Pessoal”
  • Depois de sermos redirecionados para a página de criar uma ação nós devemos criar uma condição de início (Você falar: Ligar relé), e uma ação que ele deverá fazer.
  • Primeiramente eu editei o nome da rotina para “Ligar relé” e cliquei em concluído (Canto superior direito)
 
  • Clique em Concluir (Canto superior direito), depois cliquei para adicionar uma condição de ínicio da rotina, clicando em “Quando eu falar com o Google Assistente”
  • Depois cliquei para adicionar uma condição de ínicio da rotina, clicando em “Quando eu falar com o Google Assistente”
  • Depois disso somente configurei o que eu devia falar para que a ação ligasse o relé e clicar em "Adicionar condição de início"
  • Agora é só adicionar a ação que ele deveria executar, clicando em “Adicionar ação”
  • Clique em “Ajustar os dispositivos de casa”
  • Clique em “Adicionar cenas” e selecione o comando que você quer que ele execute, ou seja, ligar o relé.
  • Agora basta você salvar essa rotina e fazer o mesmo para o comando de desligar o relé.
Já com tudo pronto vamos para a configuração do ambiente, explicação do código e a montagem do circuito

Montagem do projeto

A montagem e a programação do projeto é bastante simples, a parte mais complicada foi a criação do dashboard e dos comandos. Então siga o diagrama abaixo, que mostra todas as ligações do projeto:  

  • Para continuarmos será necessário instalar a biblioteca 'Adafruit MQTT Library'
  • Abra o software Arduino IDE. Na guia Ferramentas, clique na opção Gerenciar Bibliotecas.
  • Em seguida, na barra de pesquisa digite: ‘Adafruit MQTT Library’. O primeiro resultado que aparecer, com o autor Adafruit, clique em Instalar.
  • Na janela que abrirá, clique em ‘Install all’.
Já com tudo instalado coloque o seguinte código na IDE da Arduino, mas não se esqueça de selecionar a porta "COM" correta e selecionar a placa NodeMCU assim como mostra neste blog
// Importação das bibliotecas
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

// Definição do pino do relé
#define relay D0

// Definição das configurações de Wifi
#define ssid "Nome do seu WiFi"
#define password "Senha do seu Wifi"

// Definição das configurações da AdaFruit
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883

// Substitua sua credencial da AdaFruit Aqui:

// Seu Username
#define AIO_USERNAME "Seu usuário adafruit"
// Sua Active Key
#define AIO_KEY "Sua key adafruit"

// Instanciação das classes do Wifi e da AdaFruit
WiFiClient client;

Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);

// Lembre de trocar com o nome do feed que você colocou no botão
Adafruit_MQTT_Subscribe relayOne = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/relay");

// Instanciação da função de conectar ao servidor da AdaFruit
void MQTT_connect();

void setup() {
  // Iniciação do Serial na porta 9600 (Baud Rate: taxa de transferência em bits por segundo)
  Serial.begin(9600);

  // Definição do pino do relé como SAÍDA
  pinMode(relay, OUTPUT);
  
  Serial.print("Connecting to ");
  Serial.println(ssid);

  // Tentar a conexão ao Wifi
  WiFi.begin(ssid, password);

  // Esperar a conexão ao Wifi
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println();

  Serial.println("WiFi connected");
  Serial.println("IP address: "); 
  Serial.println(WiFi.localIP());

  // Inscrever o feed do relé
  mqtt.subscribe(&relayOne);
}

void loop() {
  // Conectar ao servidor da AdaFruit e a instânciação da classe Adafruit_MQTT_Subscribe para pegar os dados do relé
  MQTT_connect();
  Adafruit_MQTT_Subscribe *subscription;
  
  while ((subscription = mqtt.readSubscription(20000))) {
    // Quando a inscrição do relé mudar
    if (subscription == &relayOne) {
      // Pegando o ultimo estado do relé
      uint8_t relayOne_State = *(relayOne.lastread) - '0';

      // Mostrar no monitor serial o estado do relé
      Serial.print(F("Got: "));
      Serial.println(relayOne_State);

      // Se for '0' desliga, se for '1' liga
      digitalWrite(relay, relayOne_State);
    }
  }
}

void MQTT_connect() {
  int8_t ret;

  // Se já estiver conectado não executar a função
  if (mqtt.connected()) {
    return;
  }

  Serial.print("Connecting to MQTT... ");

  // Definição da quantidade de tentativas para conectar ao servidor da Adafruit
  uint8_t retries = 3;

  // Se não estiver conectado ele irá tentar 3 (retries) vezes, se não conseguir conectar ele entrará em um loop infinito
  while ((ret = mqtt.connect()) != 0) {
    Serial.println(mqtt.connectErrorString(ret));
    Serial.println("Retrying MQTT connection in 5 seconds...");
    mqtt.disconnect();
    delay(5000); 
    retries--;
    if (retries == 0) {
      while (1);
    }
  }
  
  Serial.println("MQTT Connected!");
}
Depois de ter terminado você terá um resultado como esse :

Conclusão

Com este exemplo de controle de relés pela internet e pelo Google Assistente abrem-se portas para projetos mais complexos, e você pode fazer como eu implementei, adicionando respostas ao falar um comando e fazendo novas coisas. Caso ficou alguma dúvida, nos contate através dos comentários. Espero que o tenha ajudado e até a próxima.

Sobre o Autor


Dhaniel Brandão

Estudante do Ensino Médio, Hobbyista e Entusiasta em projetos com arduino e IoT. Com experiências em robótica, IoT e desenvolvimento web.

Neste post, você aprenderá a desenvolver um sistema capaz de receber e interpretar dados do Google Assistente, que se aplica a vários projetos de IoT (Internet das Coisas) e automações residenciais, utilizando a ferramenta da Adafruit, com a tecnologia do Google Assistente, usando o IFTTT (Se Isso Então Aquilo) que intermediará a conexão do Google Assistente com a Adafruit.

Precisa dos componentes para este projeto?

Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *