Projekt 25b: Sprachsteuerung einer Designerlampe

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen


Autoren: Simon Kohfeld, Ilja Scheremeta

Betreuer: Daniel Klein

→ zurück zur Übersicht: WS 18/19: Angewandte Elektrotechnik (BSE)

Einleitung

In diesem Artikel wird das Projekt 25b „Sprachsteuerung einer Designerlampe“ vorgestellt. Dies geschieht im Rahmen des Studiengangs „Business and Systems Engineering“ im Fach „angewandte Elektrotechnik“ der Hochschule Hamm-Lippstadt. Für das Projekt wird eine IKEA Hängeleuchte mit einer Amazon Alexa-Sprachsteuerung versehen und mit verschiedenen Aktoren ausgestattet, die der Lampe einige intelligente Funktionen verleihen. Die Ergebnisse dieses Projektes werden am 18.01.2019 im Rahmen der Mechatronik-Projektmesse 2019 vorgestellt.

Zielsetzung

Die Amazon Alexa Sprachsteuerung soll verwendet werden, um verschiedene "smarte" Funktionen mit der IKEA-Lampe auszufühen. Die wesentlichen Aufgaben von diesem Projekt bestehen darin, die Lampe mit einer Antriebseinheit und einem Leuchtmittel auszustatten und die Kommunikation zwischen der Sprachsteuerung und der Steuerungshardware in der Lampe zu realisieren. Da die Hängeleuchte im Auslieferungszustand mechanisch auf- und zugemacht wird, gilt es zunächst die Hängeleuchte so umzurüsten, dass diese Funktion mit Hilfe von einem Antrieb ausgeführt werden kann. Diese Teilaufgabe gilt als die Voraussetzung für die Sprachsteuerung der Leuchte. Weitere Teilaufgaben, die in diesem Projekt angestrebt werden, sind die Steuerung der RGB-LED und gegebenenfalls einer Audioausgabe beim Zu- und Auffahren der Leuchte. Die Bedienung dieser Komponenten soll ebenfalls durch die Sprachsteuerung erfolgen.

Erwartungen an die Projektlösung

  • Recherche bisheriger Lösungen
  • Entwurf der Schaltung, Konstruktion und Beschaffung der Bauteile, damit sich die Lampe elektrisch angetrieben öffnen und schließen lässt
  • Realisierung der Schaltung durch Fertigung eines prototypischen Arduino-Uno-Shields
  • Implementierung der Schnittstelle Alexa-Arduino
  • Implementierung der Sprachsteuerung
  • Test und wiss. Dokumentation
  • Erstellung eines Videos, welches die Funktionen visualisiert
  • Live Vorführung während der Abschlusspräsentation

Kür: Miniaturisierung (z.B. Arduino Nano)

Verwendete Hardware

  • IKEA PS 2014 Hängeleuchte
  • Amazon Alexa Echo Dot (2.Generation)
  • 360° Servo MG996R
  • RGD-LED-Streifen 5V 500mA
  • Steckernetzteil SNT 600 9V
  • Entwicklungsboard ESP8266 NodeMcu V2
  • Lautsprecher LSM-57F
  • Power Supply Module 1pc

Hardwarebeschreibung

In diesem Kapitel werden die eingesetzten Hauptkomponenten beschrieben. Der Fokus liegt hierbei auf der Funktionalität und den Besonderheiten der jeweiligen Komponente. Die dazugehörigen Datenblätter sind im SVN Projektordner zu finden.


Entwicklungsboard ESP8266 NodeMcu V2

Abb.?? ESP8266 NodeMcu [1]

