Bandes lumineuses LED Android-Arduino
Connectez une bande LED multicolore à votre smartphone pour créer un spectacle lumineux tactile ! Vous pouvez fixer les LED à couleurs changeantes sous une table basse, votre vélo ou tout autre objet qui, selon vous, a besoin d’une touche de couleur.
Il existe plusieurs façons de connecter votre smartphone à un microcontrôleur embarqué. Dans ce projet, vous utiliserez un téléphone Android en mode hôte USB. Ainsi, le téléphone Android alimente la carte Arduino et communique avec elle ! Bien que la carte Arduino soit connectée via USB, la communication s'effectue par liaison série, comme lorsqu'elle est connectée à votre ordinateur.
Une fois que vous parviendrez à faire communiquer votre téléphone avec un Arduino, tout un monde de nouveaux projets s'ouvrira à vous !

Téléchargez le code
- Téléchargez l'application et le programme d'installation surtrevorshp.com/creations/ArduinoColor.apk .
- Vous pouvez également récupérer le code source complet sur github.com/trevorshannon/ArduinoColor .
ATTENTION : Ce projet est réalisé à vos risques et périls. Lors de nos tests, un téléphone a été endommagé. Tous les téléphones Android ne sont pas compatibles avec le mode hôte USB. Utilisez uniquement des téléphones compatibles, dotés du système d'exploitation Android adéquat et des pilotes nécessaires pour le mode hôte USB. Pour en savoir plus, consultez la page « Comment savoir si mon appareil prend en charge le mode hôte USB (OTG) ? »
Étape n° 1 : Construire le circuit.


- Les rubans LED RGB possèdent généralement quatre fils : un pour l’alimentation et deux pour chaque couleur (rouge, vert et bleu). Lorsque le ruban est alimenté, la mise à la masse de l’un des fils de commande allume la LED correspondante à pleine luminosité. La modulation de largeur d’impulsion (MLI) appliquée à ces fils permet de moduler l’intensité lumineuse.
- Une bande LED d'un mètre de long peut consommer près de 1 A lorsque les LED rouge, verte et bleue sont allumées à pleine luminosité. Les broches de sortie d'un Arduino ne peuvent fournir qu'environ 40 mA chacune ; il est donc nécessaire d'utiliser un circuit de commande pour augmenter la puissance. Ce circuit reçoit trois signaux PWM de l'Arduino et les utilise pour piloter trois transistors qui alimentent les LED rouge, verte et bleue. Vous bénéficiez ainsi d'un contrôle total sur la luminosité de chaque couleur et pouvez les mélanger pour créer n'importe quelle couleur du spectre.
- REMARQUE : Vous souhaitez alimenter 1 ou 2 LED au lieu d’une bande entière ? Ignorez les transistors et connectez les LED directement aux broches de sortie de l’Arduino.
- Le circuit de commande (première photo) est un amplificateur à transistor simple, répété trois fois. Un signal PWM de 5 V et de faible intensité, provenant de l'Arduino, est appliqué à la base (B) du transistor via une résistance de 1 kΩ. Ce signal commute le transistor, lui permettant de conduire un courant plus élevé (12 V) entre le collecteur (C) et l'émetteur (E), et ainsi d'alimenter les LED. La fréquence de commutation du transistor est suffisamment rapide pour que la puissance des LED soit modulée en largeur d'impulsion (PWM) comme le signal d'entrée, ce qui permet d'obtenir le contrôle de luminosité souhaité.
- REMARQUE : Veillez à bien identifier le transistor qui contrôle la couleur de la LED et à les connecter correctement, en vous référant au brochage du transistor TIP31 (2e photo). N'oubliez pas de connecter la broche de masse de l'Arduino à la masse de l'alimentation 12 V !
- Votre circuit terminé devrait ressembler à la troisième photo. Les sorties du circuit sont connectées à un connecteur à 4 broches situé à droite, prêt à recevoir une bande LED RGB.
Étape n° 2 : Pirater un câble (facultatif).

