O IFTTT e o Adafruit IO são duas plataformas de nuvem populares para criar projetos baseados em IoT (Internet of Things) com facilidade e rapidez. Também usamos outro aplicativo Android popular "Blynk" para controlar o NINA B302 GPIO usando o telefone inteligente. Com algumas pequenas alterações no hardware, você pode substituir o LED por qualquer eletrodoméstico CA para controlá-lo remotamente de qualquer lugar usando a Internet.

Usaremos o Google Assistant com Adafruit IO para controlar um LED com NINA B302. Aqui usamos o IFTTT para acessar o Google Assistant e controlar o LED por comandos de voz. O NINA B302 foi programado usando o Arduino IDE.

Components Required

  1. Dispositivo ativado pelo assistente do Google.
  2. Conta no Adafruit IO
  3. Conta no IFTTT
  4. Conta do Google - a mesma conta para a qual você está usando o Google Assistant.

Passo1: Configurando a conta Adafruit IO para LED controlado por IOT


O Adafruit IO é uma plataforma criada no torno do Protocolo MQTT. O MQTT é um protocolo de mensagens leve que captura os clientes de rede com recursos limitados, uma maneira simples de distribuir informações de telemetria. O protocolo que usa um padrão de comunicação / publicação é usado para comunicação com máquina (M2M) e desempenha um papel importante na Internet das Coisas (IoT).

Para este projeto, você deve seguir as etapas a seguir para iniciar o Adafruit IO:

Visite https://io.adafruit.com e crie uma conta.
Depois de criar sua conta, você será direcionado para a tela inicial. Clique em "Feeds" no menu à esquerda.

Setting up Adafruit IO Account for IOT controlled LED

  • Agora clique em Ações e crie um novo feed. Em seguida, ele solicitará que você dê um nome ao seu feed. Estou dando a ele LED_Control, você pode fornecer de acordo com você e depois criar e seu feed é criado.

Create New Feed on Adafruit IO for IOT Controlled LED using ESP32                        

 

  • Agora vá para "Painéis" no menu à esquerda. Clique em Ações e, em seguida, clique em criar um novo painel, dê o nome que desejar; Estou dando "LEDSwitch" e, em seguida, clique em Criar e seu painel será criado.

Create New Dashboard on Adafruit IO for IOT controlled LED using ESP32

 

  • Agora abra seu novo painel clicando nele e você será direcionado para uma página em branco. Clicar no botão azul + permitirá adicionar novos componentes de interface do usuário ao painel.

Create New Block on Adafruit IO for IOT controlled LED using ESP32

                                   

  • Para este projeto, só preciso de um botão; portanto, selecione a primeira opção; ele solicitará que você selecione o feed; selecione o que você acabou de criar e mantenha os padrões para o restante das configurações.

Choose Block on Adafruit IO for IOT controlled LED using ESP32

 

  • Depois de selecionar a janela do painel, ficará assim:

Adafruit IO Dashboard for IOT controlled LED using ESP32

 

  • Durante a programação, você precisará da sua chave AIO exclusiva, portanto, para isso, clique no botão de chave no canto direito da sua janela.

Set AIO key for Adafruit IO for IOT controlled LED using ESP32

                                   

  • Durante a programação, você precisará da sua chave AIO exclusiva, portanto, para isso, clique no botão de chave no canto direito da sua janela.AIO key for Adafruit IO for IOT controlled LED using ESP32

 

Passo 2. Conectando-se ao Google Assistant através do IFTTT

Nesta etapa, conectaremos nosso Assistente do Google ao Adafruit IO MQTT Broker para permitir o controle das luzes com comandos de voz. Para fazer isso, estou usando a plataforma IFTTT (If This Then That).

Para fazer isso, você precisa seguir o seguinte procedimento:

Vá para o site www.IFTTT.com e crie uma nova conta, se ainda não o tiver. Você também pode se inscrever usando sua conta do Google.

Depois de criar uma conta, clique no seu nome de usuário no canto direito da janela e clique no botão "Novo Applet".

Connect to Goolge Assistant through IFTTT for IOT controlled LED using ESP32

                                 

  • Depois de clicar em Novo miniaplicativo, você encontrará uma janela que pergunta "Se isso, então aquilo". O termo "SE ESTE ENTÃO QUER" significa que algo acontece no "Isso", então nós fazemos algo no "Isso".

