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

Alexa gestuurde LED's via Arduino Yún

Componenten en benodigdheden

Arduino Yun
× 1
Amazon Alexa Amazon Echo
× 1
LED (generiek)
× 1
Micro SD-kaart
× 1

Apps en online services

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

Over dit project

Motivatie

Sinds ik een slimme spiegel heb gebouwd met Alexa aan boord, ben ik op zoek naar meer manieren om verschillende hardware- en domotica-apparaten door ons hele huis te verbinden. Toen ik hoorde dat je met de nieuwe Alexa Smart Home API je eigen apparaten rechtstreeks kunt bedienen, besloot ik het eens te proberen.

Deze Echo-gestuurde kerstboom gebruikt een oudere versie van de API, maar diende als een geweldig startpunt en wees me op de op IoT gerichte Arduino Yún. Hiermee heb je een Linux-systeem en een microcontroller in één handig pakket.

De taak die ik mezelf stelde was het 'hallo woord'-equivalent van slimme thuisvaardigheden... Zet gewoon een LED aan en uit met mijn stem. Omdat ik een 2x3 LED-array had liggen, besloot ik die aan en uit te zetten voor stijlpunten.

Alle details zijn hieronder te vinden, maar dit is hoe het is geworden!

Projectoverzicht

Dit project is bedoeld om een ​​Arduino Yún-bord aan te sluiten op een Alexa Smart Home v3-vaardigheid. Dit wordt gedaan met behulp van een Alexa Smart Home Skill (v3), een AWS Lambda-functie, een AWS IoT Thing en een Arduino Yún die is geabonneerd op het IoT Thing.

In het onderstaande diagram kunt u alle belangrijke onderdelen van dit project zien die betrokken zijn bij het aanzetten van het licht.

Ik zou aanraden om het stuk voor stuk te nemen en te testen terwijl je gaat. Niets in het project is erg uitdagend, maar er zijn veel onderling verbonden stukken. Wees dus niet ontmoedigd als je een beetje aan je hoofd krabt terwijl je hiermee bezig bent.

Ik zou elke stap zien als een miniproject, dat elk mogelijk meer dan 1 uur in beslag neemt.

Stap 1:Creëer een Smart Home-vaardigheid en verbonden Lambda.

Hier maak je een Smart Home Skill aan, creëer je een Lambda functie, en koppel je deze twee aan elkaar. Dit proces wordt zeer goed behandeld in deze zelfstudie. Zorg ervoor dat u de LWA-stappen volgt om uw client-ID en clientgeheim te gebruiken in de vaardigheidsconfiguratie.

Als u in dit stadium kunt inloggen op het Alexa-dashboard en uw nieuwe smart home-apparaat kunt ontdekken (op dit moment alleen een reactie op de Lambda-functie), bent u goed op weg.

Merk op dat die tutorial Python 3.6 gebruikt, maar ik heb in plaats daarvan Python2.7 gebruikt. U kunt de handle_discovery . kopiëren deel van mijn lambda-functie, maar dat is alles wat op dit moment zal werken.

Stap 2:maak een IoT-ding.

Ontdekken heeft niet veel zin als je niets kunt doen, dus laten we het iets geven om verbinding mee te maken door een AWS IoT-ding te maken.

Dit kan door de stappen op deze pagina te volgen. We zullen de "Thing Shadow" gebruiken van wat je creëert, wat een kopie is van de staat van een ding, samen met de gewenste veranderingen. De Arduino zal zich abonneren op een meldingsfeed die de wijzigingen ("delta") in deze Thing Shadow publiceert. Bekijk deze link hier voor meer info over de Thing Shadows.

Nadat u uw Thing hebt gemaakt, navigeert u naar het tabblad Beveiliging in het Thing IoT-webdashboard en downloadt u de openbare sleutel, de persoonlijke sleutel en het certificaat. Zodra dit is gebeurd, klikt u op "Activeren", waardoor u de sleutel van de rootcertificeringsinstantie krijgt. Bewaar deze ook. Deze worden door uw Arduino gebruikt om zich te authenticeren bij de IoT-schaduw.

Navigeer naar het tabblad Schaduw van je ding en klik op bewerken. Voeg een eigenschap toe aan uw schaduw zodat deze er als volgt uitziet:

{ "gerapporteerd":{ "light":"aan" } }  

Stap 3:verbind je Lambda met je ding.

Met je ding op zijn plaats, kun je nu je Lambda-code bijwerken om de schaduw van het ding bij te werken. Nu kunt u de volledige code van mijn lambda-functie kopiëren, maar zorg ervoor dat u alle Discovery-gerelateerde wijzigingen die u hebt aangebracht, behoudt.

U moet er ook voor zorgen dat uw AWS IAM-rol die is gekoppeld aan de Lambda-functie "AWSIoTFullAccess"-machtigingen heeft. Je kunt je rol onderaan het Lambda-configuratie-webdashboard zien. Met deze toestemming kunt u verbinding maken met het AWS IoT Thing.

Zodra dit is gebeurd, navigeert u naar de configuratiepagina van de Lambda-functie. Voeg onder het testtabblad van uw functie een richtlijn toe met de naam "TurnOff" met de volgende v3-specifieke JSON. U kunt ook een tweede test met de naam "TurnOn" toevoegen, waarbij u de koptekst gewoon wijzigt in "TurnOn".

{ "directive":{ "header":{ "namespace":"Alexa.PowerController", "name":"TurnOff", "payloadVersion":"3", "messageId":"1bd5d003- 31b9-476f-ad03-71d471922820", "correlationToken":"1234" }, "endpoint":{ "scope":{ "type":"BearerToken", "token":"some-access-token" }, " endpointId":"appliance-001", "cookie":{} }, "payload":{} } }  

