Cela faisait longtemps que je voulais me faire des mini spots afin de pouvoir les emmener facilement en soirée en cas de besoin (l'occasion s'étant déjà présentée plusieurs fois...). J'avais fait une version analogique mais elle n'a jamais fonctionné. J'ai donc fait une récidive mais en visant un format plus "pocket" ^^

L'objectif:
Faire des spots alimentés le plus aisément possible et qui logent dans une boîte de tic tac, oui oui, une boîte de tic tac.

La solution:
Utiliser un microcontrôleur et des LED pour générer la lumière.

Avant de me lancer dans la réalisation, j'ai fait un peu de théorie histoire de donner une ligne directrice au projet. Au départ je pensais simplement utiliser 3 LED pour avoir quelque chose de simple mais pas qu'un simple clignotant. Après réflexion, je me suis rendu compte que je pouvais mettre bien plus de fonctions.

Choix technologiques
Pour développer, j'utilise une carte de développement pour Atmega 8, un microcontrôleur de marque Atmel.
Celui-ci se programme en langage C que je commence à bien connaître pour avoir eu des cours tout au long de ces 2 dernières années de prépa. Ce modèle n'a pas beaucoup de limitation par rapport à la taille de mon projet, je dirais même qu'au final, il est bien trop puissant!
Sachant que chaque led consomme environ 20mA, j'ai vérifier dans la doc du composant que les ports pouvaient alimenter ou absorber la totalité du courant. Seul le port C est limité à 100mA, les autres ont une limitation à 300mA. J'ai pris le port B car au démarrage toute les leds sont allumées et cela représente un courant de 110mA.
Pour des raisons de simplicité, j'ai choisi d'alimenter chaque led depuis le microcontrôleur. Cette méthode permet d'avoir une logique positive, ainsi lorsque vous mettez la broche à 5V, la led s'allume, sinon c'est le contraire. A contrario, j'ai fait l'inverse pour les boutons: la broche est toujours à 5V sauf quand on appuis dessus. Là le but est de consommer le moins de courant possible en évitant d'avoir une résistance consommant du courant en permanence.



NOTE: Le code qui chiffre à quelques 300 petites lignes sera mis en ligne ultérieurement.

Gestion des séquences
Comme j'avais moins d'une semaine pour mettre point ces spots tic tac, j'ai dès le départ abandonné l'idée de les faire réagir à la musique. Du coup, c'est un peu plus contraignant car il faut définir comment on va faire pour les séquences de clignotement. J'ai fait le choix d'utiliser un tableau de 7 lignes et de 21 colonnes.
Pourquoi?
7 lignes car j'utilise 3 LED de couleur (Rouge, Vert, Bleu, pour être original...) et que l'affichage du numéro de ligne se fait en binaire or on ne peut pas compter à plus de 7 avec 3 bits.
Les 21 colonnes sont moins justifiées, c'est plutôt pourquoi 21 et pas 20? En fait, la première colonne contient le BPM et les 20 autres les numéro de séquence.

En effet, pour que les lumières aient l'air un minimum synchronisées avec la musique, celle-ci clignotent à une fréquence proche de celle de la musique. Comme on met généralement de la musique "grand public" dans les soirée entre potes, on a donc des battements par minutes situées entre 110 (70 pour du dubstep par contre) et 140. Il faut aussi savoir que notre David Guetta national fait des morceaux dans cette gamme et souvent aux alentour de 128 BPM (un standard en musique électronique), d'où l'adaptation au morceaux commerciaux.

Gestion des couleurs/LEDs
3 LED = 3 Couleurs serait un peu limité...
Ceux qui ont l'habitude savent qu'avec du Rouge, du vert et du bleu on peut normalement faire la majorité des couleurs. Je n'ai pas été jusque là mais par contre je voulais pouvoir choisir quels led alimenter.
J'ai utilisé un codage facile à utiliser avec le tableau, ainsi chaque combinaison porte un numéro. Et avec 3 LED, on a ... 7 combinaison possible (sans compter l'état éteint). Ces combinaison sont donc aussi les 7 couleurs de bases réalisable avec des LED RGB. Vous trouverez en haut à gauche du scan de ma feuille de travail les numéro correspondants. Comme c'est pas forcément facile de faire des séquences sympa, j'ai aussi ajouté un mode aléatoire. Celui est en fait pseudo-aléatoire et démarre toujours pareil. C'est le mode de fonctionnement par défaut.

