Projet 11 - Lampe multicolore
Présentation
Ce projet consiste à réaliser une lampe dont la couleur et l’intensité seront réglables via une communication sans fil depuis un smartphone ou un autre terminal pourvu d’une communication Bluetooth.
Lampe multicolore
Ce projet vous fera entrer de plain-pied dans le monde des objets connectés. Il sera un prétexte à la mise en œuvre d’une communication Bluetooth entre un terminal quelconque et l’Arduino. Vous découvrirez le fonctionnement d’un ruban de LED multicolores et le principe de la synthèse additive des couleurs.
1. Principe de fonctionnement
La lampe, alimentée par le secteur et pourvue d’un abat-jour, peut être allumée et réglée depuis un smartphone.
Un programme téléchargeable sur le Play Store de Google, écrit pour le système Android, et qui peut être installé sur la plupart des téléphones du commerce permet de choisir une couleur sur une interface graphique et d’en transmettre les valeurs en Bluetooth à notre carte Arduino. Pour cela, l’Arduino est reliée à un module Bluetooth qui établit et relaie ensuite l’information au dispositif de commande. Les commandes reçues sont interprétées pour piloter un ruban de LED RVB (rouge vert bleu ou RGB : Red Green Blue) afin de les illuminer...
Matériel nécessaire
Le montage s’articule autour de plusieurs éléments :
-
une plaque de prototypage (ou breadboard) ;
-
un module Bluetooth de type HC-06 ou équivalent ;
Module HC-06
-
une alimentation 12 V continue (pour un fonctionnement autonome) ;
-
trois transistors Darlington TIP120 ;
TIP120
-
un ruban de 30 LED RVB SMD5050 ;
Ruban LED RVB
-
trois résistances de 22 kOhms ;
-
des fils « Dupont ».
Pour la partie programmation, nous utilisons une carte Arduino Uno.
Schéma et montage
Le montage consiste à câbler le module Bluetooth et le circuit de pilotage des LED RGB. Additionnellement, vous pouvez réfléchir à un carénage et/ou un abat-jour pour dissimuler l’électronique et diffuser la lumière produite par le ruban de LED.
Montage de la lampe Bluetooth
Voyons en détail le fonctionnement du module Bluetooth, ainsi que celui du ruban de LED RVB.
1. Le module Bluetooth
Comme son nom l’indique, le module Bluetooth sert à établir et à gérer les communications via le protocole Bluetooth, qui est un standard de transmission bidirectionnel sans fil à faible distance et faible consommation énergétique.
Pour qu’une Arduino puisse dialoguer en Bluetooth, il est nécessaire de lui adjoindre un module dédié qui communique avec elle via une liaison série. Le module Bluetooth décrit dans ce projet est de type HC-06. Il en existe pléthore et les modèles évoluent très rapidement. Aussi, il est possible qu’au moment de réaliser ce projet, vous ne trouviez pas ce type exact. Ce n’est pas grave, car le principe général de montage et de programmation reste le même. Seuls quelques détails varieront, principalement la vitesse de communication série (voir la section Programmation de l’Arduino). La seule caractéristique importante dont vous devez tenir compte au moment de choisir votre module est d’avoir des bornes de dialogue série tolérantes au 5 V. En effet, certains modules ne fonctionnent qu’en 3,3 V et risquent d’être abîmés si vous les utilisez avec une Arduino Uno...
Programmation de l’Arduino
La programmation de la lampe connectée commence par la maîtrise et le contrôle des LED RVB, puis passe par la mise en œuvre du module Bluetooth, et enfin l’intégration des deux éléments pour implémenter la fonction finale de lampe pilotée via le Bluetooth.
1. Test du ruban de LED
Comme expliqué précédemment, les LED RVB sont en fait constituées d’un assemblage de trois LED rouge, verte et bleue et c’est la modulation de l’alimentation de ces trois LED qui fait varier la couleur de l’ensemble.
Afin de vérifier le bon fonctionnement du ruban de LED, nous allons développer un test-code qui module les couleurs en passant par toutes les nuances. Ainsi, si un problème de câblage ou de fonctionnement affecte une des couleurs, il sera plus facile à détecter.
Ce code est plutôt simple puisqu’il consiste dans un premier temps à déclarer les numéros des bornes reliées aux trois transistors actionnant les LED :
int R = 3;
int V = 5;
int B = 6;
Puis, dans la routine d’initialisation, il s’agit de les configurer en tant que sortie :
void setup() {
pinMode(R, OUTPUT);
pinMode(V, OUTPUT);
pinMode(B, OUTPUT);
}
Dans la boucle principale, une variable appelée temps, qui servira dans les calculs suivants, est une division de la fonction millis() et s’incrémente donc plus lentement (en l’occurrence une unité toutes les 0,6 secondes).
float temps = float(millis() )/ 600;
Les trois lignes suivantes écrivent dans les sorties analogiques reliées à chaque couleur des valeurs fluctuantes suivant une sinusoïde oscillant entre 0 et 250, et décalée de :
2Pi / 3
Ceci produit un signal triphasé de couleur :
analogWrite(R, (125+int(125 * sin(temps ))));
analogWrite(V, (125+int(125 * sin(temps + (2*PI / 3)))));
analogWrite(B, (125+int(125 * sin(temps + (4 * PI / 3)))));
Oscillation des 3 couleurs
Le code complet est donc le suivant :
int R = 3;
int V = 5;
int B = 6;
void setup() {
pinMode(R, OUTPUT);
pinMode(V, OUTPUT); ...
Améliorations possibles
Cette lampe est déjà très amusante, mais vous pouvez imaginer plusieurs améliorations pour la rendre encore plus intéressante.
1. Ajouter une animation
Codez un nouveau programme d’interface pour ajouter une animation de couleur : l’idée est d’entrer différentes couleurs et les temporisations intermédiaires pour provoquer une animation.
2. Améliorer le design de la lampe
La lampe telle quelle est brute, mais elle serait bien plus belle avec un abat-jour.
Vous pouvez créer un abat-jour spécifique, par exemple en papier plié, en vous aidant du logiciel 3D Blender et du plug-in Export Paper Model. L’idéal est que l’abat-jour cache également l’Arduino et le système d’alimentation de manière à montrer un objet fini et homogène.
3. Utiliser la lampe comme veilleuse
Introduisez des temporisations pour utiliser cette lampe comme veilleuse, ou même comme réveil… Prenez exemple sur le Projet 4 - Veilleuse automatique afin d’avoir quelques idées sur la manière de faire. Il serait même possible de combiner les deux projets.
4. Réaliser une lampe connectée
Reliez cette lampe à des données puisées sur Internet. Pour la rendre réactive à des informations émanant du réseau : tweets, e-mails, entrants, etc.
5. Mémoriser les réglages
Cette version est déjà satisfaisante, mais il lui reste un défaut : à chaque redémarrage de l’Arduino, les...
Ressources supplémentaires
Conseils pour aller plus loin dans l’utilisation de ruban de LED :
https://learn.adafruit.com/rgb-led-strips/usage
Application Android d’aide au développement de projet Bluetooth :
https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor
Créer facilement des applications Android :
ou Apple :