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

LED-verlichting Besturen met Alexa via Arduino Yun – Slimme Thuis Tutorial

Onderdelen en benodigdheden

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

Apps en online diensten

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

Over dit project

Motivatie

Sinds ik een slimme spiegel met Alexa bouwde, zoek ik meer manieren om hardware en huisautomatisering in ons huis te koppelen. Toen ik hoorde dat de nieuwe Alexa Smart Home API het mogelijk maakt om aangepaste apparaten direct te besturen, besloot ik het te proberen.

Deze Echo-gestuurde kerstboom gebruikt een oudere versie van de API, maar was een uitstekende start en wees me naar de IoT-gerichte Arduino Yún. Deze biedt een Linux-systeem en een microcontroller in één handig pakket.

Mijn doel was het "hello world"-equivalent van smart home skills: gewoon een LED aan en uit zetten met mijn stem. Omdat ik een 2x3 LED-array liggen had, besloot ik die te gebruiken voor extra stijl.

Projectoverzicht

Dit project koppelt een Arduino Yún aan een Alexa Smart Home v3-skill. Dit gebeurt via een Alexa Smart Home Skill (v3), een AWS Lambda-functie, een AWS IoT Thing en een Arduino Yún die geabonneerd is op de IoT Thing.

In het diagram zie je alle onderdelen die betrokken zijn bij het aanzetten van het licht.

Ik raad aan om het stap voor stap aan te pakken en tussendoor te testen. Niets is heel moeilijk, maar er zijn veel onderdelen die met elkaar verbonden zijn. Laat je niet ontmoedigen als je even vastloopt.

Bekijk elke stap als een mini-project, dat mogelijk 1+ uur in beslag neemt.

Stap 1: Maak een Smart Home Skill en koppel een Lambda-functie

Maak een Smart Home Skill, een Lambda-functie en koppel deze. Dit proces wordt goed gedocumenteerd in deze tutorial. Volg de LWA-stappen om je client ID en client secret te krijgen voor de Skill-configuratie.

Als je in het Alexa-dashboard kunt inloggen en je nieuwe slimme apparaat kunt ontdekken (op dit moment alleen een Lambda-functie-respons), ben je goed op weg.

Let op: de tutorial gebruikt Python 3.6, maar ik gebruikte Python 2.7. Je kunt de handle_discovery-sectie uit mijn Lambda-functie kopiëren, maar dat is op dit moment alles wat werkt.

Stap 2: Maak een IoT Thing

Ontdekken is niet nuttig als je er niets mee kunt doen, dus laten we het iets geven om mee te verbinden door een AWS IoT Thing te maken.

Dit kan door de stappen op deze pagina te volgen. We zullen de "Thing Shadow" gebruiken, wat een kopie is van de staat van een thing, samen met de gewenste wijzigingen. De Arduino abonneert zich op een notificatiefeed die de wijzigingen ("delta") naar deze Thing Shadow publiceert. Bekijk deze link voor meer informatie over Thing Shadows.

Zodra je je Thing hebt gemaakt, ga je naar het beveiligingstabblad in de IoT-webdashboard en download je de publieke sleutel, privésleutel en certificaat. Klik daarna op "Activeren" wat je de Root Certificate Authority-sleutel geeft. Bewaar deze ook. Deze worden gebruikt door je Arduino om te authenticeren bij de IoT-shadow.

Ga naar het Shadow-tabblad van je thing, klik op bewerken en voeg een eigenschap toe zodat het eruitziet als:

{ "reported": { "light": "on" } }

Stap 3: Koppel je Lambda aan je Thing

Met je Thing op zijn plaats kun je je Lambda-code bijwerken om de thing-shadow te updaten. Nu kun je de volledige code uit mijn Lambda-functie kopiëren, maar zorg dat je eventuele Discovery-gerelateerde wijzigingen behoudt.

Zorg ook dat de AWS IAM-rol die gekoppeld is aan de Lambda-functie "AWSIoTFullAccess"-rechten heeft. Je kunt je rol zien onderaan de Lambda-configuratie-webdashboard. Deze machtiging stelt je in staat om verbinding te maken met de AWS IoT Thing.

Ga nu naar de Lambda-functie-configuratiepagina. Onder het test-tabblad van je functie, voeg een directive toe genaamd "TurnOff" met de volgende v3-specifieke JSON. Je kunt een tweede test "TurnOn" toevoegen waarbij je alleen de headernaam 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 je de TurnOn- en TurnOff-tests uitvoert, zou je in de Thing Shadow een gewenste staat moeten zien die consistent is met de actie. Als je dit resultaat ziet, is alles goed.

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 je Windows-gebruiker bent, formatteer de SD-kaart als FAT32 (exFAT wordt niet ondersteund). Ik kon de "upgrade"-pagina pas goed zien toen ik via ethernet was verbonden. Eenmaal geconfigureerd, werkte wifi prima.

Je hebt deze stap voltooid als je deze optie hebt gezien en de stappen hebt gevolgd.

