Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Geanimeerde Smart Light met Alexa en Arduino

Componenten en benodigdheden

Arduino UNO
Arduino Nano kan ook worden gebruikt. Arduino Mega kan handig zijn om meer LED-pixels aan te sturen.
× 1
Raspberry Pi 3 Model B
× 1
NeoPixel-strip
Elke WS8212 LED-strip kan worden gebruikt.
× 1

Apps en online services

Arduino IDE
Amazon Web Services AWS Lambda
Amazon Alexa Alexa Skills Kit
Amazon Web Services AWS IoT

Over dit project

Waarom lichtstrip

Ik was altijd al gefascineerd door adresseerbare RGB LED-strips. De eindeloze kleureffecten en animatiemogelijkheden hebben altijd mijn creativiteit gevangen, dus een paar jaar geleden heb ik besloten om een ​​bibliotheek te ontwikkelen voor de Arduino-boards genaamd ALA (Arduino Light Animations). Alexa geeft me nu de mogelijkheid om kamerverlichting en effecten te regelen met mijn stem en dat is cool!

Projectoverzicht

Er zijn de componenten die nodig zijn voor dit project.

  • Amazon Alexa: Een aangepaste Alexa-vaardigheid (Light Strip) definieert het spraakinteractiemodel en vertaalt opdrachten (intenties) die worden gegeven aan de Lambda-functie.
  • Amazon Lambda :Een Python-script dat berichten van Alexa ontvangt en updates naar de IoT-service stuurt.
  • Amazon IoT :De IoT-service slaat een 'thing shadow' op die een weergave is van de staat van de RGB-strip. Elke keer dat de schaduw wordt bijgewerkt, worden de aangemelde MQTT-clients (Raspberry PI) op de hoogte gebracht.
  • Raspberry PI :Deze kleine pc draait een MQTT-client om berichten van de Amazon IoT-service te ontvangen. Aan de andere kant voedt het en stuurt het opdrachten naar het Arduino-bord via de USB-poort.
  • Arduino :Deze mooie microcontroller zal de ALA-bibliotheek uitvoeren om de LED-strip aan te sturen die de opdrachten van de Raspberry PI ontvangt via de USB-seriële poort. Je kunt Arduino Uno, Nano of Mega board gebruiken.
  • WS8212 RGB ledstrip :Dit zijn adresseerbare ledstrips zodat elke led afzonderlijk kan worden aangestuurd. Dit maakt prachtige en kleurrijke lichtanimaties mogelijk.

Niets in het project is erg uitdagend, maar er zijn veel onderling verbonden stukken. Ik raad u aan om de voorgestelde structuur te volgen om uw project op een solide basis te bouwen voordat u doorgaat naar de volgende stap. Om het zo eenvoudig mogelijk te maken heb ik het project opgesplitst in twee deelprojecten.

Het eerste deel van het project wordt beschreven in mijn webgestuurde LED-animaties met Raspberry Pi en Arduino Hackster.io-project en zal u door de stappen leiden die nodig zijn om de Raspberry PI, het Arduino-bord en de WS8212 LED-strip aan te sluiten. Aan het einde van deze fase ben je in staat om de LED-animaties te besturen vanaf een smartphone of een pc met behulp van de webbrowser.

Het tweede deel van het hier beschreven project zal spraakbesturing toevoegen aan de vorige implementatie met behulp van Amazon Alexa. Er zijn verschillende stappen die moeten worden uitgevoerd om de hele keten correct in te stellen, dus wees geduldig en volg de instructies zorgvuldig..

Amazon IoT

Heb je het hardware gedeelte afgerond? Het is nu tijd om naar de cloud te gaan! We zullen het AWS IoT-platform gebruiken om ons 'ding' vanaf internet te beheren.

We zullen een "Device Shadow" gebruiken, die een kopie is van de toestand van een ding, samen met de gewenste wijzigingen. De Raspberry PI zal zich abonneren op een meldingsfeed die de wijzigingen ("delta") in deze schaduw publiceert. Bekijk deze link voor meer informatie over het AWS IoT-platform en API's.

Maak een IoT-ding

Log in op de AWS-console. Als je dit nog niet hebt gedaan, moet je een gratis account maken.

Zorg ervoor dat u bent aangemeld bij US East (N. Virginia) of EU (Ierland) zone in de rechterbovenhoek.

Zoek naar 'IoT' en selecteer de AWS IoT dienst. Klik op Aan de slag knop (indien aanwezig) om de introductie-tutorial te sluiten.

We moeten eerst een beveiligingsbeleid maken voor ons "ding". Ga naar Beveiligd> Beleid menu en klik vervolgens op Een beleid maken en voer de volgende informatie in:

  • Naam:LightStripPolicy
  • Actie:*
  • Bron:*
  • Effect - Toestaan:aangevinkt
  • Klik op 'Maken'

