Sprechen Sie mit Arduino und steuern Sie es mit Google Assistant
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 |
Apps und Onlinedienste
| ||||
|
Über dieses Projekt
In diesem Projekt lernen wir, wie man eine Verbindung zwischen einem Internetdienst und Arduino-Boards herstellt. Am Ende dieses Artikels werden Sie:
- wissen, wie man Daten von Google Assistant erhält
- wissen, wie man das IFTTT-Protokoll verwendet
- mit Webhooks und http-Anfragen vertraut sein
- in der Lage sein, mit Ihrem Arduino zu sprechen
Google Assistant und IFTTT-Applets
Der Google Assistant ist ein von Google entwickelter virtueller Assistent mit künstlicher Intelligenz, der hauptsächlich auf mobilen und Smart-Home-Geräten verfügbar ist. Im Gegensatz zum vorherigen virtuellen Assistenten des Unternehmens, Google Now, kann der Google Assistant wechselseitige Gespräche führen. Es kann Ihre Worte besser als jedes andere Gerät erkennen und schnell und korrekt auf Ihre Befehle reagieren. Die Benutzer interagieren hauptsächlich über natürliche Stimme mit dem Google Assistant, obwohl auch Tastatureingaben unterstützt werden. Auf die gleiche Art und Weise wie Google Now kann der Assistent das Internet durchsuchen, Ereignisse und Alarme planen, Hardwareeinstellungen auf dem Gerät des Benutzers anpassen und Informationen aus dem Google-Konto des Benutzers anzeigen. Google hat außerdem angekündigt, dass Assistant in der Lage sein wird, Objekte zu identifizieren und visuelle Informationen über die Kamera des Geräts zu sammeln sowie den Kauf von Produkten und das Senden von Geld sowie das Identifizieren von Liedern zu unterstützen.
If This Then That, auch bekannt als IFTTT, ist ein kostenloser webbasierter Dienst zum Erstellen von Ketten einfacher bedingter Anweisungen, sogenannter Applets. Ein Applet wird durch Änderungen ausgelöst, die in anderen Webdiensten wie Gmail, Facebook, Telegram, Instagram oder Pinterest auftreten. Ein Applet kann beispielsweise eine E-Mail-Nachricht senden, wenn der Benutzer mit einem Hashtag twittert, oder ein Foto von Facebook in das Archiv eines Benutzers kopieren, wenn jemand einen Benutzer auf einem Foto markiert. Neben der webbasierten Anwendung läuft der Dienst auf iOS und Android. Im Februar 2015 benannte IFTTT seine ursprüngliche Anwendung in IF um und veröffentlichte eine neue Suite von Apps namens Do, mit der Benutzer Verknüpfungsanwendungen und Aktionen erstellen können. Ab 2015 erstellten IFTTT-Benutzer täglich etwa 20 Millionen Rezepte. Alle Funktionen der Do-App-Suite wurden seitdem in eine neu gestaltete IFTTT-App integriert.
Webhook- und JSON-Inhalt
Ein Webhook in der Webentwicklung ist eine Methode zum Erweitern oder Ändern des Verhaltens einer Webseite oder Webanwendung mit benutzerdefinierten Rückrufen. Diese Rückrufe können von Drittbenutzern und -entwicklern gepflegt, geändert und verwaltet werden, die nicht unbedingt mit der ursprünglichen Website oder Anwendung verbunden sind. Der Begriff „Webhook“ wurde 2007 von Jeff Lindsay aus dem Computerprogrammierungsbegriff Hook geprägt.
In der Computertechnik ist JavaScript Object Notation (JSON) ein offenes Standarddateiformat, das lesbaren Text verwendet, um Datenobjekte zu übertragen, die aus Attribut-Wert-Paaren und Array-Datentypen (oder jedem anderen serialisierbaren Wert) bestehen. Es ist ein sehr verbreitetes Datenformat, das für die asynchrone Browser-Server-Kommunikation verwendet wird, einschließlich als Ersatz für XML in einigen AJAX-ähnlichen Systemen.
Google Assistant für Arduino
In diesem Projekt möchten wir verschiedene Teile eines Arduino wie E / A-Pins, PWM, serielle Schnittstelle usw. steuern, indem wir eine Zeichenfolge von Google Assistant an die serielle Schnittstelle von Arduino senden. Zunächst müssen wir einige spezifische Ausdrücke für Google Assistant definieren, um herauszufinden, was wir meinen. Dann erstellen wir ein Applet auf der IFTTT-Website und stellen eine Verbindung zwischen Google Assistant und unserer Datenbank her. Danach lesen wir Daten aus der Datenbank mit dem ESP8266-Modul und senden sie an den Arduino. Fangen wir an!
Schaltung
Implementierung
Zunächst benötigen Sie ein Gerät, um Ihren Google-Assistenten auszuführen. Rufen Sie Assistant.google.com auf und sehen Sie sich alle Geräte an, die den Assistenten unterstützen. In diesem Projekt verwenden wir ein Android-Telefongerät. Öffnen Sie ifttt.com und erstellen Sie ein Konto. Klicken Sie nach der Anmeldung auf Meine Applets und dann auf Neues Applet. Jetzt können Sie Ihren Dienst als DIES in Ihrem Applet hinzufügen. Klicken Sie auf DIES und suchen Sie nach Google Assistant. Sie haben 4 Möglichkeiten, Ihren Ausdruck für Google Assist zu definieren. Wählen Sie einen Satz mit einer Zutat aus. Auf der nächsten Seite können Sie Ihren Satz hinzufügen. Sie möchten beispielsweise sagen „PWM von Pin 9 auf 255 einstellen“. Geben Sie es einfach als Ihren Ausdruck ein und ersetzen Sie „255“ durch ein „#“-Symbol. Sie können weitere Phrasen mit derselben Bedeutung wie „PWM 9 bis 255“ hinzufügen. Fügen Sie nun eine Antwort hinzu, damit der Google Assistant Ihnen mitteilen kann, dass Ihr Befehl verstanden wurde und die erforderliche Aktion ausgeführt wurde, zum Beispiel „Die PWM wird aktualisiert“. Wenn Sie fertig sind, klicken Sie auf Trigger erstellen. Im „DAS“-Teil Ihres Applets haben Sie viele Dienste, um nach „Webhooks“ zu suchen und diese auszuwählen. Klicken Sie auf "Webanfrage stellen". Fügen Sie die URL Ihres Servers hinzu, um Daten zu empfangen. Legen Sie die Methode beim POST fest und wählen Sie Application/json als Inhaltstyp. Jetzt sollten Sie einen Inhaltskörper hinzufügen. Etwa so:{"Number":"{ {NumberField}}"}. Klicken Sie nun auf "Aktion erstellen".
Server und Datenbank
Wir schreiben Beispielcode für Server, um Daten von IFTTT zu erhalten und in der Datenbank zu speichern. Sie können die Modelle ändern, um Ihre Daten nach Ihrem Interesse zu speichern. Von hier herunterladen.
ESP8266 &Arduino-Code
Zuerst schreiben wir einen Code für ESP-01, um Daten aus der Datenbank zu erhalten und über die serielle Schnittstelle an den Arduino zu senden. Dann schreiben wir einen weiteren Code für Arduino, um Daten von ESP-01 zu erhalten und den Befehl auszuführen (z. B. PWM ändern). Sie können Arduino IDE verwenden, um beide Codes zu kompilieren und sie auf die Boards hochzuladen.
Bevor Sie die ArduinoJson-Bibliothek verwenden können, müssen Sie sicherstellen, dass die Bibliothek auf Ihrem Computer installiert ist. Um eine schnelle Überprüfung durchzuführen, gehen Sie zum Bibliotheksmanager in der Arduino IDE (Skizze> Bibliothek einschließen> Bibliotheken verwalten) und geben Sie „ArduinoJson“ in das Textfeld ein, wenn Sie neben dem Namen des . ein grün gefärbtes „INSTALLED“-Label sehen Bibliothek, das bedeutet, dass Sie alle startklar sind und mit dem nächsten Schritt fortfahren können. Wenn Sie das Etikett nicht sehen, klicken Sie einmal auf das Feld / die Unterteilung und Sie sehen die Schaltfläche "Installieren". Klicken Sie auf Installieren und Sie sind bereit für den nächsten Schritt.
Laden Sie nun diesen Code auf ESP-01 hoch
#include "ESP8266WiFi.h"#include "ESP8266HTTPClient.h"#include "ArduinoJson.h"// WLAN Parameterconst char* ssid ="YOUR_SSID";const char* password ="YOUR_PASSWORD";void setup () {Serial.begin(115200); WiFi.begin(ssid, Passwort); Während (WiFi.status () !=WL_CONNECTED) { Verzögerung (1000); Serial.println("Verbindung wird hergestellt..."); }}void loop () { // WiFi-Status prüfen if (WiFi.status () ==WL_CONNECTED) { HTTPClient http; //Objekt der Klasse HTTPClient http.begin("http://yourip/api/Home/GetAllApp"); int httpCode =http.GET(); //Überprüfe den Rückgabecode if (httpCode> 0) { // Hole die Nutzlast der Anfrageantwort String payload =http.getString(); // TODO:Serial.println (Nutzlast) parsen; } http.ende(); //Verbindung schließen} // Verzögerungsverzögerung(3000);}
Und dies ist der Code für Arduino, um Bestellungen von Google Assistant zu erhalten und sie auszuführen.
String inputString =""; // ein String für eingehende DatenString buff;bool stringComplete =false; // ob die Zeichenfolge vollständig istbool id;int f,buf;char x;void setup () { // Seriell initialisieren:Serial.begin (9600); // 200 Byte für den inputString reservieren:inputString.reserve(200);}void loop() { // String ausgeben, wenn ein Zeilenumbruch ankommt:if (stringComplete) { while (f <100) { if (inputString.substring( f) =="id") { id =wahr; brechen; } f++; } if (id ==true) { x =inputString.charAt(f + 4); } wenn (x =='4') {f =0; while (f <100) { if (inputString.substring(f) =="Zahl") { 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++; } } // den String löschen:inputString =""; stringComplete =false; }}void serialEvent() { while (Serial.available()) { // Hole das neue Byte:char inChar =(char)Serial.read(); // füge es zum inputString hinzu:inputString +=inChar; // wenn das eingehende Zeichen ein Zeilenumbruch ist, setze ein Flag, damit die Hauptschleife kann // etwas dagegen tun:if (inChar =='\n') { stringComplete =true; } }}
Was kommt als nächstes?
Sie können dieses Projekt nach Belieben verbessern. Hier sind ein paar Vorschläge:
- Versuchen Sie, Ihre Lieblingsbefehle hinzuzufügen, z. B. die Steuerung Ihrer Ausgangspins. Sie können ein Relaismodul verwenden und das Licht Ihres Raums steuern.
- Versuchen Sie, Daten von Arduino an Google Assistant zu senden.
Herstellungsprozess
- Zutrittskontrolle mit QR, RFID und Temperaturüberprüfung
- Universelle Fernbedienung mit Arduino, 1Sheeld und Android
- Münzprüfer mit Arduino steuern
- Arduino mit Bluetooth zur Steuerung einer LED!
- Arduino Nano:Steuerung von 2 Schrittmotoren mit Joystick
- Steuerung des Servomotors mit Arduino und MPU6050
- Sprachgesteuerte Bluetooth-Geräte mit OK Google
- u-blox LEA-6H 02 GPS-Modul mit Arduino und Python
- Spracherkennung und -synthese mit Arduino
- ThimbleKrox - Maussteuerung mit den Fingern