Arduino per Google Assistant steuern – Schritt-für-Schritt-Anleitung
Komponenten & Zubehör
| Arduino UNO | 1 |
| ESP8266 ESP-01 (WiFi-Modul) | 1 |
Software & Dienste
- Arduino IDE
- Microsoft Visual Studio 2017 (für Server-Beispiel)
- Google Assistant (Android-Smartphone / Smart Home)
- IFTTT (If This Then That) – kostenloser Web-Service
- Webhook & JSON für Datenaustausch
Projektidee
Steuerung von Arduino-I/O-Pins, PWM, Serial-Port etc. per Sprachbefehl über Google Assistant. Der Weg: Google Assistant → IFTTT Applet → Webhook (HTTP POST mit JSON) → eigener Server/Datenbank → ESP8266 holt Daten per HTTP GET → sendet Befehl per Serial an Arduino.
Grundlagen
- Google Assistant: KI-Sprachassistent, versteht natürliche Sprache, zweiwege Dialog.
- IFTTT: Erstellt „Applets“: Wenn (This) Sprachbefehl erkannt, Dann (That) Webhook aufrufen.
- Webhook: HTTP-Callback, hier POST mit JSON-Body (z. B.
{"Number":"{{NumberField}}"}). - JSON: Leichtgewichtiges Datenaustauschformat.
Schaltung
ESP-01 an Arduino Serial (TX/RX) oder SoftSerial. ESP-01 wird mit 3,3 V versorgt (nicht 5 V!). Arduino UNO liefert 3,3 V über onboard Regler (max. ~50 mA) – besser separater 3,3 V-Regler für ESP-01.
Implementierungsschritte
- IFTTT Applet erstellen:
- This: Google Assistant – „Say phrase with a number ingredient“. Beispiel: „Set PWM pin 9 to #“. Antwort: „PWM updated“.
- That: Webhooks – „Make a web request“. URL: Ihr Server-Endpunkt. Method: POST. Content-Type: application/json. Body:
{"Number":"{{NumberField}}"}.
- Server & Datenbank: Beispielcode (C#/ASP.NET) empfängt POST, speichert Wert in DB. (Download im Originalprojekt).
- ESP8266 Code: Verbindet sich mit WLAN, pollt alle 3 s Server-API (
GET /api/Home/GetAllApp), parst JSON mit ArduinoJson, sendet Befehl an Arduino Serial. - Arduino Code: Liest Serial, sucht nach „id“ und „number“, setzt PWM auf Pin 9 (
analogWrite(9, value)).
Code-Beispiele
ESP8266 (Arduino IDE)
#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include <ArduinoJson.h>
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://yourserver/api/Home/GetAllApp");
int httpCode = http.GET();
if (httpCode > 0) { String payload = http.getString(); Serial.println(payload); /* JSON parsen & an Arduino senden */ }
http.end();
}
delay(3000);
}
Arduino UNO
String inputString = ""; bool stringComplete = false;
void setup() { Serial.begin(9600); inputString.reserve(200); }
void loop() {
if (stringComplete) {
// Einfaches Parsing: nach "id" und "number" suchen
int f = 0; bool idFound = false; char pinChar = 0; String numStr = "";
while (f < inputString.length()) {
if (inputString.substring(f, f+2) == "id") { idFound = true; break; }
f++;
}
if (idFound) {
// Beispiel: ... "number": "255" ...
int numIdx = inputString.indexOf("number");
if (numIdx > 0) {
int colon = inputString.indexOf(':', numIdx);
int quote1 = inputString.indexOf('"', colon);
int quote2 = inputString.indexOf('"', quote1+1);
numStr = inputString.substring(quote1+1, quote2);
int val = numStr.toInt();
analogWrite(9, val); // PWM Pin 9
}
}
inputString = ""; stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char c = (char)Serial.read(); inputString += c;
if (c == '\n') stringComplete = true;
}
}
Weiterentwicklung
- Weitere Befehle: Digitale Pins schalten (Relais für Licht, Garage, …).
- Rückmeldung an Google Assistant (z. B. Status abfragen).
- Sicherheit: Authentifizierung, HTTPS, Token.
- Alternative: MQTT, Blynk, Home Assistant statt eigener Server.
Herstellungsprozess
- Integriertes QR-, RFID- und Temperatur-Verifikations-Zugangskontrollsystem
- Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial
- Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R
- Sprachgesteuerte Haushaltsgeräte: Bluetooth-Steuerung mit Google Assistant
- u-blox LEA-6H 02 GPS-Modul: Arduino & Python Integrationsanleitung
- Spracherkennung & Sprachsynthese auf Arduino Due meistern
- ThimbleKrox: Fingermontierte Maussteuerung mit Arduino Micro & MPU-6050