Nu kunnen we het IoT creëren Ding .

  • Selecteer Beheren > Dingen menu en maak een nieuw AWS IoT-ding door te klikken op Een ding registreren knop (of Maken knop in de rechterbovenhoek) en vervolgens op Creëer één ding .
  • Typ 'LS01' in het veld Naam. Laat de standaardwaarden staan ​​voor andere velden en klik op Volgende .
  • Klik op Certificaat maken knop in de Certificaat maken met één klik sectie.
  • Download de 3 certificaten voor uw apparaat en de root-CA. Voor de root-CA moet u mogelijk met de rechtermuisknop klikken en deze vervolgens opslaan.
  • Nadat u de certificaten heeft gedownload, klikt u op Activeren knop.
  • Klik op Beleid bijvoegen en selecteer de LightStripPolicy die je eerder hebt gemaakt en klik vervolgens op Register Thing .

Voordat u verder gaat, moet u het AWS IoT-eindpunt noteren. Klik op de Instellingen menu in de linkerbenedenhoek van de AWS IoT-webpagina, open deze en noteer Endpoint.

Configureer Raspberry PI om naar het 'Thing' te luisteren

We moeten eerst de AWS IoT Device SDK voor Python . installeren met de volgende opdracht op de Raspberry PI-opdrachtregel:

sudo pip3 installeer AWSIoTPythonSDK 

Download nu de LightStrip-repository van GitHub en pak het uit.

mkdircd /home/pi/LightStripwget https://github.com/bportaluri/LightStrip/archive/master.zipunzip master.zip 

Kopieer de vier certificaten die u hebt gedownload toen u het IoT-ding maakte in de /home/pi/LightStrip/LightStrip-master/pi map.

Bewerk de lightstripcfg.py script. U kunt elke teksteditor gebruiken. Hier zijn de commando's voor de nano redacteur.

cd /home/pi/LightStrip/LightStrip-master/pinano lightstripcfg.py 

Bewerk nu de instellingen zodat ze overeenkomen met uw configuratie.

  • AWSIOT:voer het AWS IoT-eindpunt in dat u eerder hebt genoteerd.
  • ROOT_CA:bestandsnaam van het root-CA-certificaat
  • CERTIFICATE:bestandsnaam van het certificaat
  • PRIVATE_KEY:bestandsnaam van de privésleutel
  • DEVICE_NAME:laat het ongewijzigd in "LS01"

Sluit nano-editor en sla het bestand op door op 'Ctrl+X' en vervolgens op 'Y' te drukken.

Start het lightstrip.py-script als volgt.

sudo python3 lightstrip.py 

Het script toont de aangesloten USB-poorten. De Arduino moet verbonden zijn met /dev/ttyACM0, dus voer het script uit dat de poort op deze manier doorgeeft.

sudo python3 lightstrip.py /dev/ttyACM0 

De testclient zal verbinding maken met de Amazon Thing Shadow-service en zich abonneren op wijzigingen van de LS01 schaduw apparaat. Na een succesvolle verbinding zal het clientscript zijn status bijwerken naar de LS01-apparaatschaduw en een bevestigingsbericht zoals dit ontvangen.

Om te controleren of alles correct werkt, gaat u terug naar de AWS IoT-console en selecteert u Manage> Things menu en open vervolgens de LS01 apparaat. Selecteer de Schaduw menu en u ziet de schaduwstatus van het apparaat.

Klik op de Bewerken link in de sectie Schaduwdocument en plak het volgende JSON-document in het vak Schaduwstatus.

{ "gewenste":{ "animatie":"101" }} 

Dit is wat je zou moeten zien.

Wanneer u op de link Opslaan klikt, wordt een 'delta'-bericht verzonden naar de MQTT-client op de Raspberry PI die de ledstrip zal inschakelen.

Het volgende JSON-document verandert de kleur in blauw.

{ "gewenst":{ "kleur":"0066CC" }} 

Op dit moment kunnen we onze LED-strip bedienen vanuit de ASW IoT-service, dus u mag trots op u zijn.

AWS Lambda-functie

Met AWS Lambda kan code in de cloud worden uitgevoerd zonder servers in te richten of te beheren. Het is de perfecte brug tussen de Alexa Skills Kit die de spraakbesturing in de laatste stap van dit project mogelijk zal maken.

Log in op de AWS-console. Selecteer in de lijst met services Lambda .

Zorg ervoor dat u bent ingelogd in dezelfde regio die u in de vorige stap hebt gebruikt:US East (N. Virginia) of EU (Ierland) zone in de rechterbovenhoek.

Klik op Functie maken knop. Klik op Auteur from scratch en configureer als volgt:

  • Naam =LightStrip
  • Runtime =Python 3.6
  • Rol =Maak een aangepaste rol aan. Hiermee wordt een nieuw tabblad geopend. Klik gewoon op de knop "Toestaan" om een ​​nieuwe rol met de naam lambda_basic_execution te maken.
  • Bestaande rol:lambda_basic_execution
  • Klik op Functie maken knop

Let op de Lambda ARN ID in de rechterbovenhoek.

Klik op LightStrip om de functiecodesectie te openen.

Type code-invoer:code inline bewerken

  • Runtime:Python 3.6
  • Handler:lambda_function.lambda_handler