Bei dem ESP8266 handelt es sich um einen Mikrocontroller mit einem WLAN-Funkmodul. Dieser ist mit der Arduino Software kompatibel und kann somit als Schnittstelle mit dem Alexa Echo Dot eingesetzt werden. Über den Micro-USB Anschluss erfolgt die Programmierung und die Stromversorgung. Außerdem ist der ESP8266 ein reiner 3,3V Mikrocontroller. Es bedeutet, dass alle Eingänge und Ausgänge ausschließlich mit 3,3V betrieben werden. Da der Servo mit mindestens 4,8V arbeitet, muss an dieser Stelle eine externe Spannungsquelle eingesetzt werden. Dazu wird das Power Supply Modul 1pc verwendet.


Technische Daten:

  • Controller: ESP8266
  • Anschluss: Micro-USB
  • CPU: 80 MHz, 32Bit RISC
  • RAM: 96kB
  • Flash: 4 MB
  • WiFi (Client, AccessPoint Mode)
  • 10 digital IOPins, 1 ADC (10Bit)
  • Integrierte WLAN Antenne
  • Grösse: 60 x 31 x 13mm
  • Gewicht: 10g


Power Supply Module 1pc

Abb. ??: Power Supply Board 1pc


Dieses Stromversorgungsmodul dient dem Zweck der Energieversorgung von mehreren Komponenten. Damit wird gleichzeitig das Entwicklungsboard und der Lautsprecher mit 3,3V und die RGB-LED, so wie der Servo mit 5V versorgt.

Technische Daten:

  • Maße: 53,3 x 35,5 x 20mm
  • Ein- und Ausschaltknopf mit eingebauter LED
  • Eingangsspannung: 6,5-9V
  • Ausgangsspannung: 3,3 oder 5V
  • Maximaler Strom: 700mA
  • Anschlusspins für ein Breadboard
  • USB-Anschluss zur Versorgung von externen Geräten


Servo 360° MG996R

Mit dem Servomotor wird die Schnur reguliert, an der die Verkleidung der Designerlampe befestigt ist. Damit wird die Lampe auf- oder zugemacht.

Technische Daten:

  • Maße: 40,7 x 19,7 x 42,9mm
  • Gewicht: 55g
  • Drehgeschwindigkeit: 0,17 s/60° (4,8V), 0.14s/60°(6V)
  • Eingangsspannung: 4,8-7,2V
  • Stromversorgung 500-900mA (6V)
  • Arbeitstemperatur: 0-55°C


Amazon Alexa Echo Dot

Der Amazon Alexa Echo Dot wurde von dem amerikanischen Unternehmen Amazon entwickelt. Dabei handelt es sich um ein sprachgesteuertes Gerät mit dem viele verschiedene Funktionen des Alltags durchgeführt werden können. Diese sind z.B. die Wiedergabe von Musik, Steuerung von Haushaltsgeräten oder die Informationenbereitstellung. Um auf solche Funktionen zugreifen zu können, muss der Dot mit dem Alexa Voice Service (AVS) verbunden werden. Die AVS bildet die Grundlage für die Funktionen, denn hier werden die jeweiligen Sprachbefehle in einer Cloud gespeichert und verarbeitet. Hierfür benötigt der Dot eine WLAN-Verbindung.

Technische Daten:

  • Maße: 83,5 x 83,5 x 32mm
  • Gewicht: 163g
  • Dualband-WLAN unterstützt 802.11 a/b/g/n (2,4 und 5GHz) Netzwerke
  • Integrierter Lautsprecher
  • Verbindung mit externen Lautsprechern über 3,5 mm-Stereokabel oder Bluetooth
  • 7 integrierte Fernfeld-Mikrofone

Verwendete Software

  • Amazon Alexa Voice Service App
  • Arduino IDE

Projektdurchführung

Projektplan

Abb. ??: Projektplan

In der Abbildung ?? sieht man den Projektplan. Insgesamt standen zur Bearbeitung des Projektes 16 Wochen zur Verfügung. Diese sind in drei unterschiedliche Phase der Bearbeitung aufgeteilt. In der ersten Phase geht es um die Vorbereitung auf die Umsetzung des Projektes. Den Hauptteil bildet die Hauptphase, denn dabei liegt der Schwerpunkt auf der praktischen Realisierung der Ziele. In der letzten Phase steht vor allem der Test, so wie die Präsentation der praktischen Anwendung der Designerlampe im Soll-Zustand im Vordergrund.