Wanneer u de TurnOn- en TurnOff-tests uitvoert, zou u het Thing Shadow-rapport een gewenste status moeten zien die consistent is met de actie. Als je dit resultaat ziet, is alles in orde.

Stap 4:Stel je Arduino Yún in.

Tijd om de Arduino Yún-hardware in te stellen. Ik vond deze gids nuttiger dan de Arduino-gids. Een paar opmerkingen - als u een Windows-gebruiker bent, zorg er dan voor dat u FAT32 gebruikt bij het formatteren van de SD (exFAT wordt niet ondersteund). Ik kon de "upgrade"-pagina ook niet goed zien totdat ik verbonden was met ethernet. Eenmaal geconfigureerd, werkte wifi prima.

Je hebt deze stap voltooid wanneer je deze optie hebt gezien en de stappen hebt gevolgd:

Je zou ook met succes in je Arduino moeten kunnen ssh'en. Ik raad aan om ook "df -h" uit te voeren en te zoeken naar een volume dat suggereert dat je SD-kaart is toegevoegd.

Het openen van de Arduino IDE en controleren of u het Blink-voorbeeld kunt uitvoeren, zou in dit stadium ook goed zijn.

Stap 6:Verbind uw Yún met AWS IoT.

Nu de Arduino in gebruik is, laten we hem praten met het IoT-ding. Dit wordt gedaan door de AWS Arduino IoT SDK te installeren en een voorbeeldschets uit te voeren om Thing Shadow-delta's te bewaken.

Ik raad aan om met deze tutorial te beginnen, die je uitstekend door het SDK-installatieproces leidt. Opmerking voor Windows-gebruikers, als je cygwin gebruikt, volg dan gewoon de Mac/Linux-instructies (ik had geen problemen met de "verwachte" afhankelijkheid). Vooral het uitvoeren van het follow-script vanaf uw hostsysteem maakt het leven veel gemakkelijker:

./AWSIoTArduinoYunInstallAll.sh

Die tutorial eindigt met het toevoegen van de AWS-IoT-SDK aan de Arduino IDE. Wanneer u nu de Arduino IDE opent, zou u het ShadowThing-voorbeeld moeten vinden onder Bestand->Voorbeelden->AWS-IoT-Arduino-Yun-Bibliotheek.

Open deze schets en bewerk de aws_iot_config.h bestand om uw relevante eindpunten en certificaat-/sleutelnamen te bevatten.

Als u deze schets uitvoert, ziet u een seriële uitvoer die aangeeft dat de verbindingsstatus succesvol was. Als je de schaduw van je ding verandert in het IoT-dashboard, zou je een melding moeten krijgen in de seriële logger.

Als u in dit stadium problemen ondervindt, zorg er dan voor dat uw certificaten in de juiste paden staan ​​en controleer of u de Root-CA-tekst correct naar een bestand hebt gekopieerd.

Stap 7:Verbind uw Yún met AWS IoT.

Nu hoeft u alleen nog maar de wijzigingen aan uw Thing Shadow op de Arduino af te handelen. Je zou in staat moeten zijn om eenvoudig de inhoud van mijn schets te kopiëren.

Mijn schets is eigenlijk gewoon het schetsvoorbeeld van ThingShadow, behalve dat het specifiek zoekt naar wijzigingen in de sleutel "licht". Wanneer deze worden ontvangen, worden alle pinnen in ledArray ingesteld op HOOG of LAAG, afhankelijk van of het licht "aan" of "uit" was.

Deze ledArray bevat de ingebouwde pin 13, dus als er geen extra LED's zijn aangesloten, ziet u de ingebouwde YUN-LED aan en uit gaan op basis van uw spraakopdrachten. Als je een mooiere LED-kubus wilt zoals ik gebruik, bekijk dan dit project dat je zal vertellen hoe je het moet aansluiten. Voeg dan gewoon de positieve pinnummers toe aan de ledArray in mijn schets.

Je weet dat je deze stap hebt voltooid wanneer je je Alexa-apparaat kunt vragen om je aangepaste slimme ding in en uit te schakelen.

Als dit niet werkt zoals verwacht, raad ik aan om het te proberen met uw Lambda TestOn- en TestOff-functies in het webdashboard. Zo krijgt u meer informatie over wat er mis kan gaan.

Plaats opmerkingen met eventuele problemen die u tegenkomt en die niet worden behandeld en ik zal ze zo snel mogelijk oplossen!

Stap 9:Vier het!

Als je zo ver bent gekomen, goed gedaan! Arduino's kunnen zo ongeveer alles doen wat je wilt, en nu weet je hoe je dat kunt starten met een eenvoudige spraakopdracht via Alexa. Vier je prestatie door het licht vaak aan en uit te doen. De IoT-wereld is jouw oester!

Code

Lambda- en Arduino-code voor project
.ino- en .h-bestanden worden gebruikt voor Arduino Sketch en lambda_function wordt gebruikt in AWS Lambda Cloud

Productieproces

  1. Amazon Alexa Een Chromecast bedienen
  2. Raspberry Pi-robot bestuurd via Bluetooth
  3. MajorTom:Alexa Voice Controlled ARDrone 2.0
  4. Gebaargestuurde interactieve tafellamp
  5. Arduino + LED's + MIDI Keyboard + MuseScore =Piano Tutor
  6. Alexa gestuurde LED's via Raspberry Pi
  7. Met joystick bestuurde RC-auto
  8. Nunchuk-gestuurde robotarm (met Arduino)
  9. Spraakgestuurde robot
  10. Robotarm bestuurd via Ethernet
  11. Arduino-gestuurde pianorobot:PiBot