Après avoir récupéré tout plein de LEDs RGB (rouge, vert et bleu dans la
même LED), j'ai pu réaliser une idée qui me trottait dans la tête depuis
un petit moment, une horloge binaire avec un affichage simultané de
l'heure (en bleu), des minutes (en rouge) et des secondes (en vert).
Chaque LED affiche donc une couleur, combinaison de ces trois couleurs.
L'horloge est contrôlée par un Arduino, qui pilote un driver de LEDs
TLC5940 de Texas Instrument, qui permet de générer 16 signaux PWM.
L'avantage d'utiliser des signaux modulés est de pouvoir régler la
luminosité des LEDS en fonction des combinaisons de couleurs. En effet
avec des signaux tout ou rien, une couleur seule (rouge par exemple)
serait beaucoup moins brillante que le blanc, qui est générée en
allumant les 3 couleurs. Le TLC5940 est disponible en sample sur le site
de TI. Par contre j'en avait commandé 5, et j'en ai reçu seulement un...
Pour l'application, j'utilise la bibliothèque TLC pour Arduino, qui
permet de communiquer avec ces contrôleurs de LED de manière très
facile. Pour le décompte du temps, j'ai fait au plus simple, sans
utiliser les timers de l'ATMega, d'ailleurs comme écrit dans les
commentaires, l'horloge ne pourra pas fonctionner correctement très
longtemps. En même temps je ne sais pas quelle est la précision des
timers...
#include "Tlc5940.h"bytes;// seconds, in GREENbytem;// minutes, in REDbyteh;// hours, in BLUEstaticunsignedlongtime;// "cheap" timervoidsetup(){// Initialisation of the TLCTlc.init();Tlc.clear();Tlc.update();delay(1);// Set the hour here...h=10;m=30;s=0;time=millis();}voidloop(){// if 1000ms are passed, update the clock.// /!\ the clock will die after the millis() counter// will roll back to 0, but it will stand at least// for about 50 days, which is enough for my test...if(millis()-time>999){time+=1000;updateClock();for(bytei=0;i<6;i++)setColor(i);Tlc.update();delay(1);// 1ms delay to update TLC}}// This function is called every second,// and update the hours, minutes and seconds.voidupdateClock(){++s;if(s>59){s=0;++m;}if(m>59){m=0;++h;}if(h>11)// 12 hours version, I don't have enough outputs for 24 hours...{h=0;}}// This function sets the levels of each color// in order to have better colors with the same// level of brigthness (instead of just setting// the signals full on or off)voidsetColor(byten){booleang=(s&(1<<n));booleanr=(m&(1<<n));booleanb=(h&(1<<n));intred,green,blue;if(!r&&!g&&!b){//BLACKred=0;green=0;blue=0;}elseif(!r&&!g&&b){//BLUEred=0;green=0;blue=4000;}elseif(!r&&g&&!b){//GREENred=0;green=4000;blue=0;}elseif(!r&&g&&b){//CYANred=0;green=1500;blue=1500;}elseif(r&&!g&&!b){//REDred=4095;green=0;blue=0;}elseif(r&&!g&&b){//MAGENTAred=3000;green=0;blue=2000;}elseif(r&&g&&!b){//YELLOWred=3000;green=2000;blue=0;}else{//WHITEred=3000;green=2000;blue=1000;}Tlc.set(n,red);Tlc.set(n+6,green);if(n<4)Tlc.set(n+12,blue);}
Pour terminer ce projet, je compte utiliser un module RTC (Real Time Clock) qui me permettra de sauvegarder l'heure après la mise hors tension de l'Arduino, et utiliser des balles de ping-pong pour diffuser la lumière des LEDs !
Premier hack avec l'Arduino : le Minitel. Le Minitel n'est ni plus ni
moins qu'un terminal série, avec des standards d'encodage des caractères
préhistoriques. C'est donc après une bonne après-midi de boulot (le
temps de dompter le dinosaure) que j'ai réussi ce petit hack.
La méthode est loin d'être simple, j'ai dû utiliser un vieux programme
MSDOS permettant de convertir des images en mode Videotex, puis faire
quelques retouches pour afficher cette image avec une résolution
phénoménale de 80*72 pixels sur 4 niveaux de gris...
Récemment (cela fait qund même presque 2 mois maintenant), Arduino a
lancé une nouvelle version de ses cartes de développement maintenant
célèbres. Les cartes Arduino Duemilanove et Mega ont subis quelques
modifications et sont renommées en Arduino Uno et Arduino Mega2560.
Le packaging de l'Arduino Uno, qui peut facilement faire
penser à un autre produit... ;-)
Depuis le temps que je lorgnais sur ces cartes, j'en ai profité pour
commander des Arduino Uno, et en bon fan d'électronique, je vous propose
un "unboxing" de la nouvelle Uno.
Après avoir ouvert la boîte, on trouve la platine Uno, un set
d'autocollants très sympathique et un petit dépliant explicatif :
Petite remarque, sur une des cartes que j'ai acheté, la soudure du
composant gérant l'USB (une puce Atmel en passant) n'a pas été nettoyée,
et il y a quelques résidus de flux de soudure, ce qui n'est pas très
propre :
Le packaging est donc assez sympathique, mais j'aurais aimé que la carte
soir un peu plus protégée, ne serait-ce que par un sachet plastique pour
éviter que la poussière du carton d'emballage ne salisse la carte et ne
se loge dans les connecteur, même si je n'ai pas eu de problèmes de ce
côté-là. De même, l'ajout de petits patins afin d'isoler la carte par
rapport à une table par exemple aurait été bienvenue. Enfin, l'ajout de
goodies est appréciable, pour revendiquer son appartenance à la
communauté Arduino !
La carte est ensuite très simple à utiliser. Il suffit de se rendre sur
le site Arduino, de télécharger l'IDE de développement et de se
laisser guider avec les exemples de base !
Par rapport à la version précédente, voici ce qui a changé dans la
version Uno :
Un nouveau design, avec des informations plus explicites sur les
pins,
Une puce Atmega8U2 qui fait convertisseur USB-Série, en lieu et place
de l'ancienne puce FTDI, qui peut être reprogrammée pour créer de
vrais périphériques USB,
Un bootloader plus rapide, plus léger, donc plus de place pour le
programme utilisateur (+1,5Kb).
J'ai pas mal de projets à faire avec cette carte, il ne me reste donc
plus qu'à me mettre au travail !
Après deux ans de classe prépa puis trois ans à l'École Centrale de
Nantes, je suis devenu officiellement ingénieur. Outre le fait que
ceci a changé le titre de mon site, j'ai aussi changé de région.
Après mon stage de fin d'études sur Paris (au passage je passe le
bonjour à toutes les personnes que j'ai connues là-bas), je suis revenu
dans ma Bretagne natale pour travailler dans le domaine qui me passionne
le plus : la robotique mobile.
Au passage, je rempile pour une année à la Coupe de France de
Robotique avec une équipe nouvellement crée, Atlantronic. Cette
équipe est composée d'un groupe d'anciens étudiants qui ont déjà
participé à la coupe. Nous espérons que notre expérience nous aidera à
créer un robot simple et performant !
Enfin, j'ai plein de projets en tête, et j'espère avoir du temps pour
les réaliser et les partager ici !
Les mots de passe nous servent tous les jours, aussi bien en utilisation
professionelle que personnelle. Dans cet article, je vais vous expliquer
la méthode que j'utilise pour gérer facilement mes mots de passe.
Voici les principales contraintes que je souhaite respecter :
Avoir un mot de passe différent pour chaque site ou service que
j'utilise (ainsi, si une personne mal intentionnée récupère mon mot
de passe, il ne fonctionnera pas ailleurs)
Avoir un seul mot de passe à retenir (en fait deux : un pour tout
ce qui est perso, et un pour le boulot)
Pouvoir modifier facilement mon mot de passe
Tout d'abord, il faut choisir un mot de passe de base, constitué de
caractères minuscules, majuscules, chiffres et caractères spéciaux (sauf
" et ', on n'est jamais à l'abri d'un site mal codé). Pour cela, le plus
simple est d'aller sur un site de génération de mot de passe, comme
celui-ci. Ensuite, je génère plusieurs mots de passe, jusqu'à en
trouver un qui puisse s'écrire relativement rapidement. En effet, mon
mot de passe sera long et je le tape souvent, donc autant que se soit
agréable. Par exemple, prenons cette base de 12 caractères :
8;M*w1/mEF2é
Ensuite nous allons utiliser cette base pour créer un mot de passe
unique pour chaque site. Pour l'exemple, prenons par exemple Google,
Twitter et Flickr. Bien sûr, il ne faut surtout pas faire ceci :
8;M*w1/mEF2éGoogle
8;M*w1/mEF2éTwitter
8;M*w1/mEF2éFlickr
En effet, la découverte d'un mot de passe mettra à mal tous les
autres... L'idée, c'est de camoufler la spécificité du site au sein du
mot de passe. Pour ceci, on peut utiliser plein de méthodes
différentes, et les combiner ou les adapter comme on le souhaite. Par
exemple :
Ajouter le nombre de lettres du nom du site moins une au début du mot
de passe
Ajouter le nombre de voyelles dans le nom du site à la fin du mot de
passe
Utiliser la 3ème lettre du nom du site en 5ème position dans le mot
de passe et en majuscule
Utiliser la lettre suivante dans l'alphabet de la première lettre du
nom du site en 7ème position
Bien sûr, ceci peut paraître très compliqué au premier abord, mais cette
gymnastique arrive très vite. Pour les trois sites cités précédemment,
on arrive alors en appliquant ces règles à :
Google: 58;Mo*Hw1/mEF2é3
Twitter : 68;Mi*Uw1/mEF2é2
Flickr : 58;Mi*Gw1/mEF2é1
On arrive ainsi à trois mots de passe assez différents, tout en ayant un
seul mot de passe à retenir. En voyant la longueur finale du mot de
passe, on se rend bien compte qu'il faut que la base soit facilement
saisissable. Mais en tapant 10 fois le mot de passe par jour, ça devrait
rentrer !
Les deux premières contraintes sont donc satisfaites. Pour pouvoir à
l'avenir changer facilement les mots de passe de tout mes sites, c'est
très simple, j'enregistre dans un fichier l'adresse de changement de mot
de passe de chaque site, et ainsi je n'en oublie aucun lorsqu'il s'agit
de tout changer !
Je peux paraître un peu paranoïaque, mais il y a énormément de sites
qui stockent les mots de passe en clair, par exemple les sites
carrières de grandes entreprises. Et il devient donc potentiellement
très facile pour des personnes malveillantes d'aller explorer votre vie
privée avant une éventuelle embauche !
Voilà, j'espère vous avoir donné des astuces utiles...