Am Anfang der ersten Phase steht die Recherche bereits vorhandener Lösungen zum Thema Sprachsteuerung in Verbindung mit Arduino-Hardware. Hierbei hat sich gezeigt, dass die Kommunikation zwischen der Alexa und dem Entwicklungsboard ESP 8266 äußerst schnell und effektiv herzustellen ist. Hierfür wird lediglich ein Smartphone und die Amazon-Alexa-App benötigt, um das Entwicklungsboard mit dem Alexa-Lautsprecher zu verbinden. In der Kalenderwoche 41 wurde dann der Systementwurf erstellt und gleichzeitig die für das Projekt benötigten Bauteile bestellt.

Einer der Vorteile des Fachs „Angewandte Elektrotechnik“ ist es, dass die Studierenden bei der Aneignung der technischen Grundlagen für das Projekt nicht auf sich alleine gestellt sind. Als Pflichtveranstaltungen werden vier unterschiedliche Praktika angeboten, welche in den Kalenderwochen 43,44,46 und 47 stattfinden. Dabei werden die Themen, von der Erstellung des Leiterplatten-Layouts über das „Rapid Control Prototyping“ und der Einführung in Mikrocontroller mit Arduino bis zu der Abstandsreglung mit dem Lego NXT Baukasten, theoretisch und praktisch durchgearbeitet. Am Ende des letzten Versuchs ist die erste Phase der Vorbereitung zu Ende. In der zweiten Phase geht es um die praktische Umsetzung der Ziele. Diese besteht aus der Realisierung der Schaltung und der Schnittstellenimplementierung Alexa-ESP8266. Die wissenschaftliche Dokumentation wird zwischen den einzelnen Tätigkeiten in der zweiten und dritten Phase durchgeführt. Abschließend wird in der letzten Phase die sprachgesteuerte Lampe getestet, ein YouTube Video erstellt und die Ergebnisse des Projektes in Form von einer Abschlusspräsentation dargestellt.



Kommunikationsstrukturplan

Abb. ??: Die Strukturübersicht der Designerlampe

In der Abbildung ?? wird die Kommunikationsstruktur dargestellt. Im Zentrum steht das WIFI-Entwicklungsboard ESP8266, welches als Schnittstelle zur Energieversorgung, Sprachsteuerung und technischer Ausführung dient. Alle Komponenten werden mit dieser Hardware mit einem Kabel oder kabellos verbunden. Hier werden also die GPIOs angesteuert, die danach die Ausgänge schalten. Da das Steckernetzteil eine Spannung von 9 V liefert, muss diese umgewandelt werden, denn die Hardware arbeitet mit einer Spannung von 3,3 bzw. 5V. Diese Aufgabe übernimmt das Stromversorgungsmodul, welches sowohl 3,3V als auch 5V liefern kann und durch einen DC-Stecker mit dem Netzteil verbunden ist. Die anderen Hardwarekomponenten sind direkt über die Pins mit dem Stromversorgungsmodul verbunden.

Voreinstellungen für NodeMCU

Damit das Hardwareboard mit der Arduino IDE programmiert werden kann müssen zunächst einige Einstellungen vorgenommen werden. In der IDE unter Datei->Voreinstellungen muss die URL: in das Feld "zusätzliche Boardverwalter URLs eingetragen werden" und anschließend muss im Bibliotheksverwalter die Bibliothek für den WLAN-Chip ESP8266 installiert werden.

Verbindungsaufbau zwischen Arduino-Hardware und Alexa Sprachsteuerung

