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

Lumière intelligente animée avec Alexa et Arduino

Composants et fournitures

Arduino UNO
Arduino Nano peut également être utilisé. Arduino Mega peut être utile pour piloter plus de pixels LED.
× 1
Raspberry Pi 3 Modèle B
× 1
Bande NeoPixel
Toute bande LED WS8212 peut être utilisée.
× 1

Applications et services en ligne

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

À propos de ce projet

Pourquoi Light Strip

J'ai toujours été fasciné par les bandes LED RGB adressables. Les effets de couleur et les capacités d'animation sans fin ont toujours attiré ma créativité. Il y a quelques années, j'ai donc décidé de développer une bibliothèque pour les cartes Arduino appelée ALA (Arduino Light Animations). Alexa me donne maintenant la possibilité de contrôler l'éclairage et les effets de la salle avec ma voix et c'est cool !

Présentation du projet

Il y a les composants nécessaires pour ce projet.

  • Amazon Alexa : Une compétence Alexa personnalisée (Light Strip) définit le modèle d'interaction vocale et traduit les commandes (intentions) qui sont émises vers la fonction Lambda.
  • Amazon Lambda  :un script Python qui reçoit des messages d'Alexa et envoie des mises à jour au service IoT.
  • Amazon IoT :Le service IoT stocke une « ombre de chose » qui est une représentation de l'état de la bande RVB. Chaque fois que le shadow est mis à jour, les clients MQTT abonnés (Raspberry PI) sont notifiés.
  • Framboise PI :Ce petit PC exécute un client MQTT pour recevoir des messages du service Amazon IoT. De l'autre côté, il alimentera et enverra des commandes à la carte Arduino via le port USB.
  • Arduino :Ce joli microcontrôleur exécutera la librairie ALA pour piloter la bande LED recevant les commandes du Raspberry PI via le port série USB. Vous pouvez utiliser une carte Arduino Uno, Nano ou Mega.
  • WS8212 Ruban LED RVB :Ce sont des bandes LED adressables afin que chaque LED puisse être contrôlée individuellement. Cela permet des animations lumineuses belles et colorées.

Rien dans le projet n'est très difficile, mais il y a beaucoup de pièces interconnectées. Je vous suggère de suivre la structure suggérée pour construire votre projet sur des bases solides avant de passer à l'étape suivante. Pour rendre les choses aussi simples que possible, j'ai divisé le projet en deux sous-projets.

La première partie du projet est décrit dans mon projet Web-Controlled LED Animations with Raspberry Pi and Arduino Hackster.io et vous guidera à travers les étapes nécessaires pour connecter le Raspberry PI, la carte Arduino et la bande LED WS8212. A la fin de cette phase vous serez capable de contrôler les animations LED depuis un smartphone ou un PC à l'aide du navigateur web.

La deuxième partie du projet décrit ici ajoutera le contrôle vocal à l'implémentation précédente à l'aide d'Amazon Alexa. Il y a plusieurs étapes à exécuter pour configurer correctement toute la chaîne, alors soyez patient et suivez attentivement les instructions.

Amazon IoT

Avez-vous terminé la partie matérielle ? Il est maintenant temps de passer au cloud ! Nous utiliserons la plate-forme AWS IoT pour gérer notre « truc » depuis Internet.

Nous utiliserons un "Device Shadow", qui est une copie de l'état d'une chose, avec les modifications souhaitées. Le Raspberry PI s'abonnera à un flux de notification qui publie les modifications ("delta") apportées à ce Shadow. Consultez ce lien pour plus d'informations sur la plate-forme et les API AWS IoT.

Créer un objet IoT

Connectez-vous à la console AWS. Si vous ne l'avez pas déjà fait, vous devrez créer un compte gratuit.

Assurez-vous d'être connecté à USA Est (Virginie du Nord) ou UE (Irlande) zone dans le coin supérieur droit.

Recherchez « IoT » et sélectionnez AWS IoT un service. Cliquez sur Commencer bouton (le cas échéant) pour fermer le didacticiel d'introduction.

Nous devons d'abord créer une politique de sécurité pour notre "truc". Accédez à Sécurisé> Politiques puis cliquez sur Créer une politique et saisissez les informations suivantes :

  • Nom :LightStripPolicy
  • Action :*
  • Ressource :*
  • Effet - Autoriser :coché
  • Cliquez sur « Créer »

Nous pouvons maintenant créer l'IoT Chose .

  • Sélectionnez Gérer > Choses menu et créez une nouvelle chose AWS IoT en cliquant sur Enregistrer une chose bouton (ou Créer dans le coin supérieur droit) puis sur Créer une seule chose .
  • Tapez « LS01 » dans le champ Nom. Laissez les valeurs par défaut pour les autres champs et cliquez sur Suivant .
  • Cliquez sur Créer un certificat bouton dans la Création de certificat en un clic rubrique.
  • Téléchargez les 3 certificats pour votre appareil et l'autorité de certification racine. Pour l'autorité de certification racine, vous devrez peut-être cliquer avec le bouton droit de la souris, puis l'enregistrer.
  • Après avoir téléchargé les certificats, cliquez sur Activer bouton.
  • Cliquez sur Joindre une politique et sélectionnez la LightStripPolicy vous avez créé avant, puis cliquez sur Enregistrer la chose .