- De nombreux téléphones Android sont compatibles USB On-The-Go (OTG), ce qui signifie qu'ils peuvent fonctionner comme hôte (fournissant l'alimentation) ou comme esclave (recevant l'alimentation). Pour que votre téléphone puisse connecter un périphérique USB comme une carte Arduino, vous avez besoin d'un câble USB OTG. Vous pouvez en acheter pour quelques euros en ligne, mais si vous avez de vieux câbles USB sous la main, il est plus amusant d'en fabriquer un vous-même. Suivez les instructions ici .
Étape n° 3 : Installez l’application Android.

- En ajoutant quelques lignes de code à une application Android, vous pouvez envoyer n'importe quel type de données à l'Arduino via votre câble USB OTG. Dans ce cas précis, vous enverrez des valeurs de luminosité comprises entre 0 et 255 pour les LED rouge, verte et bleue. L'élément clé de cette solution nous vient de Mike Wakerly. Il a développé un excellent pilote pour les puces USB-série utilisées dans les cartes Arduino, appelé usb-serial-for-android . Envoyer des données à un Arduino depuis votre téléphone est aussi simple que d'appeler la fonction device.write() dans votre application Android !
- Un excellent exemple est l'application open source Color Namer de Katie Dektar ( github.com/kaytdek/ColorNamer ). Pour ce projet, j'ai simplifié Color Namer et créé une version appelée Arduino Color. Vous pouvez télécharger l'application et son programme d'installation sur trevorshp.com/creations/ArduinoColor.apk . Le code source complet est également disponible sur github.com/trevorshannon/ArduinoColor .
Étape n°4 : Codez votre propre application (facultatif).

- Si vous développez votre propre application, téléchargez le pilote Wakerly depuis code.google.com/p/usb-serial-for-android et copiez le fichier JAR usb-serial-for-android dans le répertoire [votre_application_racine]/libs . Cette bibliothèque précompilée inclut toutes les fonctions nécessaires pour ouvrir, fermer, écrire et lire des données sur un périphérique série depuis votre application Android.
- Ensuite, copiez le fichier device_filter.xml dans le répertoire [votre_racine_d'application]/res/xml . Ce fichier sert de table de correspondance pour les périphériques USB connectés à votre téléphone. Lorsque vous connectez une carte Arduino, son identifiant (défini par le fabricant de la puce USB-série) est envoyé au téléphone. Si cet identifiant figure dans le fichier device_filter.xml de votre application, celle-ci s'ouvrira automatiquement. (L'identifiant de l'Arduino est déjà présent dans le fichier device_filter.xml de Wakerly ; vous n'avez donc aucune modification à apporter à ce fichier.)
- Enfin, indiquez à votre application qu'elle doit rechercher les périphériques USB. Ouvrez le fichier AndroidManifest.xml de votre application et ajoutez les informations appropriées dans vos balises : exemple de code 1 .
- Pour intégrer la bibliothèque Wakerly, vous devez d'abord écrire du code qui ouvre le périphérique série au démarrage de l'application et le ferme à sa fermeture. Voici un exemple de code tiré d'Arduino Color : exemple de code 2 .
- Vous pouvez ensuite envoyer des données au périphérique série ouvert à l'aide de la fonction write() . Par exemple, l'application Arduino Color enverra des données de couleur via le port série lorsque l'utilisateur touchera le sélecteur de couleurs : exemple de code 3 .
Étape n° 5 : Téléverser le firmware Arduino.

- Le code Arduino pour ce projet est assez simple ; téléchargez-le sur trevorshp.com/creations/android_leds.ino , puis ouvrez-le dans l’environnement de développement Arduino (IDE) et téléversez-le sur votre carte Arduino.
- Le code utilise la bibliothèque Serial, fournie avec l'IDE Arduino, et facilite la lecture des données transmises via le port série au microcontrôleur. Le code s'exécute en boucle infinie, vérifiant le nombre d'octets disponibles sur le port série. Dès qu'au moins trois octets sont disponibles, ils sont lus et stockés dans un tableau sous forme de niveaux de luminosité rouge, vert et bleu. Ces niveaux de luminosité servent ensuite à configurer les sorties PWM.
- Notez la présence de constantes nommées
max_red,max_greenetmax_blue. Il se peut que votre ruban LED présente un déséquilibre de couleurs. En théorie, si vous allumez les LED rouges, vertes et bleues à leur luminosité maximale, la lumière émise devrait être blanche. En pratique, elle peut présenter une légère dominante colorée (généralement verte ou bleue). Vous pouvez corriger ce défaut en ajustant les constantes de valeur maximale utilisées par la fonction map . Voir l'exemple de code 4 .
Étape n°6 : Reliez tous les éléments.

- Votre spectacle lumineux est prêt ! Connectez l’Arduino à votre téléphone ; une notification devrait apparaître vous demandant si vous souhaitez ouvrir l’application Arduino Color. Oui, s’il vous plaît !
- Connectez la bande LED à votre circuit de commande et mettez sous tension l'alimentation 12 V. Grâce à l'application Android Color sur votre téléphone, vous devriez maintenant pouvoir ajuster la couleur de votre bande lumineuse en temps réel.
- Fixez la bande lumineuse sous une table basse, emportez-la à une soirée ou collez-la sur votre vélo !
Conclusion
Autres explorations
Maintenant que vous savez comment communiquer avec une carte Arduino via une application Android, vous pouvez développer ce projet de multiples façons :
- Passez au sans fil : ajoutez un module Bluetooth ou Wi-Fi à votre Arduino et débarrassez-vous du câble.
- Créez des lumières qui changent de couleur en fonction de l'orientation de votre téléphone.
- Utilisez le GPS de votre téléphone ainsi que des capteurs sophistiqués connectés à l'Arduino pour créer un enregistreur de données géolocalisé.
- Utilisez une bande LED adressable individuellement et ajustez le code pour un contrôle plus précis du jeu de lumière.
Pour en savoir plus sur la prise en main d'Arduino, consultez notre livre à succès Getting Started with Arduino ainsi que nos projets et tutoriels Arduino , du niveau débutant au niveau avancé.