Animiertes Smart Light mit Alexa und Arduino
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Apps und Onlinedienste
| ||||
| ||||
| ||||
|
Über dieses Projekt
Warum Lichtstreifen
Ich war schon immer fasziniert von adressierbaren RGB-LED-Streifen. Die endlosen Farbeffekte und Animationsmöglichkeiten haben meine Kreativität schon immer geweckt, daher habe ich mich vor einigen Jahren entschieden, eine Bibliothek für die Arduino-Boards namens ALA (Arduino Light Animations) zu entwickeln. Alexa gibt mir jetzt die Möglichkeit, Raumbeleuchtung und Effekte mit meiner Stimme zu steuern und das ist cool!
Projektübersicht
Es gibt die für dieses Projekt notwendigen Komponenten.
- Amazon Alexa: Ein benutzerdefinierter Alexa-Skill (Light Strip) definiert das Sprachinteraktionsmodell und übersetzt Befehle (Intents), die an die Lambda-Funktion ausgegeben werden.
- Amazon Lambda :Ein Python-Skript, das Nachrichten von Alexa empfängt und Updates an den IoT-Dienst sendet.
- Amazon IoT :Der IoT-Dienst speichert einen "Dingschatten", der den Zustand des RGB-Streifens darstellt. Jedes Mal, wenn der Shadow aktualisiert wird, werden die abonnierten MQTT-Clients (Raspberry PI) benachrichtigt.
- Himbeer-PI :Dieser kleine PC führt einen MQTT-Client aus, um Nachrichten vom Amazon IoT-Dienst zu empfangen. Auf der anderen Seite wird es über den USB-Anschluss mit Strom versorgt und Befehle an das Arduino-Board gesendet.
- Arduino :Dieser schöne Mikrocontroller führt die ALA-Bibliothek aus, um den LED-Streifen anzusteuern, der die Befehle vom Raspberry PI über den seriellen USB-Port empfängt. Sie können Arduino Uno, Nano oder Mega Board verwenden.
- WS8212 RGB-LED-Streifen :Dies sind adressierbare LED-Streifen, sodass jede LED einzeln angesteuert werden kann. Dies ermöglicht schöne und farbenfrohe Lichtanimationen.
Nichts in dem Projekt ist sehr anspruchsvoll, aber es gibt viele miteinander verbundene Teile. Ich empfehle Ihnen, der vorgeschlagenen Struktur zu folgen, um Ihr Projekt auf einer soliden Grundlage aufzubauen, bevor Sie mit dem nächsten Schritt fortfahren. Um es so einfach wie möglich zu machen, habe ich das Projekt in zwei Teilprojekte aufgeteilt.
Der erste Teil des Projekts ist in meinem Projekt Web-Controlled LED Animations with Raspberry Pi and Arduino Hackster.io beschrieben und führt Sie durch die Schritte, die zum Anschließen des Raspberry PI, des Arduino-Boards und des WS8212-LED-Streifens erforderlich sind. Am Ende dieser Phase sind Sie in der Lage, die LED-Animationen von einem Smartphone oder einem PC mit dem Webbrowser zu steuern.
Der zweite Teil des hier beschriebenen Projekts wird die vorherige Implementierung mit Amazon Alexa um die Sprachsteuerung erweitern. Es müssen mehrere Schritte ausgeführt werden, um die gesamte Kette richtig einzurichten. Seien Sie also geduldig und befolgen Sie die Anweisungen sorgfältig..
Amazon IoT
Haben Sie den Hardwareteil abgeschlossen? Es ist jetzt Zeit, in die Cloud zu gehen! Wir werden die AWS IoT-Plattform verwenden, um unser "Ding" über das Internet zu verwalten.
Wir werden einen "Geräteschatten" verwenden, der eine Kopie des Zustands einer Sache zusammen mit den gewünschten Änderungen ist. Der Raspberry PI abonniert einen Benachrichtigungs-Feed, der die Änderungen ("Delta") an diesem Shadow veröffentlicht. Weitere Informationen zur AWS IoT-Plattform und APIs finden Sie unter diesem Link.
Ein IoT-Ding erstellen
Melden Sie sich bei der AWS-Konsole an. Falls noch nicht geschehen, müssen Sie ein kostenloses Konto erstellen.
Stellen Sie sicher, dass Sie bei US Ost (Nord-Virginia) angemeldet sind oder EU (Irland) Zone in der oberen rechten Ecke.
Suchen Sie nach „IoT“ und wählen Sie AWS IoT . aus Service. Klicken Sie auf Erste Schritte Schaltfläche (falls vorhanden), um das Einführungstutorial zu schließen.
Wir müssen zuerst eine Sicherheitsrichtlinie erstellen für unser "Ding". Gehen Sie zu Sicher> Richtlinien Menü und klicken Sie dann auf Richtlinie erstellen und geben Sie die folgenden Informationen ein:
- Name:LightStripPolicy
- Aktion:*
- Ressource:*
- Effekt - Zulassen:aktiviert
- Klicken Sie auf "Erstellen"
Jetzt können wir das IoT entwickeln Ding .
- Wählen Sie Verwalten > Dinge Menü und erstellen Sie ein neues AWS IoT-Ding, indem Sie auf Ein Ding registrieren . klicken Schaltfläche (oder Erstellen Schaltfläche in der oberen rechten Ecke) und dann auf Einzelnes Ding erstellen .
- Geben Sie ‚LS01‘ in das Feld Name ein. Übernehmen Sie die Standardeinstellungen für andere Felder und klicken Sie auf Weiter .
- Klicken Sie auf Zertifikat erstellen Schaltfläche in der Zertifikaterstellung mit einem Klick Abschnitt.
- Laden Sie die 3 Zertifikate für Ihr Gerät und die Root-CA herunter. Für die Root-CA müssen Sie möglicherweise mit der rechten Maustaste klicken und sie dann speichern.
- Nachdem Sie die Zertifikate heruntergeladen haben, klicken Sie auf Aktivieren Taste.
- Klicken Sie auf Eine Richtlinie anhängen und wählen Sie die LightStripPolicy Sie zuvor erstellt haben und klicken Sie dann auf Ding registrieren .
Bevor Sie fortfahren, müssen Sie sich den AWS IoT-Endpunkt notieren. Klicken Sie auf die Einstellungen Menü in der unteren linken Ecke der AWS IoT-Webseite, öffnen Sie es und notieren Sie sich Endpoint.
Raspberry PI so konfigurieren, dass er auf das 'Ding' hört
Wir müssen zuerst das AWS IoT Device SDK für Python installieren mit dem folgenden Befehl auf der Raspberry PI-Befehlszeile:
sudo pip3 AWSIoTPythonSDK installieren
Laden Sie jetzt das LightStrip-Repository von GitHub herunter und entpacken Sie es.
mkdircd /home/pi/LightStripwget https://github.com/bportaluri/LightStrip/archive/master.zipunzip master.zip
Kopieren Sie die vier Zertifikate, die Sie beim Erstellen des IoT-Things in /home/pi/LightStrip/LightStrip-master/pi . heruntergeladen haben Ordner.
Bearbeiten Sie die lightstripcfg.py Skript. Sie können einen beliebigen Texteditor verwenden. Hier sind die Befehle für den nano Herausgeber.
cd /home/pi/LightStrip/LightStrip-master/pinano lightstripcfg.py
Bearbeiten Sie nun die Einstellungen entsprechend Ihrer Konfiguration.
- AWSIOT:Geben Sie den AWS IoT-Endpunkt ein, den Sie zuvor notiert haben.
- ROOT_CA:Dateiname des Root-CA-Zertifikats
- ZERTIFIKAT:Dateiname des Zertifikats
- PRIVATE_KEY:Dateiname des privaten Schlüssels
- DEVICE_NAME:"LS01" unverändert lassen
Schließen Sie den Nano-Editor und speichern Sie die Datei, indem Sie 'Strg+X' und dann 'Y' drücken.
Starten Sie das Skript „lightstrip.py“ wie folgt.
sudo python3 lightstrip.py
Das Skript listet die angeschlossenen USB-Ports auf. Der Arduino sollte mit /dev/ttyACM0 verbunden sein, also führen Sie das Skript aus, das den Port wie folgt übergibt.
sudo python3 lightstrip.py /dev/ttyACM0
Der Test-Client verbindet sich mit dem Amazon Thing Shadow-Dienst und abonniert die Änderungen des LS01 Schatten Gerät. Bei erfolgreicher Verbindung aktualisiert das Client-Skript seinen Status auf den LS01-Geräteschatten und erhält eine Bestätigungsnachricht wie diese.
Um zu überprüfen, ob alles richtig funktioniert, gehen Sie zurück zur AWS IoT-Konsole und wählen Sie Manage> Things . Menü öffnen dann das LS01 Gerät. Wählen Sie den Schatten Menü und Sie sehen den Schattenstatus des Geräts.
Klicken Sie auf Bearbeiten Link im Abschnitt Schattendokument und fügen Sie das folgende JSON-Dokument in das Feld Schattenstatus ein.
{ "gewünscht":{ "Animation":"101" }}
Hier ist, was Sie sehen sollten.
Wenn Sie auf den Link Speichern klicken, wird eine „Delta“-Nachricht an den MQTT-Client auf dem Raspberry PI gesendet, die den LED-Streifen einschaltet.
Das folgende JSON-Dokument ändert die Farbe in Blau.
{ "gewünscht":{ "color":"0066CC" }}
An dieser Stelle können wir unseren LED-Streifen über den ASW IoT-Dienst steuern, also kannst du stolz auf dich sein.
AWS Lambda-Funktion
AWS Lambda ermöglicht die Ausführung von Code in der Cloud, ohne Server bereitzustellen oder zu verwalten. Es ist die perfekte Brücke zwischen dem Alexa Skills Kit, das die Sprachsteuerung im letzten Schritt dieses Projekts ermöglicht.
Melden Sie sich bei der AWS-Konsole an. Wählen Sie aus der Liste der Dienste Lambda .
Stellen Sie sicher, dass Sie in derselben Region angemeldet sind, die Sie im vorherigen Schritt verwendet haben:USA Ost (Nord-Virginia) oder EU (Irland) Zone in der oberen rechten Ecke.
Klicken Sie auf Funktion erstellen Taste. Klicken Sie auf Von Grund auf neu erstellen und wie folgt konfigurieren:
- Name =Lichtstreifen
- Laufzeit =Python 3.6
- Rolle =Erstellen Sie eine benutzerdefinierte Rolle. Dadurch wird eine neue Registerkarte geöffnet. Klicken Sie einfach auf die Schaltfläche „Zulassen“, um eine neue Rolle namens lambda_basic_execution zu erstellen.
- Bestehende Rolle:lambda_basic_execution
- Klicken Sie auf Funktion erstellen Schaltfläche
Notieren Sie sich die Lambda ARN ID in der oberen rechten Ecke.
Klicken Sie auf LightStrip Kästchen, um den Abschnitt mit dem Funktionscode aufzurufen.
Codeeingabetyp:Code inline bearbeiten
- Laufzeit:Python 3.6
- Handler:lambda_function.lambda_handler
Die lambda_function.py Skript sollte bereits definiert sein. Fügen Sie den Code von LightStrip\lambda\lambda_function.py ein Datei in den Code-Editor.
Erstellen Sie eine weitere Datei namens ala_controller.py und fügen Sie den Code von LightStrip\lambda\ala_controller.py ein Datei in den Code-Editor.
So soll das Ganze aussehen.
Wenn Sie fertig sind, klicken Sie auf das orangefarbene Speichern Schaltfläche in der oberen rechten Ecke.
Alexa-Skill
Wir können jetzt den benutzerdefinierten Skill Light Strip für Alexa erstellen.
Gehen Sie zur Amazon Developer Console und melden Sie sich bei Bedarf an. Möglicherweise müssen Sie Ihr Konto zuerst registrieren.
Gehen Sie zu Alexa> Alexa Skills Kit (Erste Schritte) .
Klicken Sie auf Neuen Skill hinzufügen in der oberen rechten Ecke und geben Sie die folgenden Daten in die Skill-Informationen ein Registerkarte:
- Fähigkeitstyp:Benutzerdefiniertes Interaktionsmodell
- Sprache:Englisch (USA)
- Name:LightStrip
- Aufrufname:Lichtleiste
- Klicken Sie auf Speichern
Dadurch entsteht die Fertigkeit. Notieren Sie sich die Skill-ID.
Wählen Sie das Interaktionsmodell Menü und klicke dann auf Skill Builder starten Taste.
Klicken Sie auf den Code-Editor und fügen Sie den Inhalt von LightStrip/alexaskill/lightstrip_skill.json . ein Datei in das Textfeld.
Klicken Sie auf Modell speichern und Modell erstellen Tasten. Der Aufbau des Modells dauert einige Minuten, also haben Sie Geduld. Klicken Sie auf Skill-Informationen um zur Skill-Konfigurationsseite zurückzukehren.
Klicken Sie nun auf die Konfiguration Menü.
Wählen Sie als Dienstendpunkttyp AWS Lambda ARN und fügen Sie dann den oben notierten Lambda-Funktions-ARN ein.
Belassen Sie alle Standardwerte und klicken Sie auf Speichern Knopf unter.
Alexa-Skill mit Lambda-Funktion verbinden
Gehen Sie zurück zu Ihrer Lambda-Funktion. Auf der rechten Seite befindet sich eine Liste mit vordefinierten Triggern. Wählen Sie Alexa-Skills-Kit und es wird zu Ihrer Funktion hinzugefügt.
Konfigurieren Sie wie folgt:
- Anwendungs-ID =die Skill-ID, die Sie oben notiert haben
- Klicken Sie auf Hinzufügen
- Klicken Sie auf Speichern
Du bist fertig
Das Projekt ist nun abgeschlossen. Probieren Sie die folgenden Sprachbefehle aus:
- Lichtleiste öffnen
- Einschalten
- Helligkeit auf 20 % einstellen
- Helligkeit auf 50 % einstellen
- Farbe auf Rot setzen
- Setze Farbe auf Türkis
- Ausschalten
- Führe eine spannende Animation aus
- Rufen Sie eine entspannende Animation ab
Der LightStrip-Skill ermöglicht auch erweiterte Sprachinteraktionen
- Ich:Alexa, öffne Lichtleiste
- Alexa:Willkommen bei LightStrip - Der LED-Streifen leuchtet mit blauem Licht
- Ich:Starte eine Animation
- Alexa:Willst du eine entspannende oder spannende Animation?
- Ich:Entspannend
- Alexa:OK - Der LED-Streifen zeigt eine zufällige Animation
- Ich:Nächste Animation
- Alexa:OK - Eine weitere zufällige Animation wird angezeigt
Um das Interaktionsmodell besser zu verstehen, finden Sie hier das vollständige VUI-Diagramm des Skills.
Verbesserungen und Verfeinerungen
AlaWeb beim Booten automatisch starten
Eine kleine Verbesserung des Projekts besteht darin, das Skript „lightstrip.py“ beim Booten automatisch zu starten, damit Sie es nicht jedes Mal manuell starten müssen, wenn Sie den Raspberry PI einschalten oder etwas schief geht und Sie zurücksetzen müssen. Folgen Sie dieser Anleitung.
Animationen hinzufügen und optimieren
Die Cskill Light Strip hat bereits 20 Animationsvariationen definiert. Mit der ALA-Bibliothek können Sie jedoch ganz einfach Ihre eigenen Animationen einrichten, indem Sie die Animationsvoreinstellung, die Farbpalette und die Geschwindigkeit auswählen. Sie können Ihre eigenen Animationen hinzufügen oder vorhandene im Skript ala_controller.py optimieren. In Zeile 80 sehen Sie eine Liste mit Animationseinstellungen, die Sie je nach Geschmack ändern oder verbessern können.
Code
Lichtstreifen
Der gesamte Code, den Sie für dieses Projekt benötigenhttps://github.com/bportaluri/LightStripSchaltpläne
Herstellungsprozess
- LCD-Panel mit Arduino für Flugsimulator
- Schalter/LED-Panel mit Arduino für FS2020
- Arduino mit Bluetooth zur Steuerung einer LED!
- Smarte Schuhe (automatische Schnürung und Stromerzeugung)
- Arduino-Vierbeiner
- Steuerung des Servomotors mit Arduino und MPU6050
- Steuerung der LED-Helligkeit mit Bolt und Arduino
- u-blox LEA-6H 02 GPS-Modul mit Arduino und Python
- Einfacher und intelligenter Roboterarm mit Arduino
- Spracherkennung und -synthese mit Arduino