Damit die Sprachgesteuerte Designerlampe Realität wird, muss zunächst eine Verbindung zwischen dem Echo Dot und der Arduino Hardware hergestellt werden. Dazu sind auf beiden Seiten einige Schritte vorzunehmen, auf die nachfolgend eingegangen wird.

Echo Dot: Herstellung einer WLAN Verbindung

Um den Amazon Echo Dot mit dem Entwicklungsboard zu verbinden, benötigt man zum einen eine Internetverbindung und zum anderen ein Smartphone oder ein Tablet. Auf dem Smartphone oder Tablet wird die Amazon Alexa Voice Service App benötigt, mit dessen Hilfe die Verbindung in folgenden Schritten aufgebaut wird:

  1. Zunächst muss die Service-Taste auf dem Echo DOt gedrückt gehalten werden, bis der LED Ring von einem orangenem Licht umkreist wird
  2. Dann muss die Alexa-App geöffnet werden
  3. Die App fordert dann den Benutzer dazu auf, in den Einstellungen des Geräts eine Verbindung mit dem vom Echo Dot erstellten WLAN-Netzwerk herzustellen
  4. Zurück in der App kann dann eine Auswahl des zu nutzendem WIFIs getroffen werden und eine Passworteingabe erfolgen
  5. Der LED Ring des Echo-Dot leuchtet nun blau, bis die Verbindung hergestellt wurde.

Der Echo Dot kann nun verwendet werden.

Hardwareboard: Herstellung einer WLAN Verbindung

Um die Arduino-Hardware mit der Alexa Sprachsteuerung verbinden zu können, muss auch dort zunächst eine Internetverbindung hergestellt werden.

Dazu wird die Arduino-eigene Bibliothek "Wifi" benötigt. Für einen Verbindungsaufbau muss dann die SSID und das Passwort des WLAN-Netwerkes übergeben werden. Das gesamte Setup ist im folgenden Sourcecode dargestellt und wird im Standard Setup des Arduinoprogramms aufgerufen. Ist der Verbindungsaufbau erfolgreich, ist dies im seriellen Monitor der Arduino IDE zu sehen.

void wifiSetup() {
    // WIFI Modul in STA Modus setzen
    WiFi.mode(WIFI_STA);

    // Verbinden
    Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
    WiFi.begin(WIFI_SSID, WIFI_PASS);

    // Warte auf Verbindung
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        delay(100);
    }
    Serial.println();

    // Verbindung erfolgreich melden
    Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());

}



Von Alexa steuerbare Objekte auf Arduino Hardware generieren

Damit das Hardwareboard nun von der Alexa Sprachsteuerung angesprochen werden kann, müssen zunächst Objekte im Arduinoprogramm erstellt werden, die für die Sprachsteuerung im Netzwerk sichtbar sind. Dafür steht gibt es eine fertige Arduino-Bibliothek, die die einzelnen Pins des Hardwareboards als WLAN-Steckdosen emuliert. Diese Bibliothek nennt sich "fauxmoESP" und ist im Internet frei verfügbar. Dort ist die Verwendung der Bibliothek ebenfalls ausführlich erläutert und mit Beispielen versehen.

Im folgenden Codeausschnitt aus der Sprachsteuerungssoftware wird zunächst die Bibliothek aktiviert. Dann werden die virtuellen WLAN-Steckdosen hinzugefügt. Mit dem folgenden onSetState-Befehl wird ein Interrupt implementiert, welcher immer eine nullbasierte Geräte ID in aufsteigender Reihenfolge der hinzugefügten Geräte, einen Gerätenamen und den Status EIN oder AUS liefert. Über die Geräte ID kann dann eindeutig abgefragt werden, welches Gerät angesprochen wurde und die entsprechenden Befehle können ausgeführt werden. Im folgenden Code ist Geräte ID 0 das rote Licht, welches bei Aufruf mit Status EIN dementsprechend eingeschaltet wird. Bei Status AUS wird das rote Licht ausgeschaltet und die anderen Beiden Farben bekommen den invertierten Status, sodass die Lampe dann Gelb leuchtet. Je nach Geräte ID werden so verschiedene Farben geschaltet, der Motor gestartet oder eine Melodie abgespielt.

