Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

LED contrôlées par Alexa via Arduino Yún

Composants et fournitures

Arduino Yun
× 1
Amazon Alexa Amazon Echo
× 1
LED (générique)
× 1
Carte Micro SD
× 1

Applications et services en ligne

Amazon Web Services AWS IoT
Amazon Web Services AWS Lambda
Kit de compétences Amazon Alexa Alexa

À propos de ce projet

Motivation

Depuis que j'ai construit un miroir intelligent avec Alexa à bord, je cherche d'autres moyens de connecter divers matériels et appareils domotiques dans toute la maison. Lorsque j'ai entendu que la nouvelle API Alexa Smart Home vous permettait de contrôler directement des appareils personnalisés, j'ai décidé de l'essayer.

Cet arbre de Noël contrôlé par Echo utilise une version plus ancienne de l'API, mais a été un excellent point de départ et m'a orienté vers l'Arduino Yún ciblé par l'IoT. Cela vous donne un système Linux et un microcontrôleur dans un seul package pratique.

La tâche que je me suis fixée était l'équivalent "bonjour" des compétences en matière de maison intelligente... Il suffit d'allumer et d'éteindre une LED à l'aide de ma voix. Comme j'avais un réseau de LED 2x3 qui traînait, j'ai décidé de l'activer et de le désactiver pour des points de style.

Vous trouverez tous les détails ci-dessous, mais voici comment cela s'est passé !

Présentation du projet

Ce projet vise à connecter une carte Arduino Yún à une compétence Alexa Smart Home v3. Cela se fait à l'aide d'une compétence Alexa Smart Home (v3), d'une fonction AWS Lambda, d'un objet AWS IoT et d'un Arduino Yún qui est abonné à l'objet IoT.

Dans le diagramme ci-dessous, vous pouvez voir toutes les pièces principales de ce projet impliquées dans l'allumage de la lumière.

Je recommanderais de le prendre une pièce à la fois et de tester pendant que vous y allez. Rien dans le projet n'est très difficile, mais il y a beaucoup de pièces interconnectées. Alors ne vous découragez pas si vous vous grattez un peu la tête pendant que vous travaillez à ce sujet.

Je considérerais chaque étape comme un mini-projet, prenant potentiellement plus d'une heure chacune.

Étape 1 : créez une compétence pour la maison intelligente et un lambda connecté.

Ici, vous créez une compétence Smart Home, créez une fonction Lambda et reliez ces deux ensemble. Ce processus est très bien couvert dans ce tutoriel. Assurez-vous de suivre les étapes LWA pour obtenir votre identifiant client et votre secret client utilisés dans la configuration des compétences.

À ce stade, si vous parvenez à vous connecter au tableau de bord Alexa et à découvrir votre nouvel appareil domestique intelligent (à ce stade, juste une réponse de la fonction Lambda), vous êtes parti du bon pied.

Notez que ce tutoriel utilise Python 3.6, mais j'ai utilisé Python2.7 à la place. Vous pouvez copier le handle_discovery partie de ma fonction lambda, mais c'est tout ce qui fonctionnera à ce stade.

Étape 2 :Créez un objet IoT.

La découverte n'est pas très utile si vous ne pouvez rien faire, alors donnons-lui quelque chose à laquelle se connecter en créant un AWS IoT Thing.

Cela peut être fait en suivant les étapes de cette page. Nous utiliserons la "Thing Shadow" de ce que vous créez, qui est une copie de l'état d'une chose, ainsi que les modifications souhaitées. L'Arduino s'abonnera à un flux de notification qui publie les modifications ("delta") apportées à ce Thing Shadow. Consultez ce lien ici pour plus d'informations sur Thing Shadows.

Une fois que vous avez créé votre Thing, accédez à l'onglet Sécurité dans le tableau de bord Web Thing IoT et téléchargez la clé publique, la clé privée et le certificat. Une fois cela fait, cliquez sur "Activer" qui vous donnera la clé de l'autorité de certification racine. Enregistrez-le également. Ceux-ci seront utilisés par votre Arduino pour s'authentifier auprès de l'ombre IoT.

Accédez à l'onglet Ombre de votre objet et cliquez sur modifier. Ajoutez une propriété à votre ombre pour qu'elle ressemble à :

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

Étape 3 :Connectez votre Lambda à votre Chose.

Avec votre chose en place, vous pouvez maintenant mettre à jour votre code Lambda pour mettre à jour l'ombre de la chose. Vous pouvez maintenant copier le code complet à partir de ma fonction lambda, mais assurez-vous de conserver toutes les modifications que vous avez apportées à Discovery.

Vous devez également vous assurer que votre rôle AWS IAM associé à la fonction Lambda dispose des autorisations « AWSIoTFullAccess ». Vous pouvez voir votre rôle au bas du tableau de bord Web de la configuration Lambda. Cette autorisation vous permet de vous connecter à AWS IoT Thing.

Une fois cela fait, accédez à la page de configuration de la fonction Lambda. Sous l'onglet test de votre fonction, ajoutez une directive appelée "TurnOff" avec le JSON spécifique à la v3 suivant. Vous pouvez également ajouter un deuxième test appelé "TurnOn" où vous changez simplement le nom de l'en-tête en "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":{} } }  

