Fale com o Arduino e controle-o com o Google Assistente
Componentes e suprimentos
| × | 1 | ||||
| × | 1 |
Aplicativos e serviços online
| ||||
|
Sobre este projeto
Neste projeto, aprenderemos como fazer uma conexão entre um serviço de Internet e placas Arduino. No final deste artigo, você irá:
- saiba como obter dados do Google Assistente
- saber como usar o protocolo IFTTT
- estar familiarizado com webhooks e solicitações http
- ser capaz de falar com seu Arduino
Assistente Google e miniaplicativos IFTTT
O Google Assistant é um assistente virtual com inteligência artificial desenvolvido pelo Google 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 Google Assistant pode se envolver em 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 do teclado também seja compatível. Da mesma maneira que o Google Now, o Assistente pode pesquisar na Internet, programar eventos e alarmes, ajustar as configurações de hardware no dispositivo do usuário e mostrar informações da conta do usuário do Google. O Google também anunciou que o Assistente será capaz de identificar objetos e coletar informações visuais por meio da câmera do dispositivo, e apoiar a compra de produtos e envio de dinheiro, bem como a identificação de músicas.
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 de miniaplicativos. Um miniaplicativo é acionado por alterações que ocorrem em outros serviços da web, como Gmail, Facebook, Telegram, Instagram ou Pinterest. Por exemplo, um miniaplicativo pode enviar uma mensagem de e-mail se o usuário tweetar usando uma hashtag ou copiar uma foto do Facebook para o arquivo do 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. Em 2015, os usuários do IFTTT criaram cerca de 20 milhões de receitas por dia. Todas as funcionalidades do pacote de aplicativos Do foram integradas em um aplicativo IFTTT redesenhado.
Conteúdo Webhook e 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 terceiros que podem não ser necessariamente afiliados ao site ou aplicativo de origem. O termo “webhook” foi cunhado por Jeff Lindsay em 2007 a partir do termo gancho de programação de computador.
Na computaçã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 valor de atributo e tipos de dados de array (ou qualquer outro valor serializável). É um formato de dados muito comum usado para comunicação navegador-servidor assíncrona, incluindo como um substituto para XML em alguns sistemas estilo AJAX.
Google Assistant 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 Assistant para a porta serial do Arduino. Em primeiro lugar, precisamos definir algumas frases específicas para o Google Assistente para descobrir o que queremos dizer. Em seguida, faremos um miniaplicativo no site do IFTTT e faremos uma conexão entre o Google Assistant 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!
Circuito
Implementação
Em primeiro lugar, você precisa de um dispositivo para executar o Google Assist. Acesse assistant.google.com e veja todos os dispositivos compatíveis com o assistente. Neste projeto, usamos um dispositivo de telefone Android. Abra ifttt.com e crie uma conta. Depois de entrar, clique em Meus miniaplicativos e, em seguida, clique em Novo miniaplicativo. Agora você pode adicionar seu serviço como ISTO em seu miniaplicativo. Clique em ISTO e pesquise por Google Assistant. Você tem 4 opções para definir sua frase para o Google Assist. Escolha a frase com um ingrediente numérico. Na próxima página você pode adicionar sua frase. Por exemplo, você quer dizer “Defina o PWM do pino 9 para 255”. Basta digitá-la 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 Google Assistant possa informá-lo de que seu comando foi compreendido e a ação necessária foi realizada, por exemplo “O PWM está atualizado”. Quando terminar, clique em Criar acionador. Na parte “AQUELE” do seu miniaplicativo, você tem muitos serviços para escolher, pesquisar por “Webhooks” e escolher isso. Clique em “Faça uma solicitação da web". Adicione o URL de seu servidor para receber dados. Defina o método no POST e selecione Application / json para o tipo de conteúdo. Agora você deve adicionar um corpo de conteúdo. Algo assim:{“Número”:”{ {NumberField}} ”}. Agora clique em“ Criar ação. "
Servidor e banco de dados
Escrevemos um código de amostra para o servidor para obter dados do IFTTT e armazená-los no banco de dados. Você pode alterar os modelos para que seus dados sejam armazenados de acordo com seu interesse. Baixe aqui.
ESP8266 e código Arduino
Primeiro, escrevemos um código para ESP-01 para obter dados do banco de dados e enviá-los ao Arduino pela 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 carregá-los nas placas.
Antes de usar a biblioteca ArduinoJson, você deve verificar se a biblioteca está instalada em seu computador. Para fazer uma verificação rápida, vá até o gerenciador de biblioteca no Arduino IDE (Sketch> Incluir Biblioteca> Gerenciar Bibliotecas) e digite “ArduinoJson” na caixa de texto, se você vir um rótulo verde “INSTALADO” ao lado do nome do biblioteca, isso significa que você está pronto para continuar e pode prosseguir para a próxima etapa. Caso você não veja o rótulo, clique na caixa / divisão uma vez e você verá o botão “Instalar”. Clique em instalar e você está pronto para a próxima etapa.
Agora, carregue este código no ESP-01
#include "ESP8266WiFi.h" #include "ESP8266HTTPClient.h" #include "ArduinoJson.h" // WiFi Parametersconst char * ssid ="YOUR_SSID"; const char * password ="YOUR_PASSWORD"; configuração vazia () {Serial.begin (115200); WiFi.begin (ssid, senha); while (WiFi.status ()! =WL_CONNECTED) {delay (1000); Serial.println ("Conectando ..."); }} void loop () {// Verifique o status do WiFi if (WiFi.status () ==WL_CONNECTED) {HTTPClient http; // Objeto da classe HTTPClient http.begin ("http:// yourip / api / Home / GetAllApp"); int httpCode =http.GET (); // Verifique o código de retorno if (httpCode> 0) {// Obtenha a carga útil da resposta da solicitação String payload =http.getString (); // TODO:Analisando Serial.println (carga útil); } http.end (); // Fechar conexão} // Atraso de atraso (3000);}
E este é o código para o Arduino receber pedidos do Google Assistant e executá-los.
String inputString =""; // uma String para manter o buff de DataString de entrada; bool stringComplete =false; // se a string é id da ferramenta completa; int f, buf; char x; void setup () {// inicializar serial:Serial.begin (9600); // reserva 200 bytes para a inputString:inputString.reserve (200);} void loop () {// imprime a string quando uma nova linha chega:if (stringComplete) {while (f <100) {if (inputString.substring ( f) =="id") {id =true; pausa; } f ++; } if (id ==true) {x =inputString.charAt (f + 4); } if (x =='4') {f =0; while (f <100) {if (inputString.substring (f) =="número") {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 ++;}} // limpar a string:inputString =""; stringComplete =false;}} void serialEvent () {while (Serial.available ()) {// obtenha o novo byte:char inChar =(char) Serial.read (); // adicione-o ao inputString:inputString + =inChar; // se o caractere de entrada for uma nova linha, defina um sinalizador para o loop principal pode // fazer algo sobre isso:if (inChar =='\ n') {stringComplete =true;}}}
O que vem a seguir?
Você pode melhorar este projeto como desejar. Aqui estão algumas sugestões:
- Tente adicionar seus comandos favoritos, como controlar os pinos de saída, você pode usar um módulo de relé e controlar a luz das salas.
- Tente enviar dados do Arduino para o Google Assistant.
Processo de manufatura
- Controle de acesso com QR, RFID e verificação de temperatura
- Controle remoto universal usando Arduino, 1Sheeld e Android
- Aceitar moeda de controle com Arduino
- Arduino com Bluetooth para controlar um LED!
- Arduino Nano:Controle 2 motores de passo com joystick
- Controle do Servo Motor com Arduino e MPU6050
- Dispositivos Bluetooth controlados por voz com OK Google
- u-blox LEA-6H 02 Módulo GPS com Arduino e Python
- Reconhecimento de fala e síntese com Arduino
- ThimbleKrox - Controle do mouse com os dedos