Parler à Arduino et le contrôler avec l'Assistant Google
Composants et fournitures
| × | 1 | ||||
| × | 1 |
Applications et services en ligne
| ||||
|
À propos de ce projet
Dans ce projet, nous allons apprendre à établir une connexion entre un service Internet et des cartes Arduino. À la fin de cet article, vous :
- savoir comment obtenir des données de l'Assistant Google
- savoir utiliser le protocole IFTTT
- être familier avec les webhooks et les requêtes http
- être capable de parler à votre Arduino
Assistant Google et applets IFTTT
L'assistant Google est un assistant virtuel basé sur l'intelligence artificielle développé par Google et principalement disponible sur les appareils mobiles et domestiques intelligents. Contrairement à l'assistant virtuel précédent de l'entreprise, Google Now, l'assistant Google peut engager des conversations bidirectionnelles. Il peut reconnaître vos mots mieux que n'importe quel appareil et répondre rapidement et correctement à vos commandes. Les utilisateurs interagissent principalement avec l'assistant Google via la voix naturelle, bien que la saisie au clavier soit également prise en charge. De la même nature et de la même manière que Google Now, l'assistant est capable de rechercher sur Internet, de programmer des événements et des alarmes, d'ajuster les paramètres matériels sur l'appareil de l'utilisateur et d'afficher les informations du compte Google de l'utilisateur. Google a également annoncé que l'Assistant pourra identifier des objets et collecter des informations visuelles via l'appareil photo de l'appareil, et prendre en charge l'achat de produits et l'envoi d'argent, ainsi que l'identification de chansons.
If This Then That, également connu sous le nom d'IFTTT, est un service Web gratuit permettant de créer des chaînes d'instructions conditionnelles simples, appelées applets. Une applet est déclenchée par des changements qui se produisent dans d'autres services Web tels que Gmail, Facebook, Telegram, Instagram ou Pinterest. Par exemple, une applet peut envoyer un message électronique si l'utilisateur tweete à l'aide d'un hashtag, ou copier une photo sur Facebook dans les archives d'un utilisateur si quelqu'un tague un utilisateur sur une photo. En plus de l'application Web, le service fonctionne sur iOS et Android. En février 2015, IFTTT a renommé son application d'origine en IF et a publié une nouvelle suite d'applications appelée Do, qui permet aux utilisateurs de créer des applications et des actions de raccourci. En 2015, les utilisateurs d'IFTTT ont créé environ 20 millions de recettes chaque jour. Toutes les fonctionnalités de la suite d'applications Do ont depuis été intégrées dans une application IFTTT repensée.
Webhook et contenu JSON
Un webhook dans le développement Web est une méthode permettant d'augmenter ou de modifier le comportement d'une page Web, ou d'une application Web, avec des rappels personnalisés. Ces rappels peuvent être maintenus, modifiés et gérés par des utilisateurs et développeurs tiers qui ne sont pas nécessairement affiliés au site Web ou à l'application d'origine. Le terme « webhook » a été inventé par Jeff Lindsay en 2007 à partir du terme de programmation informatique hook.
En informatique, JavaScript Object Notation (JSON) est un format de fichier standard ouvert qui utilise du texte lisible par l'homme pour transmettre des objets de données constitués de paires attribut-valeur et de types de données de tableau (ou toute autre valeur sérialisable). Il s'agit d'un format de données très courant utilisé pour la communication asynchrone navigateur-serveur, notamment en remplacement de XML dans certains systèmes de style AJAX.
Assistant Google pour Arduino
Dans ce projet, nous souhaitons contrôler différentes parties d'un Arduino telles que les broches d'E/S, le PWM, le port série, etc. en envoyant une chaîne de Google Assistant au port série Arduino. Tout d'abord, nous devons définir des phrases spécifiques pour Google Assistant pour savoir ce que nous voulons dire. Ensuite, nous créerons une applet sur le site Web IFTTT et établirons une connexion entre Google Assistant et notre base de données. Après cela, nous lisons les données de la base de données par le module ESP8266 et les envoyons à l'Arduino. Commençons !
Circuit
Mise en œuvre
Tout d'abord, vous avez besoin d'un appareil pour exécuter votre assistance Google. Accédez à assistant.google.com et consultez tous les appareils prenant en charge l'assistant. Dans ce projet, nous utilisons un appareil téléphonique Android. Ouvrez ifttt.com et créez un compte. Après vous être connecté, cliquez sur Mes applets puis sur Nouvelle applet. Vous pouvez maintenant ajouter votre service en tant que CECI dans votre applet. Cliquez sur CECI et recherchez Google Assistant. Vous avez 4 choix pour définir votre phrase pour google assist. Choisissez une phrase avec un ingrédient numérique. Dans la page suivante, vous pouvez ajouter votre phrase. Par exemple, vous voulez dire « Définir le PWM de la broche 9 sur 255 ». Tapez-le simplement comme expression et remplacez « 255 » par un symbole « # ». Vous pouvez ajouter d'autres phrases avec la même signification comme « PWM 9 à 255 ». Ajoutez maintenant une réponse pour que l'Assistant Google puisse vous faire savoir que votre commande a été comprise et que l'action nécessaire a été effectuée, par exemple « Le PWM est mis à jour ». Lorsque vous avez terminé, cliquez sur Créer un déclencheur. Dans « CETTE » partie de votre applet, vous avez de nombreux services pour choisir le formulaire de recherche de « Webhooks » et choisissez-le. Cliquez sur "Faire une demande Web". Ajoutez l'URL de votre serveur pour recevoir des données. Définissez la méthode sur POST et sélectionnez Application/json pour le type de contenu. Vous devez maintenant ajouter un corps de contenu. Quelque chose comme ceci :{« Numéro » : »{ {NumberField}}"}. Cliquez maintenant sur "Créer une action".
Serveur et base de données
Nous écrivons un exemple de code pour Server afin d'obtenir des données d'IFTTT et de les stocker dans la base de données. Vous pouvez modifier les modèles pour que vos données soient stockées selon vos intérêts. Téléchargez ici.
ESP8266 et code Arduino
Nous écrivons d'abord un code pour ESP-01 pour obtenir des données de la base de données et les envoyer à l'Arduino via le port série. Ensuite, nous écrivons un autre code pour Arduino pour obtenir des données d'ESP-01 et exécuter la commande (par exemple, changer le PWM). Vous pouvez utiliser Arduino IDE pour compiler les deux codes et les télécharger sur les cartes.
Avant de pouvoir utiliser la bibliothèque ArduinoJson, vous devez vous assurer que la bibliothèque est installée sur votre ordinateur. Pour effectuer une vérification rapide, accédez au gestionnaire de bibliothèque dans l'IDE Arduino (Esquisse> Inclure la bibliothèque> Gérer les bibliothèques) et tapez « ArduinoJson » dans la zone de texte, si vous voyez une étiquette « INSTALLÉE » de couleur verte à côté du nom du bibliothèque, cela signifie que vous êtes prêt à partir et que vous pouvez passer à l'étape suivante. Si vous ne voyez pas l'étiquette, cliquez une fois sur la case/division et vous verrez le bouton « Installer ». Cliquez sur Installer et vous êtes prêt pour la prochaine étape.
Maintenant, téléchargez ce code sur ESP-01
#include "ESP8266WiFi.h"#include "ESP8266HTTPClient.h"#include "ArduinoJson.h"// Paramètres WiFiconst char* ssid ="YOUR_SSID";const char* password ="YOUR_PASSWORD";annulation de la configuration () { Serial.begin(115200); WiFi.begin(ssid, mot de passe); while (WiFi.status() !=WL_CONNECTED) { delay(1000); Serial.println("Connexion..."); }}boucle vide() { // Vérifier l'état du WiFi si (WiFi.status() ==WL_CONNECTED) { HTTPClient http; //Objet de la classe HTTPClient http.begin("http://yourip/api/Home/GetAllApp"); int httpCode =http.GET(); //Vérifiez le code renvoyé if (httpCode> 0) { // Obtenez la charge utile de la réponse à la demande String payload =http.getString(); // À FAIRE :Analyser Serial.println(charge utile); } http.end(); //Fermer la connexion } // Retarder le délai (3000);}
Et c'est le code pour Arduino pour obtenir des commandes de Google Assistant et les exécuter.
String inputString =""; // une chaîne pour contenir la chaîne de données entrante buff;bool stringComplete =false; // si la chaîne est completebool id;int f,buf;char x;void setup() { // initialize serial:Serial.begin(9600); // réserve 200 octets pour inputString :inputString.reserve(200);}void loop() { // imprime la chaîne lorsqu'une nouvelle ligne arrive :if (stringComplete) { while (f <100) { if (inputString.substring( f) =="id") { id =vrai; Pause; } f++; } if (id ==true) { x =inputString.charAt(f + 4); } si (x =='4') { f =0; while (f <100) { if (inputString.substring(f) =="nombre") { 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++; } } // efface la chaîne :inputString =""; stringComplete =false; }} void serialEvent() { while (Serial.available()) { // récupère le nouvel octet :char inChar =(char)Serial.read(); // l'ajoute à l'inputString :inputString +=inChar ; // si le caractère entrant est une nouvelle ligne, définit un indicateur afin que la boucle principale peut // faire quelque chose à ce sujet :if (inChar =='\n') { stringComplete =true; } }}
Quelle est la prochaine étape ?
Vous pouvez améliorer ce projet à votre guise. Voici quelques suggestions :
- Essayez d'ajouter vos commandes préférées comme contrôler vos broches de sortie, vous pouvez utiliser un module de relais et contrôler la lumière de votre pièce.
- Essayez d'envoyer des données d'Arduino à Google Assistant.
Processus de fabrication
- Contrôle d'accès avec QR, RFID et vérification de la température
- Télécommande universelle utilisant Arduino, 1Sheeld et Android
- Contrôler l'accepteur de pièces avec Arduino
- Arduino avec Bluetooth pour contrôler une LED !
- Arduino Nano :contrôler 2 moteurs pas à pas avec joystick
- Contrôle du servomoteur avec Arduino et MPU6050
- Appareils Bluetooth à commande vocale avec OK Google
- module GPS u-blox LEA-6H 02 avec Arduino et Python
- Reconnaissance et synthèse vocales avec Arduino