Les mini-spots Tic Tac en plein fonctionnement. Mode couleur avec LED d'ambiance allumée.


La fonction stroboscope
Le stroboscope donne un effet sympa sur certains morceaux (en particulier sur du dubstep pour le coup...) et c'est assez simple à coder (comment dire, super simple!). Techniquement, j'ai préférer utiliser 2 LED histoire d'avoir un peu puissance (elle font 17 candela chacune, soit l'équivalent de 17 bougies). Elle sont 2 mais le câblage fait qu'elle sont alimentées et donc commandées par la même broche. Pour activer la fonction stroboscope, un bouton est dédié et permet de tourner entre 4 modes eux aussi stocké sous forme de tableau.
La fonction stroboscope en pleine action.

Les boutons
Ils sont au nombre de 2 et permettant de gérer la totalité des fonctions! Le bouton "mode" permet de démarrer le mode "soirée" et ensuite de sélectionner le numéro de séquence pour les leds de couleur.
Le 2eme active la fonction stroboscope et permet ensuite de passer d'un mode à l'autre.
Lorsqu'on appuit sur le bouton alors qu'on utilise le stroboscope, les spots reviennent dans leur état précédent et c'est aussi valable pour un retour au mode stroboscope. C'est ainsi que vous pouvez choisir votre séquence dans chaque mode sans influer sur l'autre et surtout activer le stroboscope sans pour autant devoir faire le tour des séquences de couleur à chaque fois.
Enfin, la dernière possibilité est un appuis simultané sur les 2 boutons. Cette action aura pour effet d'éteindre ou d'allumer la LED d'ambiance qui s'allume seule au départ. Bien sûr, lors de cette action, aucun autre changement (couleur ou strobo) n'a lieu...en théorie.

La LED d'ambiance
Un de mes amis m'a ramené un galet lumineux qui contient justement une led RGB qui change de couleur toute seule. J'ai donc récupérer la LED et la résistance et ait adapté la chose à mon projet.
Cette led consomme 10mA sous une tension légèrement variable située autour de 2.8V. La résistance était  prévue pour une alimentation de 3V; il m'a donc fallut l'adapter:
R=(E-Ud)/I
Avec:
E= 5 V
Ud= 2.8V (mesuré)
I=10mA (calculé depuis le montage en 3V)
On trouve
R=220 ohm
J'ai donc pris une résistance de cette valeur.
Si vous n'etes pas à l'aise avec les LED, n'hésitez pas à consulter mon article: "Petites bases sur les LED"

L'alimentation
Je n'ai pas été chercher très loin pour trouver comment alimenter le montage. Comme en général on utilise un PC, l'USB m'a paru le plus simple. Celui-ci a une tension de 5V (celle du microcontrolleur donc) et peut fournir un courant compris entre 500 mA et 1A, soit largement assez pour ce projet. Certain pourraient penser "Cool, il peut gérer ses spots depuis un logiciel"...hé bien non! Je n'avais pas le temps ni les connaissances pour aller aussi loin. Les fils de donnée sont donc protéger par leur gaine de base ainsi qu'une gaine thermorétractable. Si dans la version actuel il n'y aucune protection, je songe à rajouter une diode pour éviter les problèmes en cas de court-circuit ou d'inversion de polarité (risque très faible sur un port usb).

