Contrôlez votre Arduino avec Google Assistant - Tutoriel complet étape par étape
Composants et fournitures
| Arduino UNO | × | 1 |
| Module ESP8266 ESP-01 (Espressif) | × | 1 |
Applications et services en ligne
- Arduino IDE
- Microsoft Visual Studio 2017
À propos du projet
Dans ce projet, nous apprendrons à créer une connexion entre un service Internet et des cartes Arduino. À la fin, vous saurez :
- Comment récupérer des données depuis Google Assistant
- Comment utiliser le protocole IFTTT
- À manipuler les webhooks et requêtes HTTP
- À parler à votre Arduino

Google Assistant & Applets IFTTT
Google Assistant est un assistant virtuel propulsé par l'IA, disponible sur mobile et appareils domotiques. Contrairement à Google Now, il gère des conversations bidirectionnelles, reconnaît la parole avec précision et répond rapidement. Interaction principalement vocale (clavier aussi supporté). Capacités : recherche Internet, agenda, alarmes, réglages matériel, infos compte Google, reconnaissance d'objets via caméra, achats, identification de chansons.
IFTTT (If This Then That) est un service web gratuit pour créer des chaînes conditionnelles simples appelées "applets". Un applet se déclenche par des changements dans d'autres services (Gmail, Facebook, Telegram, Instagram, Pinterest...). Exemple : envoyer un email si tweet avec hashtag, ou sauvegarder une photo Facebook si identifié. Disponible sur iOS/Android. En 2015, ~20 millions de "recettes" créées par jour.

Webhook & Contenu JSON
Un webhook est une méthode pour augmenter ou modifier le comportement d'une page/application web via des rappels (callbacks) personnalisés. Ces callbacks peuvent être gérés par des tiers non affiliés au site d'origine. Terme inventé par Jeff Lindsay en 2007.
JSON (JavaScript Object Notation) est un format d'échange de données ouvert, lisible par l'homme, transmettant des objets de données (paires attribut-valeur, tableaux). Très utilisé pour communication asynchrone navigateur-serveur, alternative à XML dans AJAX.

Google Assistant vers Arduino
Objectif : contrôler différentes parties d'un Arduino (pins I/O, PWM, port série...) en envoyant une chaîne depuis Google Assistant vers le port série Arduino. Étapes :
- Définir des phrases spécifiques pour Google Assistant
- Créer un applet IFTTT reliant Google Assistant à notre base de données
- Lire les données depuis la base par le module ESP8266 et les envoyer à l'Arduino
Circuit

Implémentation
1. Configurer Google Assistant : Dispositif compatible (téléphone Android utilisé ici). Aller sur assistant.google.com pour voir les appareils supportés.
2. Créer un compte IFTTT : Sur ifttt.com, se connecter, cliquer "My Applets" → "New Applet".
3. Partie THIS (Déclencheur) : Cliquer "THIS", chercher "Google Assistant". 4 choix de phrases. Choisir "phrase with a number ingredient". Exemple : "Set PWM of pin 9 to 255" → remplacer "255" par "#". Ajouter variantes : "PWM 9 to 255". Réponse de l'Assistant : "The PWM is updated". Cliquer "Create Trigger".
4. Partie THAT (Action) : Chercher "Webhooks", choisir "Make a web request". Ajouter l'URL de votre serveur. Méthode : POST. Content-Type : application/json. Corps : {"Number":"{{NumberField}}"}. Cliquer "Create action".

Serveur et base de données
Code exemple de serveur pour recevoir données IFTTT et stocker en base. Modèles modifiables selon vos besoins. Téléchargement disponible.
Code ESP8266 & Arduino
D'abord, code pour ESP-01 : récupère données de la base et les envoie à l'Arduino via port série. Ensuite, code Arduino : reçoit données de l'ESP-01 et exécute la commande (ex: changer PWM). Utiliser Arduino IDE pour compiler et téléverser les deux.
Bibliothèque ArduinoJson requise : Vérifier dans Gestionnaire de bibliothèques (Croquis → Inclure bibliothèque → Gérer les bibliothèques → rechercher "ArduinoJson"). Si pas "INSTALLED", cliquer installer.

Code ESP-01
#include "ESP8266WiFi.h"
#include "ESP8266HTTPClient.h"
#include "ArduinoJson.h"
// Paramètres WiFi
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() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("https://yourip/api/Home/GetAllApp");
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
// TODO: Parsing JSON
Serial.println(payload);
}
http.end();
}
delay(3000);
}
Code Arduino (réception commandes)
String inputString = "";
String buff;
bool stringComplete = false;
bool id;
int f, buf;
char x;
void setup() {
Serial.begin(9600);
inputString.reserve(200);
}
void loop() {
if (stringComplete) {
// Recherche "id" dans la chaîne
while (f < 100) {
if (inputString.substring(f) == "id") {
id = true;
break;
}
f++;
}
if (id == true) {
x = inputString.charAt(f + 4);
}
// Si commande pour PWM pin 9
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++;
}
}
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') stringComplete = true;
}
}

Prochaines étapes
Améliorations possibles :
- Ajouter vos commandes favorites : contrôle pins de sortie, module relais pour éclairage...
- Envoyer des données de l'Arduino vers Google Assistant.
Processus de fabrication
- Système de contrôle d'accès intégré QR, RFID et vérification de température
- Construire une télécommande Android universelle avec Arduino, 1Sheeld et contrôle IR
- Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
- Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
- Contrôler 2 moteurs pas-à-pas avec Arduino Nano et joystick – Tutoriel Visuino
- Arduino et MPU6050 : Contrôle précis de servo-moteur avec SG90 et MG996R
- Appareils électroménagers à commande vocale : contrôle Bluetooth avec Google Assistant
- Module GPS u-blox LEA‑6H 02 : guide d'intégration Arduino et Python
- Maîtriser la reconnaissance et la synthèse vocale sur Arduino Due