Projet 6 - Lampe multicolore pilotée en Bluetooth
Présentation
Pour visualiser la vidéo du projet : https://youtu.be/TF1y8qvDw2o

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.
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 leds 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 préexistant, écrit pour le système d’exploitation Android et qui fonctionne sur la plupart des smartphones du commerce, permet de choisir une couleur sur une interface graphique et d’en transmettre les valeurs en Bluetooth sur le dispositif de votre choix. L’Arduino est reliée à un module Bluetooth qui établit et relaie la communication avec le terminal de commande par un lien série. Les commandes reçues sont interprétées pour piloter un ruban de leds RVB (rouge vert bleu ou RGB : Red Green Blue ) afin...
Matériel et outillage
Le matériel nécessaire se résume au strict minimum et représente un budget d’environ 40 euros.
1. Matériel
-
Une Arduino UNO (ou Nano pour plus de compacticité).
-
Un ruban de 30 leds RVB SMD5050.
-
Un module Bluetooth de type HC-06 ou équivalent.
-
Une alimentation 12 V continue (pour un fonctionnement autonome).
-
Une plaque de prototypage (grand format).
-
Trois transistors Darlington TIP120.
-
Trois résistances de 22 Kohms.
-
Des fils de connexion.

Arduino UNO

Module Bluetooth HC-06

Transistor TIP120

Ruban de leds RVB SMD5050
2. Outillage
Pour réaliser ce projet, il sera nécessaire d’utiliser un ordinateur pour programmer l’Arduino. Un terminal Android (tablette ou smartphone) sera aussi utile. Mais si vous n’en avez pas, vous pourrez utiliser votre ordinateur avec une communication Bluetooth à la place.
Montage
Le montage consiste à câbler le module Bluetooth et le circuit de pilotage des leds 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 leds.

Montage de la lampe Bluetooth
1. 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.
Le nom Bluetooth est inspiré du roi danois Harald à la dent bleue, qui unifia plusieurs tribus pour créer le royaume du Danemark. Cette analogie est utilisée, car à l’origine, ce protocole fut inventé pour faire communiquer les ordinateurs et les téléphones cellulaires, qui auparavant étaient incapables de dialoguer. Depuis 1996, ce protocole s’est répandu à tous les niveaux pour remplacer les liaisons filaires pour les communications à courte distance et bas débit (souris, oreillettes, tablettes, etc.).
Pour faire dialoguer une Arduino 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
La programmation de la lampe connectée commence par la maîtrise et le contrôle des leds 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 leds
Comme expliqué précédemment, les leds RVB sont en fait constituées d’un assemblage de trois leds rouge, verte et bleue et c’est la modulation de l’alimentation de ces trois leds qui fait varier la couleur de l’ensemble.
Afin de vérifier le bon fonctionnement du ruban de leds, vous allez créer un 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 leds :
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 :
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 trois couleurs primaires en fonction du temps
Le code complet est donc le suivant :
Fichier : _01_RGB
int R = 3;
int V = 5;
int B = 6;
void setup() {
pinMode(R, OUTPUT);
pinMode(V, OUTPUT);
pinMode(B, OUTPUT);
}
void loop()...
Pour aller plus loin
1. 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.
Ajouter une animation de couleur
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.
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.
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.
Utiliser la lampe comme veilleuse ou réveil
Introduisez des temporisations pour utiliser cette lampe comme veilleuse, ou même comme réveil...
2. Ressources
Histoire du protocole Bluetooth : https://fr.wikipedia.org/wiki/Bluetooth
Conseils d’Adafruit sur l’utilisation...