Le montage
C'est la partie la plus difficile du projet. Rentrer autant de composants dans une boîte de tic tac c'est un peu comme essayer de mettre le plus de monde possible dans une voiture...
Il faut penser à tout et visualiser précisément l'emplacement de chaque composant avant même de commencer le montage! Le plus dure pour moi a finalement été de gérer la place nécessaire au moment de rentrer les composants dedans.
Tout est soudé à l'extérieur de la boîte et en optimisant au maximum la place et la rigidité. La masse est donc commune à toute les LEDs et ce sont leur pattes d'origine qui sont soudées entre elles. Je peux vous assurer que cette partie là est très solide!
Les différentes LEDs soudées par la masse.
Mise en place pour la soudure des LEDs aux broche de l'Atmega 8.
Pour les alimenter, il faut connecter les résistance. Chance pour moi, les résistances fournies avec mes leds viennent de chine et ont des pattes très fines donc facile à tordre et à placer. Pour rigidifier, la résistance est collée le long de la patte positive de la led.
L'alimentation générale du circuit arrive directement aux pattes de l'atmega 8. La masse est répartie via les pattes des LED et le VCC est utilisé uniquement pour les boutons et dispatché par l'une des résistances pour les boutons.
Ces dernier sont soudés différemment. Le bouton Stroboscope est fixé de manière rigide à l'aide d'une résistance aux pattes large et assez dures ainsi qu'un fils rigide lui aussi. Le bouton mode est maintenu par 2 fils souples/élastiques qui doivent autoriser l'ouverture de la boîte sans empêcher le fonctionnement.
Les LED sont maintenues par des trous dans la boîte. Trois d'entre eux ont été fait avec une perceuse (mèche métal) et les 2 autres à l'aide du fer à souder (ouais, en mode gros bourrin! ^^) car une fissure a fait que la perceuse ne rentrait pas. Le tout n'est pas très droit mais bon, c'est plutôt pas mal vue l'aspect général du montage...
Le montage dans son état final.


Fonctionnement
Le montage a été testé pendant plusieurs heures (au moins 5h non stop) avec le programme final et sur la plaquette d'essai. Seul un petit test d'une heure a pour l'instant été effectué sur la version finale.
Le montage ne chauffe pas et ne bug pas, il est donc validé pour être utilisé.
Maintenant à l'usage on note quelques soucis notamment due à l'horloge interne, peu rapide, de l'atmega 8. Par exemple, les boutons sont détecté relativement lentement et les tests ont un temps non négligeable (de l'ordre de 10 à 30ms selon mes estimations). C'est pourquoi j'ai dû corriger les valeurs pour le stroboscope et qu'elles ne sont pas les même dans le code que sur la feuille. Par contre, comme on utilise des séquences de 20 éléments, le BPM est généralement correcte, on perçois juste un blanc quand la boucle est finie (si on connais la séquence).
Si en théorie l'appui simultané sur les 2 boutons n'affecte que l'état de la LED d'ambiance, il arrive parfois qu'on ait pas appuyé convenablement et on passe donc d'un mode à l'autre ou d'une séquence à l'autre. Avec un peu d'habitude on arrive à éviter cet effet indésirable.

Consommation
J'ai fait quelques mesures afin de vérifier que le montage était dans les normes imposées par l'atmega 8 et l'USB. La valeur moyenne est prise "à vue", autrement dit c'est pas calculé...


Améliorations possibles
L'utilisation d'un microcontrôlleur permet de faire des mises à jour. Comme l'atmega 8 a pas mal de ressources, on pourrait encore rajouter des fonctions. Par exemple, une gestion PWM permettrait de corriger les intensité lumineuses (le vert est bien plus lumineux que les autres) ou d'autoriser un mode "Loundge" plus lent. Le format boîte tic tac est un peu petit pour rajouter physiquement des choses dessus mais comme le code est très adapté aux led RGB, on peut s'en servir comme base.
Je songe à utiliser ce que j'ai appris de ce projet pour remettre sur pied l'ancien et ajouter plein d'autre fonctions. Les boutons pourrait être gérer par interruption afin de ne pas perdre du temps avec les test. On gagnerait en vitesse de fonctionnement avec un oscillateur ou un quartz. L'ADC pourrait être utilisé pour acquérir un signal (micro ou entrée ligne) et ainsi faire varier les couleurs fidèlement à la musique. Un couplage PWM + LED RGB permettrait d'avoir des couleurs encore plus sympa!
Cette idée peut s'appliquer à la boîte de tic tac: vous mettez 3 LEDs RGB au lieu de 3 LED de couleur. Vous n'avez pas besoin de plus de broches, vous avez plus de lumière, plus de couleurs mais par contre ça peut consommer plus...
A la base, je pensais mettre une prise micro-usb puisque désormais tous les smartphones utilisent ce standard, ça aurait juste une boîte et on pouvait prendre le câble sur place au lieu de l'avoir toujours avec la boîte (du coup il prend plus de place que la boîte de tic tac...).

Si vous avez des remarques ou des suggestions, n'hésitez pas à poster un commentaire! :)