Avant de poursuivre, vous devez noter le point de terminaison AWS IoT. Cliquez sur les Paramètres dans le coin inférieur gauche de la page Web AWS IoT, ouvrez-le et notez Endpoint.

Configurez Raspberry PI pour écouter la 'Thing'

Nous devons d'abord installer le AWS IoT Device SDK pour Python avec la commande suivante sur la ligne de commande Raspberry PI :

sudo pip3 installe AWSIoTPythonSDK 

Téléchargez maintenant le référentiel LightStrip depuis GitHub et décompressez-le.

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

Copiez les quatre certificats que vous avez téléchargés lorsque vous avez créé l'objet IoT dans le /home/pi/LightStrip/LightStrip-master/pi dossier.

Modifiez le lightstripcfg.py scénario. Vous pouvez utiliser n'importe quel éditeur de texte. Voici les commandes pour le nano éditeur.

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

Modifiez maintenant les paramètres pour qu'ils correspondent à votre configuration.

  • AWSIOT :saisissez le point de terminaison AWS IoT que vous avez noté précédemment.
  • ROOT_CA :nom de fichier du certificat CA racine
  • CERTIFICAT :nom de fichier du certificat
  • PRIVATE_KEY :nom de fichier de la clé privée
  • DEVICE_NAME :laissez-le inchangé à "LS01"

Fermez l'éditeur nano et enregistrez le fichier en appuyant sur 'Ctrl+X' puis sur 'Y'.

Lancez le script lightstrip.py comme suit.

sudo python3 lightstrip.py 

Le script listera les ports USB connectés. L'Arduino doit être connecté à /dev/ttyACM0, alors exécutez le script en passant le port comme ceci.

sudo python3 lightstrip.py /dev/ttyACM0 

Le client de test se connectera au service Amazon Thing Shadow et s'abonnera aux modifications du LS01 dispositif d'ombre. Une fois la connexion établie, le script client mettra à jour son statut dans le shadow d'appareil LS01 et recevra un message d'accusé de réception comme celui-ci.

Pour vérifier que tout fonctionne correctement, revenez à la console AWS IoT et sélectionnez Gérer> Choses menu puis ouvrez le LS01 appareil. Sélectionnez l'Ombre menu et vous verrez l'état de l'ombre de l'appareil.

Cliquez sur Modifier lien dans la section Shadow Document et collez le document JSON suivant dans la zone Shadow state.

{ "desired":{ "animation":"101" }} 

Voici ce que vous devriez voir.

En cliquant sur le lien Enregistrer, un message « delta » sera envoyé au client MQTT sur le Raspberry PI qui allumera la bande LED.

Le document JSON suivant changera la couleur en bleu.

{ "desired":{ "color":"0066CC" }} 

À ce stade, nous sommes en mesure de contrôler notre bande LED à partir du service ASW IoT, vous devriez donc être fier de vous.

Fonction AWS Lambda

AWS Lambda permet d'exécuter du code dans le cloud sans provisionner ni gérer de serveurs. C'est le pont parfait entre le kit de compétences Alexa qui permettra le contrôle vocal dans la dernière étape de ce projet.

Connectez-vous à la console AWS. Dans la liste des services, sélectionnez Lambda .

Assurez-vous d'être connecté à la même région que celle que vous avez utilisée à l'étape précédente :USA Est (Virginie du Nord) ou UE (Irlande) zone dans le coin supérieur droit.

Cliquez sur Créer une fonction bouton. Cliquez sur Auteur à partir de zéro et configurez comme suit :

  • Nom =LightStrip
  • Runtime =Python 3.6
  • Rôle =Créer un rôle personnalisé. Cela lancera un nouvel onglet. Cliquez simplement sur le bouton « Autoriser » pour créer un nouveau rôle nommé lambda_basic_execution.
  • Rôle existant :lambda_basic_execution
  • Cliquez sur Créer une fonction bouton

Notez l'ID ARN Lambda dans le coin supérieur droit.

Cliquez sur LightStrip pour faire apparaître la section du code de fonction.

Type de saisie de code :Modifier le code en ligne

  • Exécution :Python 3.6
  • Gestionnaire :lambda_function.lambda_handler

Le lambda_function.py le script doit déjà être défini. Collez le code de LightStrip\lambda\lambda_function.py fichier dans l'éditeur de code.

Créez un autre fichier nommé ala_controller.py et collez le code de LightStrip\lambda\ala_controller.py fichier dans l'éditeur de code.

