Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-basiertes Amazon Echo mit 1Sheeld

Komponenten und Verbrauchsmaterialien

Arduino 101
× 1
1Sheeld
× 1
1Sheeld
× 1
Stablampe
× 1
RGB-LED-Streifen
× 1
Relaisplatine
× 1
Apple iPhone
× 1
Breadboard (generisch)
× 1
USB-A-zu-B-Kabel
× 1
Jumper (generisch)
× 30
Allzwecktransistor NPN
× 3

Notwendige Werkzeuge und Maschinen

Driller
PVC-Rohr

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Vor ein paar Monaten habe ich einen Freund von mir besucht und war erstaunt über das Amazon Echo, das er besaß.

Es kann Musik abspielen, die Hausbeleuchtung steuern, mir Nachrichten und den Wetterstatus und sogar Datum und Uhrzeit mitteilen, und das alles nur mit Sprachbefehlen.

In diesem Moment rief der Macher in mir "warum mache ich es nicht selbst!".

Und seit diesem Tag begann ich nach Komponenten zu suchen, die mir helfen könnten, ein auf Arduino basierendes Amazon Echo zu bauen, bis ich das erstaunliche 1Sheeld fand.

1Sheeld ist eine Plattform für Arduino, mit der Sie die Sensoren und Fähigkeiten Ihres Smartphones nutzen und in Ihren Arduino-Projekten verwenden können.

Im Grunde ist es ein Hardware-Shield, das auf Ihrem Arduino-Board sitzt und über Bluetooth mit dieser Android-App kommuniziert, um Daten zwischen ihm und Ihrem Smartphone zu übertragen.

Sie können das Tutorial für die ersten Schritte auf der 1Sheeld-Website lesen, das Sie Schritt für Schritt führt, bis Sie das 1Sheeld sehr reibungslos bedienen können und es eine großartige Referenz für großartige Arduino-Projekte ist.

Ich habe in diesem Projekt fünf Schilde von den 40+ Schilden im 1Sheeld verwendet.

Das erste ist das Stimmerkennungsschild mit dem ich das gesamte System mit Sprachbefehlen gesteuert habe, ist es sehr einfach, es mit nur 1 Zeile Code zu aktivieren:VoiceRecognition.start();

Dann habe ich das Music Player Shield verwendet was es mir ermöglicht, den Musikplayer des Smartphones anzuzapfen und die Tracks auszuwählen, die ich spielen möchte>

Der dritte Schild, den ich verwendet habe, ist einer der wichtigsten Schilde im Projekt, es ist der Text-to-Speech-Schild die dem Projekt eine humanoide Interaktion hinzufügen, auf die jemand auf das reagiert, was Sie sagen, es war so einfach, das System reaktionsfähig zu machen:TextToSpeech.say("Zeit in Kairo ist");

Nachdem ich den Text-to-Speech-Schild aktiviert habe, habe ich den Clock-Schild aktiviert die die Uhr in Echtzeit zurückgeben und dann kann das System mit der Zeit reagieren, sobald ich danach gefragt habe, erstaunlich! nicht wahr :), und ich kann mit dieser Funktion ganz einfach die aktuelle Uhrzeit in meinem Telefon abrufen:Clock.queryDateAndTime();

Der letzte Shield, den ich verwendet habe, ist der Internet Shield was meiner Meinung nach der stärkste Schild im 1Sheeld ist. Ich habe diesen Schild verwendet, um den aktuellen Status des Wetters in meiner Heimatstadt mithilfe einer API von der "openweathermap"-Website abzurufen, wo ich die API mit dieser Zeile aufrufen kann: HttpRequest request1("/*die API-Adresse */");

Schritt 1:Sammeln Sie die Komponenten

  • Arduino 101 30,99 $
  • 1Sheeld+-Platine 54,94 $
  • iPhone 155,5 $
  • PVC-Rohr 2 $
  • LED-Streifen 5 $
  • 12-V-Netzteil 7 $
  • Relaisplatine $3
  • Pullover und Kabel $3
  • 3 NPN-Transistoren $1

Schritt 2:

Löcher in das Rohr bohren, damit der Ton austreten kann

Schritt 3:

Lackieren Sie das PVC-Rohr mit schwarzem Spray

Schritt 4:Stellen Sie die Verkabelung her

  • Verbinde die LED-Streifen mit den Transistoren und der Stromversorgung
  • Schließen Sie die Lampe an die Relaisplatine und die AC-Klemmen an
  • Verbinden Sie die Relaisplatine und die LED-Streifen mit der Arduino 101-Platine, wie im folgenden Code beschrieben
  • Montiere das alles mit dem iPhone im PVC-Rohr

Schritt 5:1Sheeld-Bibliothek einrichten