Je zou ook in staat moeten zijn om succesvol via SSH in je Arduino te loggen. Ik raad aan om "df -h" uit te voeren en te kijken naar een volume dat suggereert dat je SD-kaart is toegevoegd.

Het openen van de Arduino IDE en verifiëren dat je het Blink-voorbeeld kunt draaien, is ook goed in deze fase.

Stap 5: Koppel je Yún aan AWS IoT

Met de Arduino draaiend, laten we het praten met de IoT Thing. Dit gebeurt door de AWS Arduino IoT SDK te installeren en een voorbeeldsketch te draaien om Thing Shadow-delta's te monitoren.

Ik raad aan om te beginnen met deze tutorial die een uitstekende job doet bij het begeleiden van het SDK-installatieproces. Let op Windows-gebruikers: als je cygwin gebruikt, volg dan de Mac/Linux-instructies (ik had geen problemen met de "expect"-afhankelijkheid). Het uitvoeren van het volgende script vanaf je hostsysteem maakt het leven veel makkelijker:

./AWSIoTArduinoYunInstallAll.sh <Board IP> <Gebruikersnaam> <Board Wachtwoord>

Die tutorial eindigt met het toevoegen van de AWS-IoT-SDK aan de Arduino IDE. Nu, als je de Arduino IDE opent, zou je het ShadowThing-voorbeeld moeten vinden onder Bestand → Voorbeelden → AWS-IoT-Arduino-Yun-Library.

Open deze sketch, en bewerk het aws_iot_config.h-bestand om je relevante eindpunten en certificaat-/sleutelnamen te bevatten.

Het uitvoeren van deze sketch zou een seriële output moeten tonen die aangeeft dat de verbindingsstatus succesvol was. Als je je thing-shadow in de IoT-dashboard wijzigt, zou je een notificatie in de seriële logger moeten krijgen.

Als je problemen hebt in deze fase, zorg dan dat je certificaten in de juiste paden staan, en verifieer dat je de Root-CA-tekst correct in een bestand hebt gekopieerd.

Stap 6: Verwerk wijzigingen in je Thing Shadow op de Arduino

Nu is het alleen nog kwestie van het daadwerkelijk verwerken van wijzigingen in je Thing Shadow op de Arduino. Je kunt gewoon de inhoud van mijn sketch kopiëren.

Mijn sketch is eigenlijk gewoon het ThingShadow-voorbeeld, behalve dat het specifiek kijkt naar wijzigingen in de sleutel "light". Wanneer deze worden ontvangen, zet het alle pinnen in ledArray op HIGH of LOW, afhankelijk van of light "on" of "off" was.

Deze ledArray bevat de onboard pin 13, dus zelfs zonder extra aangesloten LEDs zie je de onboard YÚN-led aan en uit gaan op basis van je spraakcommando's. Als je een fancy LED-kubus wilt zoals ik, bekijk dit project dat vertelt hoe je het moet aansluiten. Voeg dan de positieve pinnummers toe aan de ledArray in mijn sketch.

Je weet dat je deze stap voltooid hebt als je je Alexa-apparaat kunt vragen om je aangepaste slimme ding aan en uit te zetten.

Als dit niet werkt zoals verwacht, raad ik aan om te testen met je Lambda TestOn- en TestOff-functies in de webdashboard. Dit geeft je meer informatie over wat er mis kan gaan.

Plaats reacties met eventuele problemen die niet behandeld zijn en ik zal ze zo snel mogelijk aanpakken!

Stap 7: Vier!

Als je hier bent gekomen, goed gedaan! Arduinos kunnen bijna alles wat je wilt, en nu weet je hoe je dat kunt starten met een simpel spraakcommando via Alexa. Vier je prestatie door het licht veel keren aan en uit te zetten. De IoT-wereld is jouw oester!

Code

Lambda- en Arduino-code voor project

.ino- en .h-bestanden worden gebruikt voor de Arduino-sketch, en lambda_function wordt gebruikt in AWS Lambda Cloud.

De volledige code is beschikbaar via de Gist-link.

Productieproces

  1. Je Chromecast Besturen met Amazon Alexa via Raspberry Pi en Python
  2. Bouw een Bluetooth-gecontroleerde Raspberry Pi Robot met Audio Feedback
  3. Alexa-gecontroleerde ARDrone 2.0 Demo: Stem-geactiveerde Drone met Raspberry Pi & Hologram Nova
  4. Gebarenbestuurde RGB-tafellamp – Interactief, Handvrij Verlichten
  5. Verander je MIDI-toetsenbord in een slimme pianotutor met Arduino, LEDs en MuseScore
  6. LED's bedienen met Alexa via Raspberry Pi – Eenvoudige stapsgewijze handleiding
  7. Een oude RC-auto ombouwen tot joystick-gestuurd voertuig met Arduino
  8. Arduino-gebaseerde 6-DoF Robotarm Gestoeerd met Wii Nunchuk
  9. Bouw een Stemgecontroleerde Robot met Arduino Nano
  10. Ethernet-gestuurde robotarm: Remote control gemaakt simpel
  11. PiBot: De Arduino-aangedreven pianorobot voor precisiemuziek