Voilà à quoi devrait ressembler le tout.

Lorsque vous avez terminé, cliquez sur le bouton orange Enregistrer bouton dans le coin supérieur droit.

Compétence Alexa

Nous pouvons maintenant créer la compétence personnalisée Light Strip pour Alexa.

Accédez à Amazon Developer Console et connectez-vous si nécessaire. Vous devrez peut-être d'abord enregistrer votre compte.

Accédez à Alexa> Kit de compétences Alexa (Commencer) .

Cliquez sur Ajouter une nouvelle compétence dans le coin supérieur droit et saisissez les données suivantes dans les Informations sur les compétences onglet :

  • Type de compétence :modèle d'interaction personnalisé
  • Langue :anglais (États-Unis)
  • Nom :LightStrip
  • Nom d'appel :bande lumineuse
  • Cliquez sur Enregistrer

Cela crée la compétence. Notez l'ID de compétence.

Sélectionnez le Modèle d'interaction menu, puis cliquez sur Lancer Skill Builder bouton.

Cliquez sur l'éditeur de code et collez le contenu de LightStrip/alexaskill/lightstrip_skill.json fichier dans la zone de texte.

Cliquez sur Enregistrer le modèle et Construire un modèle boutons. Il faudra quelques minutes pour construire le modèle alors soyez patient. Cliquez sur Informations sur les compétences pour revenir à la page de configuration des compétences.

Cliquez maintenant sur la Configuration menu.

Dans le type de point de terminaison de service, sélectionnez AWS Lambda ARN puis collez l'ARN de la fonction Lambda que vous avez noté ci-dessus.

Laissez toutes les valeurs par défaut et cliquez sur Enregistrer bouton ci-dessous.

Connectez la compétence Alexa à la fonction Lambda

Retournez à votre fonction Lambda. Sur le côté droit se trouve une liste de déclencheurs prédéfinis. Sélectionnez Kit de compétences Alexa et il sera ajouté à votre fonction.

Configurez comme suit :

  • Id d'application =l'ID de compétence que vous avez noté ci-dessus
  • Cliquez sur Ajouter
  • Cliquez sur Enregistrer

Vous avez terminé

Le projet est maintenant terminé. Essayez les commandes vocales suivantes :

  • Ouvrir la bande lumineuse
  • Activer
  • Réglez la luminosité sur 20 %
  • Réglez la luminosité sur 50 %
  • Définir la couleur sur rouge
  • Définir la couleur sur turquoise
  • Désactiver
  • Exécutez une animation passionnante
  • Réaliser une animation relaxante

La compétence LightStrip permet également des interactions vocales plus avancées

  • Moi :Alexa, ouvre Light Strip
  • Alexa :Bienvenue dans LightStrip - La bande LED brillera d'une lumière bleue
  • Moi :Lancer une animation
  • Alexa :Voulez-vous une animation relaxante ou passionnante ?
  • Moi :Détente
  • Alexa :OK - La bande LED affichera une animation aléatoire
  • Moi :Animation suivante
  • Alexa :OK - Une autre animation aléatoire sera affichée

Pour mieux comprendre le modèle d'interaction, voici le diagramme VUI complet de la compétence.

Améliorations et améliorations

Démarrer automatiquement AlaWeb au démarrage

Une petite amélioration du projet consiste à démarrer automatiquement le script lightstrip.py au démarrage afin que vous n'ayez pas besoin de le lancer manuellement chaque fois que vous alimentez le Raspberry PI ou que quelque chose ne va pas et que vous devez réinitialiser. Suivez ces instructions.

Ajout et ajustement d'animations

La compétence Light Strip a déjà 20 variantes d'animation définies. Cependant, la bibliothèque ALA permet de configurer facilement vos propres animations en choisissant le préréglage d'animation, la palette de couleurs et la vitesse. Vous pouvez ajouter vos propres animations ou modifier celles qui existent déjà dans le script ala_controller.py. Autour de la ligne 80, vous verrez une liste de paramètres d'animations que vous pouvez modifier ou améliorer en fonction de vos goûts.

Code

LightStrip
Tout le code dont vous avez besoin pour ce projethttps://github.com/bportaluri/LightStrip

Schémas


Processus de fabrication

  1. Panneau LCD avec Arduino pour Flight Simulator
  2. Switch/Panneau LED avec Arduino pour FS2020
  3. Arduino avec Bluetooth pour contrôler une LED !
  4. Chaussures intelligentes (laçage automatique et génération d'électricité)
  5. Arduino quadrupède
  6. Contrôle du servomoteur avec Arduino et MPU6050
  7. Contrôle de la luminosité des LED à l'aide de Bolt et Arduino
  8. module GPS u-blox LEA-6H 02 avec Arduino et Python
  9. Bras robotique simple et intelligent utilisant Arduino