Sie können beliebige Bibliotheken über die IDE von Arduino verwalten. Klicken Sie einfach auf Skizze>> Bibliothek einschließen>> Bibliotheken verwalten>> geben Sie OneSheld ein>> klicken Sie dann auf Installieren und Sie können loslegen.​ Oder Sie können die Bibliothek von hier herunterladen:http://1sheeld.com/downloads/ Dann öffnen Sie Ihre Arduino IDE und wählen Sie Sketch aus der Menüleiste>> Bibliothek einschließen>> .zip-Datei hinzufügen>> dann wählen Sie die Zip-Datei yo gerade heruntergeladen.

Schritt 6:1Sheeld-App installieren

Laden Sie die mobile 1Sheeld-App von der Website herunter oder besuchen Sie den Apple Play Store oder den Google Play Store, um die App herunterzuladen.

Schritt 7:Greifen Sie auf die Schilde zu

Folgen Sie dem 1Sheeld-Tutorial für die ersten Schritte und wählen Sie am Ende die folgenden Schilde aus

  • Spracherkennung
  • Text-to-Speech
  • Uhr
  • Internet
  • Musikplayer

Drücken Sie dann die Mehrfachschild-Taste.

Code

  • Amazon-Echocode
Amazon-EchocodeArduino
/* OPTIONAL:Um die kompilierte Bibliotheksgröße zu reduzieren und ihren Speicherverbrauch zu begrenzen, können Sie angeben, welche Schilde Sie in Ihre Skizze aufnehmen möchten, indem Sie CUSTOM_SETTINGS und die entsprechenden Schilde INCLUDE_ definieren. */#define CUSTOM_SETTINGS#define INCLUDE_INTERNET_SHIELD#define INCLUDE_VOICE_RECOGNIZER_SHIELD#define INCLUDE_TEXT_TO_SPEECH_SHIELD#define INCLUDE_MUSIC_PLAYER_SHIELD#define INCLUDE_CLOCK_SHIELDeLibrary */#include /* erstellt einen Anfangswert für den Millisekundenzähler. */unsigned long previousMillis =0;/* Erzeuge einen Anfangszustand für den Aufruf von Alexa. */bool state =0;/* Rufen Sie eine API auf, die den Wetterstatus in Kairo, Ägypten, zurückgibt. */HttpRequest request1("http://api.openweathermap.org/data/2.5/weather?q=Cairo,EG&appid=43d95b4cf5d0573e2dfe5186c160017a");/* Definiere die 3 Transistoren an den Pins 3,5 und 6. */#define strip1 3#define strip2 6#define strip3 5/* Definiere die Lampe an Pin 13. */int lamp =13;/* Definiere die Variable, die die Stunden und Miniuts enthält. */int Stunde, Minute;/* Erzeuge 2 Zeichen-Arrys, um die gewünschte Zeichenfolge aus dem Satz abzufangen. */char b[4];char c[4];/* Definiere Variablen, um die Stunden und Minuten in einem String zu halten. */String strh, strm;/* Variable definieren, um den Tagesstatus am oder pm zu halten. */String Mittag;/* Vom Benutzer eingestellte Sprachbefehle. */const char mainCommand[] ="alexa";const char weatherCommand[] ="wie ist das Wetter heute";const char playCommand[] ="Musik abspielen";const char clockCommand[] ="wie spät ist es"; const char stopCommand[] ="stop";const char lightonCommand[] ="das Licht einschalten";const char lightoffCommand[] ="das Licht ausschalten";void setup() { /* Kommunikation starten. */ OneSheeld.begin();/* Stellen Sie die LED-Streifen und die Lampe auf Ausgabe. */ PinMode (Streifen1, AUSGANG); PinMode (Streifen2, AUSGANG); pinMode (strip3, OUTPUT); pinMode (Lampe, AUSGANG); /* Erfolgsrückruf für die Anfrage abonnieren. */ request1.setOnSuccess(&onSuccess1); /* Json-Wertantworten abonnieren. */ request1.getResponse().setOnJsonResponse(&onJsonReply1);/* bei einem spracherkannten Aufruf die Funktion "myfunction". */ VoiceRecognition.setOnNewCommand(&myFunction);}void loop (){ /* Verzögerung von 5 Sekunden mit Millisezähler, um die Spracherkennung am Leben zu erhalten. */ unsigned long currentMillis =millis(); if (currentMillis - previousMillis>=5000) { previousMillis =currentMillis; /* Rufen Sie die aktuelle Uhrzeit Ihres Telefons ab. */ Clock.queryDateAndTime(); /* Spracherkennung starten. */ Spracherkennung.start(); }/* speichere die Stunden und Minuten des Smartphones in Variablen. */ Stunde =Clock.getHours(); Minute =Clock.getMinutes(); /* Erkenne den Zeitstatus, wenn es am oder pm ist. */ if (Stunde> 12) { Stunde -=12; Mittag ="PM"; } else { Mittag ="A M"; }/* speichere die Stunden und Minuten als String. */ strh =String(Stunde); strm =String(minute);/* speichere den String in einem Zeichenarray. */ strh.toCharArray(b, 4); strm.toCharArray(c, 4);}/* Diese Funktion wird jedes Mal aufgerufen, wenn ein neuer Befehl gegeben wird. */void myFunction (char *commandSpoken){/* Überprüfe, ob jemand Alexa anruft oder nicht. */ if (!strcmp(mainCommand, VoiceRecognition.getLastCommand())) { alexon(); MusicPlayer.setVolume(5); /* wenn ja, mache den Zustand =1 . */ Zustand =1; } /* Überprüfe, ob du nach dem Aufruf von Alexa darum gebeten hast, Musik abzuspielen. */ if (!strcmp(playCommand, VoiceRecognition.getLastCommand()) &&state ==1) { alexoff(); MusikPlayer.play(); Verzögerung (10000); MusikPlayer.stop(); Zustand =0; }/* Überprüfen Sie, ob Sie nach dem Aufruf von alexa nach dem Wetterstatus gefragt haben. */ else if(!strcmp(weatherCommand,VoiceRecognition.getLastCommand())&&state ==1) { alexoff(); Internet.performGet(Anfrage1); /* 5 Sekunden warten. */ OneSheeld.delay(5000); Zustand =0; }/* Überprüfen Sie, ob Sie nach dem Aufruf von alexa nach der Uhrzeit gefragt haben. */ if(!strcmp(clockCommand,VoiceRecognition.getLastCommand()) &&state ==1) { alexoff(); /* 1Sheeld antwortet mit Text-to-Speech. */ TextToSpeech.say("Zeit in Kairo ist"); Verzögerung (1300); TextToSpeech.say(b); Verzögerung (600); TextToSpeech.say(c); Verzögerung (800); TextToSpeech.say(Mittag); Verzögerung (500); Zustand =0; }/* Überprüfen Sie, ob Sie nach dem Anruf von Alexa gebeten haben, die Lampe einzuschalten. */ if (!strcmp(lightonCommand, VoiceRecognition.getLastCommand()) &&state ==1) { alexoff(); digitalWrite (Lampe, HOCH); TextToSpeech.say("das Licht ging an"); Verzögerung (6000); Zustand =0; }/* Überprüfen Sie, ob Sie nach dem Anruf von Alexa gebeten haben, die Lampe auszuschalten. */ else if (!strcmp(lightoffCommand, VoiceRecognition.getLastCommand()) &&state ==1) { alexoff(); digitalWrite (Lampe, NIEDRIG); TextToSpeech.say("das Licht ging aus"); Verzögerung (3000); Zustand =0; }}void onSuccess1(HttpResponse &response1){ /* Verwenden der Antwort, um die Json-Kette bis zum erforderlichen Wert abzufragen. */ /* d.h. Holen Sie sich den Wert von 'main' im ersten Objekt des Arrays 'Wetter' in der Antwort. */ /* Vorausgesetzt, die Antwort liegt im JSON-Format vor. */ response1["Wetter"][0]["main"].query();delay(200); }void onJsonReply1(JsonKeyChain &hell,char * output){ if(hell ==request1.getResponse()["weather"][0]["main"]) { TextToSpeech.say("das Wetter heute in Kairo ist" ); Verzögerung (2000); /* 1Sheeld antwortet mit einem Text-to-Speech-Schild. */ TextToSpeech.say(Ausgabe); } }void alexon(){ /* Schalten Sie die Streifen in der gleichen Reihenfolge wie bei Amazon Echo ein. */ digitalWrite(strip1,HIGH); Verzögerung (200); digitalWrite (Streifen2, HOCH); Verzögerung (200); digitalWrite(strip3,HIGH); } void alexoff(){/* Schalte die Streifen aus. */ digitalWrite(strip1,LOW); digitalWrite(strip2,LOW); digitalWrite(strip3,LOW); }

Schaltpläne


Herstellungsprozess

  1. Senden Sie Sensordaten von einem Arduino zu einem anderen mit Firebase
  2. Arduino Digital Dice
  3. Universelle Fernbedienung mit Arduino, 1Sheeld und Android
  4. Arduino-Gamecontroller
  5. Sonar mit Arduino und Anzeige bei der Verarbeitung von IDE
  6. Pixel-Chaser-Spiel
  7. Steuerung der LED-Helligkeit mit Bolt und Arduino
  8. Einfacher und intelligenter Roboterarm mit Arduino
  9. WalaBeer Tank
  10. FM-Radio mit Arduino und RDA8057M