Controlando o Arduíno com o Assistente do Google. Aprenda como fazer uma conexão entre um serviço de internet e placas Arduíno.
Controlando o Arduíno com o Assistente do Google
Coisas usadas neste projeto:
Controlando o Arduíno com o Assistente do Google
Aplicativos de software e serviços online:
- Arduíno IDE
- Microsoft Visual Studio 2017
Controlando o Arduíno com o Assistente do Google
História
Neste projeto, aprenderemos como fazer uma conexão entre um serviço de Internet e as placas do Arduíno. No final deste artigo, você irá:
Controlando o Arduíno com o Assistente do Google
- Saber como obter dados do Assistente do Google.
- Saber como usar o protocolo IFTTT.
- Estar familiarizado com webhooks e solicitações http.
- Ser capaz de falar com o seu Arduíno.
Assistente do Google e miniaplicativos IFTTT
O Assistente do Google é um assistente virtual com inteligência artificial desenvolvido pelo Google e que está disponível principalmente em dispositivos móveis e domésticos inteligentes. Ao contrário do assistente virtual anterior da empresa, o Google Now, o Assistente do Google pode participar de conversas bidirecionais. Ele pode reconhecer suas palavras melhor do que qualquer dispositivo e responder rápida e corretamente aos seus comandos. Os usuários interagem principalmente com o Google Assistente por meio de voz natural, embora a entrada de teclado também seja compatível. Da mesma forma e natureza do Google Now, o Assistente pode pesquisar na Internet, agendar eventos e alarmes, ajustar configurações de hardware no dispositivo do usuário e exibir informações da Conta do Google do usuário. O Google também anunciou que o Assistente poderá identificar objetos e coletar informações visuais por meio da câmera do dispositivo, além de apoiar a compra de produtos e o envio de dinheiro, além de identificar músicas.
Controlando o Arduíno com o Assistente do Google
If This Then That, também conhecido como IFTTT, é um serviço gratuito baseado na web para criar cadeias de instruções condicionais simples, chamadas applets. Um applet é acionado por alterações que ocorrem em outros serviços da web, como Gmail, Facebook, Telegram, Instagram ou Pinterest. Por exemplo, um applet pode enviar uma mensagem de e-mail se o usuário twittar usando uma hashtag ou copiar uma foto no Facebook para o arquivo de um usuário se alguém marcar um usuário em uma foto. Além do aplicativo baseado na Web, o serviço é executado em iOS e Android. Em fevereiro de 2015, o IFTTT renomeou seu aplicativo original para IF e lançou um novo conjunto de aplicativos chamado Do que permite aos usuários criar aplicativos e ações de atalho. A partir de 2015, os usuários do IFTTT criaram cerca de 20 milhões de receitas por dia. Todas as funcionalidades do conjunto de aplicativos Do foram integradas em um aplicativo IFTTT reprojetado.
Webhook e conteúdo JSON
Um webhook no desenvolvimento da web é um método de aumentar ou alterar o comportamento de uma página da web ou aplicativo da web, com retornos de chamada personalizados. Esses retornos de chamada podem ser mantidos, modificados e gerenciados por usuários e desenvolvedores de terceiros que podem não necessariamente ser afiliados ao site ou aplicativo de origem. O termo “webhook” foi cunhado por Jeff Lindsay em 2007 a partir do gancho de termos de programação de computadores.
Controlando o Arduíno com o Assistente do Google
Na computação, o JavaScript Object Notation (JSON) é um formato de arquivo de padrão aberto que usa texto legível para transmitir objetos de dados que consistem em pares de atributo-valor e tipos de dados de matriz (ou qualquer outro valor serializável). É um formato de dados muito comum usado para comunicação assíncrona navegador-servidor, incluindo como substituto para XML em alguns sistemas no estilo AJAX.
Google Assistente para Arduino
Neste projeto, queremos controlar diferentes partes de um Arduino, como pinos de E / S, PWM, porta serial e assim por diante, enviando uma string do Google Assistente para a porta serial do Arduino. Primeiro de tudo, precisamos definir algumas frases específicas para o Google Assistente para descobrir o que queremos dizer. Em seguida, faremos um applet no site do IFTTT e faremos uma conexão entre o Google Assistente e nosso banco de dados. Depois disso, lemos os dados do banco de dados pelo módulo ESP8266 e os enviamos para o Arduino. Vamos começar!
Controlando o Arduíno com o Assistente do Google
Circuito:
Controlando o Arduíno com o Assistente do GoogleImplementação
Primeiro de tudo, você precisa de um dispositivo para executar sua assistência do Google. Acesse assistant.google.com e veja todos os dispositivos compatíveis com o assistente. Neste projeto, usamos um dispositivo de telefone Android. Abra o ifttt.com e crie uma conta. Depois de entrar, clique em Meus Applets e clique em Novo Applet. Agora você pode adicionar seu serviço como ISTO no seu applet. Clique em THIS e pesquise o Google Assistente. Você tem 4 opções para definir sua frase para o google assist. Escolha frase com um ingrediente numérico. Na próxima página você pode adicionar sua frase. Por exemplo, você quer dizer “Set PWM dos pinos 9 a 255”. Basta digitar como sua frase e substituir “255” por um símbolo “#”. Você pode adicionar mais frases com o mesmo significado como “PWM 9 a 255”. Agora, adicione uma resposta para que o Assistente do Google possa informar que seu comando foi entendido e que a ação necessária foi executada, por exemplo, “O PWM está atualizado”. Quando terminar, clique em Create Trigger. Na parte “THA” do seu applet, você tem muitos serviços para escolher a pesquisa de formulário para “Webhooks” e escolher isso. Clique em “Fazer uma solicitação da Web”. Adicione a URL do seu servidor para receber dados. Defina o método em POST e selecione Application / json como tipo de conteúdo. Agora você deve adicionar um corpo de conteúdo. Algo parecido com isto: {“Number”: ”{ {NumberField}} ”} Agora clique em“ Criar ação ”.
Servidor e Banco de Dados
Escrevemos código de amostra para o Servidor para obter dados do IFTTT e armazenar no banco de dados. Você pode alterar modelos para tornar seus dados armazenados como seu interesse.
Controlando o Arduíno com o Assistente do Google
Link de Download dos Arquivos:
Servidor – 8,70Mega – Aqui
Controlando o Arduíno com o Assistente do Google
Código ESP8266 e Arduino
Primeiro, escrevemos um código para o ESP-01 para obter dados do banco de dados e enviá-lo para o Arduino via porta serial. Em seguida, escrevemos outro código para o Arduino para obter dados do ESP-01 e executar o comando (por exemplo, alterar o PWM). Você pode usar o Arduino IDE para compilar os dois códigos e enviá-los para as placas.
Antes de poder usar a biblioteca ArduinoJson, você deve certificar-se de que a biblioteca esteja instalada em seu computador. Para fazer uma verificação rápida, vá até o gerenciador de bibliotecas no Arduino IDE (Sketch> Incluir Biblioteca> Gerenciar Bibliotecas) e digite “ArduinoJson” na caixa de texto, se você vir um rótulo “INSTALADO” na cor verde ao lado do nome do biblioteca, isso significa que você está tudo bem para ir e você pode prosseguir para a próxima etapa. Se você não vir o marcador, clique na caixa / divisão uma vez e verá o botão “Instalar”. Hit install e está tudo pronto para o próximo passo.
Agora, carregue este código no ESP-01
#include "ESP8266WiFi.h"
#include "ESP8266HTTPClient.h"
#include "ArduinoJson.h"
// WiFi Parameters
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
}
void loop() {
// Check WiFi Status
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http; //Object of class HTTPClient
http.begin("http://yourip/api/Home/GetAllApp");
int httpCode = http.GET();
//Check the returning code
if (httpCode > 0) {
// Get the request response payload
String payload = http.getString();
// TODO: Parsing
Serial.println(payload);
}
http.end(); //Close connection
}
// Delay
delay(3000);
}
E esse é o código do Arduino para receber pedidos do Google Assistente e executá-los.
String inputString = ""; // a String to hold incoming data
String buff;
bool stringComplete = false; // whether the string is complete
bool id;
int f,buf;
char x;
void setup() {
// initialize serial:
Serial.begin(9600);
// reserve 200 bytes for the inputString:
inputString.reserve(200);
}
void loop() {
// print the string when a newline arrives:
if (stringComplete) {
while (f < 100)
{ if (inputString.substring(f) == "id")
{
id = true;
break;
} f++;
}
if (id == true)
{
x = inputString.charAt(f + 4);
}
if (x == '4')
{ f = 0;
while (f < 100)
{ if (inputString.substring(f) == "number")
{ f += 9;
for (int i = 0; i < 3; i++)
{ if (inputString.charAt(f + i) == '"') i = 3;
else buff += inputString.charAt(f + i);
}
buf = buff.toInt();
analogWrite(9, buf);
break;
}
f++;
}
}
// clear the string:
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag so the main loop can
// do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}
Próximo passo:
- Você pode melhorar este projeto como desejar. Aqui estão algumas sugestões:
- Tente adicionar seus comandos favoritos, como controlar seus pinos de saída, você pode usar um módulo de relé e controlar as luzes dos quartos.
- Tente enviar dados do Arduino para o Google Assistente.
Créditos: