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

Amazon Echo-Style Smart Speaker mit Arduino und 1Sheeld selbst bauen

Komponenten und Zubehör

Komponente Menge
Arduino 101 1
1Sheeld 1
Stablampe (Stick lamp) 1
RGB LED-Streifen 1
Relais-Platine 1
Apple iPhone 1
Steckbrett (Breadboard, generisch) 1
USB-A auf B Kabel 1
Jumper-Kabel (generisch) 30
Allzweck-Transistor NPN 3

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Über das Projekt

Vor einigen Monaten besuchte ich einen Freund und war beeindruckt von seinem Amazon Echo. Er kann Musik abspielen, Hauslichter steuern, Nachrichten und Wetter vorlesen, sogar Datum und Uhrzeit ansagen – alles per Sprachbefehl.

In diesem Moment rief der Maker in mir: „Warum baue ich es nicht selbst!“

Seitdem suchte ich nach Komponenten für einen Arduino-basierten Amazon Echo, bis ich das fantastische 1Sheeld entdeckte.

1Sheeld ist eine Plattform für Arduino, die es ermöglicht, die Sensoren und Fähigkeiten des Smartphones in Arduino-Projekten zu nutzen. Es ist ein Hardware-Shield, das auf dem Arduino-Board sitzt und per Bluetooth mit der Android-App kommuniziert, um Daten zwischen Smartphone und Arduino auszutauschen.

Das Einstiegstutorial auf der 1Sheeld-Website führt Schritt für Schritt zur Bedienung und ist eine großartige Referenz für Arduino-Projekte.

In diesem Projekt habe ich fünf der 40+ Shields in 1Sheeld verwendet:

Amazon Echo-Style Smart Speaker mit Arduino und 1Sheeld selbst bauen
  1. Voice Recognition Shield – Steuerung des gesamten Systems per Sprachbefehl. Aktivierung mit nur einer Codezeile: VoiceRecognition.start();
  2. Music Player Shield – Zugriff auf den Smartphone-Musikplayer, Titelwahl. Start per MusicPlayer.play();
  3. Text to Speech Shield – Verleiht dem Projekt menschenähnliche Interaktion. Antwort per TextToSpeech.say("time in cairo is");
  4. Clock Shield – Liefert Echtzeit-Uhrzeit. Abruf per Clock.queryDateAndTime();
  5. Internet Shield – Meiner Meinung nach das mächtigste Shield. Abruf des aktuellen Wetters via OpenWeatherMap API: HttpRequest request1("/*API-Adresse*/");
Amazon Echo-Style Smart Speaker mit Arduino und 1Sheeld selbst bauen
Amazon Echo-Style Smart Speaker mit Arduino und 1Sheeld selbst bauen
Amazon Echo-Style Smart Speaker mit Arduino und 1Sheeld selbst bauen
Amazon Echo-Style Smart Speaker mit Arduino und 1Sheeld selbst bauen
Amazon Echo-Style Smart Speaker mit Arduino und 1Sheeld selbst bauen

Schritt 1: Komponenten beschaffen

Schritt 2

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

Schritt 3

PVC-Rohr mit schwarzer Sprühfarbe lackieren.

Schritt 4: Verkabelung

Schritt 5: 1Sheeld Library einrichten

In der Arduino IDE: Sketch → Include Library → Manage Libraries → „OneSheeld“ suchen → Installieren. Oder Library von 1sheeld.com/downloads herunterladen und als .zip hinzufügen.

Schritt 6: 1Sheeld App installieren

1Sheeld Mobile App von der Website, Apple App Store oder Google Play Store herunterladen.

Schritt 7: Shields aktivieren

Dem 1Sheeld Getting Started Tutorial folgen und am Ende folgende Shields auswählen:

Dann den „Multiple Shield“-Button drücken.

Code

Amazon Echo Code Arduino
/* OPTIONAL: Um die Bibliotheksgröße und Speichernutzung zu reduzieren,
 * können Sie angeben, welche Shields Sie einbinden möchten.
 */
#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_SHIELD

#include <OneSheeld.h>

unsigned long previousMillis = 0;
bool state = 0;

// API für Wetter in Kairo, Ägypten
HttpRequest request1("https://api.openweathermap.org/data/2.5/weather?q=Cairo,EG&appid=43d95b4cf5d0573e2dfe5186c160017a");

#define strip1 3
#define strip2 6
#define strip3 5
int lamp = 13;

int hour, minute;
char b[4], c[4];
String strh, strm, noon;

const char mainCommand[] = "alexa";
const char weatherCommand[] = "how is the weather today";
const char playCommand[] = "play music";
const char clockCommand[] = "what time is it";
const char stopCommand[] = "stop";
const char lightonCommand[] = "turn on the lights";
const char lightoffCommand[] = "turn off the lights";

void setup() {
  OneSheeld.begin();
  pinMode(strip1, OUTPUT);
  pinMode(strip2, OUTPUT);
  pinMode(strip3, OUTPUT);
  pinMode(lamp, OUTPUT);
  request1.setOnSuccess(&onSuccess1);
  request1.getResponse().setOnJsonResponse(&onJsonReply1);
  VoiceRecognition.setOnNewCommand(&myFunction);
}

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= 5000) {
    previousMillis = currentMillis;
    Clock.queryDateAndTime();
    VoiceRecognition.start();
  }
  hour = Clock.getHours();
  minute = Clock.getMinutes();
  if (hour > 12) { hour -= 12; noon = "P M"; } else { noon = "A M"; }
  strh = String(hour); strm = String(minute);
  strh.toCharArray(b, 4); strm.toCharArray(c, 4);
}

void myFunction(char *commandSpoken) {
  if (!strcmp(mainCommand, VoiceRecognition.getLastCommand())) {
    alexon(); MusicPlayer.setVolume(5); state = 1;
  }
  if (!strcmp(playCommand, VoiceRecognition.getLastCommand()) && state == 1) {
    alexoff(); MusicPlayer.play(); delay(10000); MusicPlayer.stop(); state = 0;
  }
  else if (!strcmp(weatherCommand, VoiceRecognition.getLastCommand()) && state == 1) {
    alexoff(); Internet.performGet(request1); OneSheeld.delay(5000); state = 0;
  }
  if (!strcmp(clockCommand, VoiceRecognition.getLastCommand()) && state == 1) {
    alexoff();
    TextToSpeech.say("time in cairo is"); delay(1300);
    TextToSpeech.say(b); delay(600);
    TextToSpeech.say(c); delay(800);
    TextToSpeech.say(noon); delay(500);
    state = 0;
  }
  if (!strcmp(lightonCommand, VoiceRecognition.getLastCommand()) && state == 1) {
    alexoff(); digitalWrite(lamp, HIGH); TextToSpeech.say("the lights turned on"); delay(6000); state = 0;
  }
  else if (!strcmp(lightoffCommand, VoiceRecognition.getLastCommand()) && state == 1) {
    alexoff(); digitalWrite(lamp, LOW); TextToSpeech.say("the lights turned off"); delay(3000); state = 0;
  }
}

void onSuccess1(HttpResponse & response1) {
  response1["weather"][0]["main"].query(); delay(200);
}

void onJsonReply1(JsonKeyChain & hell, char * output) {
  if (hell == request1.getResponse()["weather"][0]["main"]) {
    TextToSpeech.say("the weather today in cairo is"); delay(2000);
    TextToSpeech.say(output);
  }
}

void alexon() {
  digitalWrite(strip1, HIGH); delay(200);
  digitalWrite(strip2, HIGH); delay(200);
  digitalWrite(strip3, HIGH);
}

void alexoff() {
  digitalWrite(strip1, LOW); digitalWrite(strip2, LOW); digitalWrite(strip3, LOW);
}

Schaltpläne

Amazon Echo-Style Smart Speaker mit Arduino und 1Sheeld selbst bauen

Herstellungsprozess

  1. Temperatur- und Luftfeuchtedaten zwischen zwei Arduinos via Firebase übertragen
  2. Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
  3. Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
  4. DIY Arduino USB Gaming Controller – Bauen Sie Ihren eigenen High-Performance Gamepad
  5. Echtzeit-Entfernungsmessung mit Arduino Sonar & Processing-Visualisierung
  6. Pixel Chaser: Interaktives One-Tap-LED-Spiel mit Arduino Nano
  7. Stufenlose LED-Helligkeitssteuerung mit Bolt IoT und Arduino UNO
  8. Intelligenter Arduino-Roboterarm bauen: Einfaches DIY-Tutorial
  9. Autonomer Roboter-Panzer bauen: Walabot, Arduino, Raspberry Pi & Alexa-Integration
  10. Kompaktes FM-Radio mit Arduino Nano und RDA5807M selbst bauen