New Applet on IFTTT for IOT controlled LED using ESP32

 

  • Clique no botão + azul e pesquise "Assistente do Google" e selecione "Diga uma frase simples" no menu de gatilhos específicos. Isso solicitará alguns detalhes, preencha de acordo com você e crie um gatilho.

Create Trigger through IFTTT for IOT controlled LED using ESP32

                           

  • Agora você deve executar a ação. Clique no botão + de "Isso", procure Adafruit e clique em "Enviar dados para o Adafruit IO"
  • Agora, ele solicitará que você selecione o nome do Feed; portanto, selecione o feed que você criou anteriormente para este projeto e, em Dados a serem salvos, enviaremos ON para esse applet e clique na ação Criar.

Create Action through IFTTT for IOT controlled LED using ESP32

                  

  • Depois de criar este applet, você deve criar outro applet para desligar o LED. Você precisa seguir as mesmas etapas para criar outro applet.
  • Após criar os dois applets, vá para "Meus Applets" e você pode ver os dois applets aqui.

Set Trigger Command through IFTTT for IOT controlled LED using ESP32

 

Depois de instalar esta biblioteca, você estará pronto para usar o Adafruit IO com o NINA B302.

O código completo para este projeto é dado no final deste artigo, explicarei brevemente sobre o código e dirá onde você deve fazer as modificações.

No início do programa, você deve adicionar as seguintes bibliotecas:

#include <WiFiNINA_Generic.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <avr/dtostrf.h>  //incluir em WString.h

Agora você precisa definir o SSID da rede, a senha, o nome de usuário do Adafruit e a chave AIO que você obteve durante a instalação do Adafruit IO.

#define WLAN_SSID       "xxxxxx"
#define WLAN_PASS       "xxxxxxxxxxxx"
#define AIO_SERVER      "io.adafruit.com"
#define AIO_SERVERPORT  1883                  
#define AIO_USERNAME    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#define AIO_KEY         "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

 

Agora você precisa definir o LED para o qual está levando sua saída.

int output=8;  // NINA B302 P1.09, PAD 33

Agora, crie os objetos WiFiClient e Adafruit_MQTT_Client como variáveis ​​globais e instancie o feed do seu LED_Control.

WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);       
Adafruit_MQTT_Subscribe LED_Control = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/LED_Control");

Agora, na função de configuração , definiremos nosso pino de LED, taxa de transmissão e nos conectaremos ao WiFi e ao MQTT Server.

void setup() {
  Serial.begin(115200);
  delay(10);
pinMode(8,OUTPUT);
  Serial.println(); Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);
 WiFi.begin(WLAN_SSID, WLAN_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("WiFi connected");
  Serial.println("IP address: "); Serial.println(WiFi.localIP());
  mqtt.subscribe(&LED_Control);
}

 Agora, na função Loop, precisamos verificar se nossa assinatura foi atualizada e agir em conformidade.

void loop() {
MQTT_connect();
Adafruit_MQTT_Subscribe *subscription;
  while ((subscription = mqtt.readSubscription(5000))) {
    if (subscription == &LED_Control) {
      Serial.print(F("Got: "));
      Serial.println((char *)LED_Control.lastread);
       if (!strcmp((char*) LED_Control.lastread, "ON"))
{
        digitalWrite(2, HIGH);
      }
      else
      {
        digitalWrite(2, LOW);
      }
    }
  }
}

 

Por fim, inclua a função MQTT Connect para que a conexão MQTT seja estabelecida.

void MQTT_connect() {
  int8_t ret;
  if (mqtt.connected()) {
    return;
  }
  Serial.print("Connecting to MQTT... ");
  uint8_t retries = 3;​​​​​​
  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!");
}

Quando seu código estiver pronto para as modificações, você estará pronto para carregá-lo no NINA B302 a partir do IDE do Arduino.

Testando o controle do LED com o Google Assistant

Após o upload do código, abra seu monitor serial e seu monitor serial deverá ficar assim:

Testing LED Control with Google Assistant

Agora abra o assistente do Google no seu Android e dê um comando de voz como "Ligar o LED" ou "Desligar o LED" e ele responderá como você definiu anteriormente e também observará a alteração do estado do LED.


Algumas dicas

Utilize o Object Inspector para descobrir o Tópico do Relay bem Adafruit IOT key




IFTTT ORIENTA NA FRASE DE SOLICITAÇÃO AO GOOGLE

Testes com NINA B302

Foi utilizado um Device GOOGLE construído pelo autor.