De lambda_function.py script zou al gedefinieerd moeten zijn. Plak de code uit LightStrip\lambda\lambda_function.py bestand in de code-editor.

Maak een ander bestand met de naam ala_controller.py en plak de code van LightStrip\lambda\ala_controller.py bestand in de code-editor.

Zo zou het er allemaal uit moeten zien.

Als u klaar bent, klikt u op de oranje Opslaan knop in de rechterbovenhoek.

Alexa-vaardigheid

We kunnen nu de aangepaste Light Strip-vaardigheid voor Alexa maken.

Ga naar de Amazon Developer Console en meld u indien nodig aan. Mogelijk moet u eerst uw account registreren.

Ga naar Alexa> Alexa Skills Kit (Aan de slag) .

Klik op Een nieuwe vaardigheid toevoegen knop in de rechterbovenhoek en voer de volgende gegevens in bij Vaardigheidsinformatie tabblad:

  • Vaardigheidstype:aangepast interactiemodel
  • Taal:Engels (VS)
  • Naam:LightStrip
  • Naam aanroep:lichtstrip
  • Klik op Opslaan

Dit creëert de vaardigheid. Noteer de vaardigheids-ID.

Selecteer het Interactiemodel menu en klik vervolgens op Launch Skill Builder knop.

Klik op de Code-editor en plak de inhoud van LightStrip/alexaskill/lightstrip_skill.json bestand in het tekstvak.

Klik op Model opslaan en Model bouwen toetsen. Het duurt enkele minuten om het model te bouwen, dus wees geduldig. Klik op Vaardigheidsinformatie om terug te gaan naar de vaardigheidsconfiguratiepagina.

Klik nu op de Configuratie menu.

Selecteer in het Service Endpoint Type AWS Lambda ARN en plak dan de Lambda-functie ARN die je hierboven hebt genoteerd.

Laat alle standaardwaarden staan ​​en klik op Opslaan knop hieronder.

Verbind Alexa-vaardigheid met de Lambda-functie

Ga terug naar je Lambda-functie. Aan de rechterkant is er een lijst met vooraf gedefinieerde triggers. Selecteer Alexa Skills Kit en het wordt toegevoegd aan uw functie.

Configureer als volgt:

  • Applicatie-ID =de vaardigheids-ID die u hierboven heeft genoteerd
  • Klik op Toevoegen
  • Klik op Opslaan

Je bent klaar

Het project is nu voltooid. Probeer de volgende spraakopdrachten:

  • Open lichtstrip
  • Inschakelen
  • Helderheid instellen op 20 procent
  • Helderheid instellen op 50 procent
  • Kleur instellen op rood
  • Kleur instellen op turkoois
  • Uitschakelen
  • Voer een spannende animatie uit
  • Voer een ontspannende animatie uit

De LightStrip-vaardigheid maakt ook meer geavanceerde spraakinteracties mogelijk

  • Ik:Alexa, open Light Strip
  • Alexa:Welkom bij LightStrip - De LED-strip zal gloeien met een blauw licht
  • Ik:start een animatie
  • Alexa:Wil je een ontspannende of spannende animatie?
  • Ik:ontspannend
  • Alexa:OK - De ledstrip toont een willekeurige animatie
  • Ik:volgende animatie
  • Alexa:OK - Er wordt nog een willekeurige animatie weergegeven

Om het interactiemodel beter te begrijpen, vindt u hier het volledige VUI-diagram van de vaardigheid.

Verbeteringen en verfijningen

Start automatisch de AlaWeb bij het opstarten

Een kleine verbetering van het project is om het lightstrip.py-script automatisch te starten bij het opstarten, zodat je het niet elke keer handmatig hoeft te starten als je de Raspberry PI aanzet of als er iets misgaat en je moet resetten. Volg deze instructies.

Animaties toevoegen en aanpassen

De Light Strip cskill heeft al 20 animatievariaties gedefinieerd. Met de ALA-bibliotheek kunt u echter eenvoudig uw eigen animaties instellen door de animatie-preset, het kleurenpalet en de snelheid te kiezen. Je kunt je eigen animaties toevoegen of bestaande animaties aanpassen in het ala_controller.py-script. Rond regel 80 ziet u een lijst met animatie-instellingen die u kunt aanpassen of verbeteren op basis van uw smaak.

Code

LightStrip
Alle code die je nodig hebt voor dit projecthttps://github.com/bportaluri/LightStrip

Schema's


Productieproces

  1. LCD-paneel met Arduino voor Flight Simulator
  2. Schakel/LED-paneel met Arduino voor FS2020
  3. Arduino met Bluetooth om een ​​LED te bedienen!
  4. Slimme schoenen (automatisch rijgen en elektriciteit opwekken)
  5. Arduino Quadruped
  6. Besturing van servomotor met Arduino en MPU6050
  7. LED-helderheid regelen met Bolt en Arduino
  8. u-blox LEA-6H 02 GPS-module met Arduino en Python
  9. Eenvoudige en slimme robotarm met Arduino
  10. Spraakherkenning en synthese met Arduino
  11. Een LED-matrix besturen met Arduino Uno