Créer un ruban LED intelligent animé contrôlé par Alexa avec Arduino
Composants et fournitures
| Composant | Quantité | Notes |
|---|---|---|
| Arduino UNO (ou Nano/Mega) | 1 | Le Nano fonctionne aussi ; le Mega permet de piloter plus de LEDs. |
| Raspberry Pi 3 Model B | 1 | Sert de passerelle MQTT entre AWS IoT et l'Arduino. |
| Ruban NeoPixel (WS2812) | 1 | Tout ruban WS2812 convient. |
Applications et services en ligne
- Arduino IDE
- Amazon Web Services (AWS) Lambda
- Amazon Alexa Skills Kit
- AWS IoT Core
À propos du projet
Pourquoi un ruban LED ?
Les rubans LED adressables (RGB) offrent des possibilités infinies d'effets colorés et d'animations. J'ai développé la bibliothèque ALA (Arduino Light Animations) pour piloter ces rubans depuis une carte Arduino. L'intégration d'Alexa permet désormais de contrôler l'éclairage et les effets par la voix.
Vue d'ensemble du projet
L'architecture repose sur plusieurs éléments interconnectés :
- Amazon Alexa : Une skill personnalisée « Light Strip » définit le modèle d'interaction vocale et traduit les commandes (intents) vers la fonction Lambda.
- AWS Lambda : Un script Python reçoit les messages d'Alexa et met à jour le service IoT.
- AWS IoT : Le service stocke un « Device Shadow » (représentation de l'état du ruban). Toute mise à jour du shadow notifie les clients MQTT abonnés (le Raspberry Pi).
- Raspberry Pi : Exécute un client MQTT qui reçoit les notifications du shadow AWS IoT. Il alimente et envoie les commandes à l'Arduino via le port USB série.
- Arduino : Exécute la bibliothèque ALA pour piloter le ruban LED en recevant les commandes du Raspberry Pi.
- Ruban LED WS2812 : Chaque LED est adressable individuellement, permettant des animations fluides et colorées.

Le projet est divisé en deux sous-projets pour simplifier la mise en œuvre :
- Première partie (prérequis) : Suivez le projet Web-Controlled LED Animations with Raspberry Pi and Arduino pour connecter le Raspberry Pi, l'Arduino et le ruban WS2812. À l'issue, vous contrôlez les animations depuis un navigateur web (smartphone ou PC).
- Deuxième partie (ce tutoriel) : Ajoute le contrôle vocal via Amazon Alexa. Les étapes sont nombreuses ; suivez-les patiemment.
Configuration d'Amazon IoT
Une fois le matériel prêt, passez au cloud avec AWS IoT pour gérer votre « thing » depuis Internet.
Créer un « Thing » IoT
- Connectez-vous à la console AWS (créez un compte gratuit si nécessaire).
- Sélectionnez la région US East (N. Virginia) ou EU (Ireland).
- Ouvrez le service AWS IoT Core.
- Créez une politique de sécurité : Secure > Policies > Create a Policy.
- Nom :
LightStripPolicy - Action :
* - Ressource :
* - Effet : Allow coché
- Nom :
- Créez le Thing : Manage > Things > Register a Thing > Create a single thing.
- Nom :
LS01 - Générez les certificats (One-click certificate creation) et téléchargez les 3 fichiers + le Root CA.
- Activez le certificat et attachez la politique
LightStripPolicy.
- Nom :
- Notez l'Endpoint AWS IoT (menu Settings en bas à gauche).

Configurer le Raspberry Pi pour écouter le « Thing »
- Installez le SDK Python :
sudo pip3 install AWSIoTPythonSDK - Téléchargez le dépôt LightStrip :
mkdir -p /home/pi/LightStrip cd /home/pi/LightStrip wget https://github.com/bportaluri/LightStrip/archive/master.zip unzip master.zip - Copiez les 4 certificats dans
/home/pi/LightStrip/LightStrip-master/pi. - Éditez
lightstripcfg.py(avec nano par exemple) et renseignez :AWSIOT: l'Endpoint noté plus haut.ROOT_CA,CERTIFICATE,PRIVATE_KEY: noms des fichiers certificats.DEVICE_NAME: laissezLS01.
- Lancez le script :
sudo python3 lightstrip.py /dev/ttyACM0(port USB de l'Arduino).
Le script se connecte au shadow AWS IoT et s'abonne aux changements. Pour tester, dans la console AWS IoT, ouvrez le shadow du device LS01, cliquez Edit et collez :
{ "desired": { "animation": "101" } }
Le ruban doit s'allumer. Pour changer la couleur :
{ "desired": { "color": "0066CC" } }
Fonction AWS Lambda
Lambda fait le pont entre la skill Alexa et AWS IoT.
- Dans la console AWS, service Lambda, même région qu'IoT.
- Create Function > Author from scratch :
- Nom :
LightStrip - Runtime : Python 3.6
- Rôle : Create a Custom Role (cliquez Allow pour créer
lambda_basic_execution).
- Nom :
- Notez l'ARN de la fonction (coin supérieur droit).
- Dans l'éditeur de code, collez le contenu de
lambda_function.pyet créez un second fichierala_controller.pyavec le code correspondant (disponible sur GitHub). - Sauvegardez.

Création de la Skill Alexa
- Allez sur Amazon Developer Console > Alexa > Alexa Skills Kit.
- Add a New Skill :
- Type : Custom Interaction Model
- Langue : English (U.S.) (ou French si disponible)
- Nom :
LightStrip - Nom d'invocation :
light strip
- Notez le Skill ID.
- Menu Interaction Model > Launch Skill Builder > Code Editor : collez le JSON du fichier
lightstrip_skill.json(dossieralexaskilldu repo). - Save Model puis Build Model (quelques minutes).
- Menu Configuration : Service Endpoint Type = AWS Lambda ARN, collez l'ARN Lambda noté. Sauvegardez.
Lier la Skill Alexa à la fonction Lambda
- Retournez sur la fonction Lambda.
- Ajoutez le déclencheur Alexa Skills Kit.
- Configurez : Application Id = Skill ID noté précédemment. Add puis Save.
C'est terminé !
Testez ces commandes vocales :
- « Alexa, ouvre Light Strip »
- « Allume » / « Éteins »
- « Règle la luminosité à 20 pourcent »
- « Règle la couleur sur rouge »
- « Lance une animation excitante » / « Lance une animation relaxante »
Exemple de dialogue avancé :
- Vous : Alexa, ouvre Light Strip
- Alexa : Bienvenue sur LightStrip – Le ruban brille en bleu.
- Vous : Lance une animation
- Alexa : Voulez-vous une animation relaxante ou excitante ?
- Vous : Relaxante
- Alexa : OK – Animation aléatoire lancée.
- Vous : Animation suivante
- Alexa : OK – Une autre animation s'affiche.

Améliorations et raffinements
Démarrage automatique au boot
Pour lancer lightstrip.py automatiquement au démarrage du Raspberry Pi, ajoutez une entrée dans /etc/rc.local ou créez un service systemd.
Ajouter et modifier des animations
La skill inclut 20 animations prédéfinies. La bibliothèque ALA permet de créer vos propres animations (preset, palette, vitesse). Modifiez le fichier ala_controller.py (vers la ligne 80) pour personnaliser la liste.
Code
Tout le code source est disponible sur GitHub : https://github.com/bportaluri/LightStrip
Schémas

Processus de fabrication
- Panneau de contrôle Arduino Nano pour Flight Simulator 2020 – Affichage LCD et CDI
- Panneau commutateurs et LED pour Microsoft Flight Simulator 2020 basé sur Arduino
- Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
- Chaussures auto-laçantes intelligentes avec récupération d'énergie piézoélectrique
- Construire un robot quadrupède Arduino intelligent : guide étape par étape
- Arduino et MPU6050 : Contrôle précis de servo-moteur avec SG90 et MG996R
- Contrôle fluide de la luminosité LED avec Bolt IoT et Arduino UNO
- Module GPS u-blox LEA‑6H 02 : guide d'intégration Arduino et Python
- Construisez un Bras Robotique Intelligent Contrôlé par Arduino : Tutoriel DIY Facile