fauxmo.enable(true);
    // Add virtual devices
    fauxmo.addDevice("rotes Licht");
    fauxmo.addDevice("gruenes Licht");
    fauxmo.addDevice("blaues Licht");
    fauxmo.addDevice("Lampe");
    fauxmo.addDevice("Lampe auf");
    fauxmo.addDevice("Todessternmodus");
 
    fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) {
        Serial.printf("[MAIN] Device #%d (%s) state: %s value: %d\n", device_id, device_name, state ? "ON" : "OFF", value);
        switch (device_id) {
case 0:
  digitalWrite(LEDrot, state); // rotausschalten
  digitalWrite(LEDgruen, !state); // rotausschalten
  digitalWrite(LEDblau, !state); // blau einschalten
  break;
case 1:
  digitalWrite(LEDblau, !state); // blau ausschalten
  digitalWrite(LEDgruen, state); // rotausschalten
  digitalWrite(LEDrot, !state); // rot einschalten
  break;
case 2:
  digitalWrite(LEDrot, !state); // rotausschalten
  digitalWrite(LEDblau, state); // blau ausschalten
  digitalWrite(LEDgruen, !state); // gruen einschalten
  break;
case 3:
  digitalWrite(LEDrot, state); // rotausschalten
  digitalWrite(LEDblau, state); // blau ausschalten
  digitalWrite(LEDgruen, state); // gruen einschalten
  break;    
  case 4:
  lastActionTime = millis();  
  runDrive = 1;
  servoDirection = state;
  break;     
  case 5:
  digitalWrite(LEDrot, state); // rotausschalten
  digitalWrite(LEDgruen, !state); // rotausschalten
  digitalWrite(LEDblau, !state); // blau einschalten
  lastActionTime = millis();  
  runDrive = 1;
  servoDirection = state;
  playTime= millis();
  imperial = state;
  break;   
}
    });


Virtuelle Geräte auf Alexa konfigurieren

Für die Alexa sind die im Code erstellten Geräte in der Alexa App als neue Geräte sichtbar. Diese können dann über die App eingerichtet und ggf. einer Gruppe zugeordnet werden. Danach ist die Verknüpfung von Sprachstuerung und Arduino-Hardware erfolgreich hergestellt.

Wichitge Zusatzinformation

Damit Alexa die virtuellen Geräte finden kann war bei uns ein Downgrade der Treibersoftware für das Hardwareboard auf die Version ?? notwendig.

Die Schaltung und der Prototyp

Nun werden die einzelnen Komponente zusammengefügt und die dazugehörige Schaltung, so wie der Prototyp erstellt.


Abb. ??: Die Steckplatine für die sprachgesteuerte Designerlampe
Abb. ??: Die Schaltung für die sprachgesteuerte Designerlampe

Programmcode in der Arduinosoftware

In diesem Kapitel geht es um die Programmierschnittstelle, mit Hilfe der Arduinosoftware. Das Skript ist in dem folgenden Programmfenster zu sehen. Durch die Kommentare kann die Vorgehensweise in dem Quellcode besser verstanden werden.

















Ergebnisse

Wie es in dem YouTube Video zu sehen ist, wurde die wesentliche Aufgabenstellung von diesem Projekt erfüllt. Das Ziel der Kommunikation zwischen der Sprachsteuerung und dem Entwicklungsboard ESP 8266 ist erreicht worden. Mit Hilfe der Arduinosoftware

Zusammenfassung

Lessons Learned

Projektunterlagen

YouTube Video

Weblinks

Literatur



→ zurück zur Übersicht: WS 18/19: Angewandte Elektrotechnik (BSE)