Lorsque vous exécutez les tests TurnOn et TurnOff, vous devriez voir le rapport Thing Shadow indiquant un état souhaité cohérent avec l'action. Si vous voyez ce résultat, tout va bien.

Étape 4 :Configurez votre Arduino Yún.

Il est temps de configurer le matériel Arduino Yún. J'ai trouvé ce guide plus utile que le guide Arduino. Quelques notes - si vous êtes un utilisateur de Windows, lors du formatage de la SD, assurez-vous d'utiliser FAT32 (exFAT n'est pas pris en charge). Je n'ai pas non plus pu voir correctement la page "Mise à niveau" jusqu'à ce que je sois connecté à Ethernet. Une fois configuré, le wifi fonctionnait très bien.

Vous avez terminé cette étape lorsque vous avez vu cette option et suivi les étapes :

Vous devriez également être capable de ssh avec succès dans votre Arduino. Je recommanderais également d'exécuter "df -h" et de rechercher un volume suggérant que votre carte SD a été ajoutée.

Ouvrir l'IDE Arduino et vérifier que vous pouvez exécuter l'exemple Blink serait également une bonne chose à ce stade.

Étape 6 :Connectez votre Yún à AWS IoT.

Avec l'Arduino opérationnel, parlons-en à l'IoT Thing. Cela se fait en installant le kit SDK AWS Arduino IoT et en exécutant un exemple d'esquisse pour surveiller les deltas Thing Shadow.

Je recommande de commencer par ce didacticiel qui fait un excellent travail en vous guidant tout au long du processus d'installation du SDK. Remarque aux utilisateurs de Windows, si vous utilisez cygwin, suivez simplement les instructions Mac/Linux (je n'ai eu aucun problème avec la dépendance "expect"). En particulier, l'exécution du script suivant depuis votre système hôte vous simplifie grandement la vie :

./AWSIoTArduinoYunInstallAll.sh

Ce didacticiel se termine par l'ajout d'AWS-IoT-SDK à l'IDE Arduino. Maintenant, lorsque vous ouvrez l'IDE Arduino, vous devriez trouver l'exemple ShadowThing sous Fichier-> Exemples-> AWS-IoT-Arduino-Yun-Library.

Ouvrez cette esquisse et modifiez le aws_iot_config.h fichier pour contenir vos points de terminaison pertinents et les noms de certificat/clé.

L'exécution de cette esquisse devrait vous montrer une sortie série indiquant que l'état de la connexion a réussi. Si vous modifiez votre ombre d'objet dans le tableau de bord IoT, vous devriez recevoir une notification dans l'enregistreur série.

Si vous rencontrez des problèmes à ce stade, assurez-vous que vos certificats sont dans les bons chemins et vérifiez que vous avez correctement copié le texte Root-CA dans un fichier.

Étape 7 :Connectez votre Yún à AWS IoT.

Maintenant, il ne reste plus qu'à gérer les modifications apportées à votre Thing Shadow sur l'Arduino. Vous devriez pouvoir copier simplement le contenu de mon croquis.

Mon croquis n'est fondamentalement que l'exemple de croquis de ThingShadow, sauf qu'il recherche spécifiquement les modifications apportées à la clé "lumière". Lorsque ceux-ci sont reçus, il définit toutes les broches de ledArray sur HIGH ou LOW selon que la lumière était "allumée" ou "éteinte".

Ce ledArray comprend la broche 13 intégrée, donc sans LED supplémentaires branchées, vous verrez la LED YUN intégrée s'allumer et s'éteindre en fonction de vos commandes vocales. Si vous voulez un cube LED plus sophistiqué comme celui que j'utilise, consultez ce projet qui vous dira comment le câbler. Ensuite, ajoutez simplement les numéros de broche positifs au ledArray dans mon croquis.

Vous saurez que vous avez terminé cette étape lorsque vous pourrez demander à votre appareil Alexa d'allumer et d'éteindre votre objet intelligent personnalisé.

Si cela ne fonctionne pas comme prévu, je vous suggère d'essayer avec vos fonctions Lambda TestOn et TestOff dans le tableau de bord Web. Cela vous donne plus d'informations sur ce qui ne va pas.

Postez des commentaires avec tous les problèmes que vous rencontrez qui ne sont pas couverts et je les réglerai aussi vite que possible !

Étape 9 :Célébrez !

Si vous êtes arrivé jusqu'ici, bravo ! Les Arduinos peuvent faire à peu près tout ce que vous voulez, et maintenant vous savez comment lancer cela avec une simple commande vocale via Alexa. Célébrez votre accomplissement en allumant et éteignant la lumière plusieurs fois. Le monde de l'IoT est votre huître !

Code

Code Lambda et Arduino pour le projet
Les fichiers .ino et .h sont utilisés pour Arduino Sketch, et lambda_function est utilisé dans AWS Lambda Cloud

Processus de fabrication

  1. Amazon Alexa Contrôle d'un Chromecast
  2. Robot Raspberry Pi contrôlé par Bluetooth
  3. MajorTom :Alexa Voice Controlled ARDrone 2.0
  4. Lumière de table interactive à commande gestuelle
  5. Arduino + LED + Clavier MIDI + MuseScore =Tuteur de piano
  6. LED contrôlées par Alexa via Raspberry Pi
  7. Voiture RC contrôlée par joystick
  8. Bras robotique contrôlé par Nunchuk (avec Arduino)
  9. Robot à commande vocale