Overblog
Suivre ce blog Administration + Créer mon blog
1 mai 2012 2 01 /05 /mai /2012 21:55

L'Arduino est une carte construite autour d'un micro-contrôleur ATMega d'ATMEL, qui se programme en C.

 

L'environnement de développement Arduino est une version très simplifiée des environnements de développement que connaissent les informaticiens (comme moi).

 

De plus l'Arduino dispose de librairies qui facilitent le développement en permettant de s'affranchir en particulier des calculs booléens sur les masques de bits propres aux entrées/sorties avec les micro-contrôleurs (mais on y a toujours accès si on le souhaite).

 

Mais bon, l'IDE de l'Arduino est extrèmement pauvre, du moins à mon sens. J'ai donc vite cherché des alternatives.

Bon y'a Eclipse, mais bon... je passe mes journées à pester contre Eclipse alors j'avais pas trop envie de le retrouver à la maison le soir.

Il y a aussi AVRStudio, fourni gratuitement par ATMEL pour développer avec leurs micro-contrôleurs.

C'est basé sur MS Visual Studio, avec bien sûr du code-assist, et même un émulateur et un débuggueur.

Bon ça ne simule pas ce qu'il y a autour du micro-contrôleur mais on peut en voir l'état de tous les registres et des ports d'entrée/sortie.

Il faut cependant configurer AVRStudio pour fonctionner avec un Arduino (en particulier trouver les librairies, configurer le programme de transfert du code dans l'Arduino, etc...) c'est pas tout simple mais heureusement on trouve un très bon tutoriel.

 

Il me reste à configurer le transfert dans l'Arduino, parce que je n'aurai mon Arduino que... demain!

 

Mais bon, j'ai pu tester un exemple dans l'émulateur.

On trouve aussi un émulateur open-source capable d'émuler quelques composants hardware, Emulare. Malheureusement ce projet semble en sommeil depuis 2010. Ca fonctionne, mais les composants disponibles sont très limités.

 

Je vais donc en rester aux tests dans AVRStudio et aux bons vieux logs envoyés via le port série.

 

A noter qu'il est possible de débugguer un ATMega in-situ mais ça nécessite une carte AVR Dragon par exemple qui ajoute encore plusieurs dizaines d'euros au coût de l'ensemble. Mais si on développe de nombreux projets c'est certainement intéressant d'investir dans ce genre de chose.

Partager cet article
Repost0
1 mai 2012 2 01 /05 /mai /2012 21:41

Après de longues heures de cogitations voici le schéma initial de l'horloge, les versions successives sont indiquées plus bas:

 

Arduino Sketch - Max7219 1.2

 

Le récepteur DCF-77 n'est pas disponible dans Fritzing. C'est un composant additionnel que j'ai fait et que je soumettrai à la communauté dès qu'il sera complètement terminé.

 

J'ai dû opter pour un contrôleur de LED MAX7219 car je n'avais pas assez d'entrées/sorties disponibles sur l'Arduino.

Le MAX7219 peut piloter une matrice de 8*8 LED, et on peut en chaîner plusieurs facilement.

 

L'horloge RTC est nécessaire car la réception DCF77 n'est pas toujours très fiable. On n'est pas sûr de forcément capter le signal, et on n'est pas sûr de recevoir une trame complète correcte par minute.

De plus  à la mise sous tension  il faut au moins 2 minutes pour recevoir l'heure.

On doit donc recourir à une horloge RTC qu'on remet à l'heure précise régulièrement avec l'heure reçue par DCF-77.

Après avoir comparé les prix des composants seuls et de la breakout board chez Adafruit Industries, j'ai opté pour celle-ci, on a un kit complet pour moins cher que les composants achetés en France (environ 15 euros).

 

On a aussi :

  • un capteur de lumière à base d'une LDR qui va servir à ajuster la luminosité de l'horloge en fonction de la luminosité ambiante.
  • Un capteur de présence infrarouge pour allumer/éteindre l'affichage en fonction de la présence de personnes à proximité
  • Un système de capteurs sans contact qui sera expliqué plus loin, pour régler l'heure.

 

Bref elle n'est pas aussi simple que ça cette horloge en fait! (ce qui n'est pas pour me déplaire).

 

 

Version 1.5:

Le schéma ci-dessous apporte les changements suivants:

  • Horloge RTC sous forme de breakout-board
  • Alimentation de l'horloge RTC et du récepteur DCF77 via la pin 12 (pour gestion du mode économie d'énergie quand l'écran est éteint).
  • Note: l'alim du récepteur DCF77 sera probablement passée en 3.3v quand j'ai trouvé ses spécifications exactes.

 

cibiao 1.5

 

 

Version 1.6:

Le schéma ci-dessous apporte les changements suivants:

  • Alimentation du module DCF77 en 3.3v
  • Ajout d'une led témoin de non-synchronisation DCF77
  • Changement pin d'alimentation de l'horloge RTCcibiao_1.6.png

Version 2.0:

Suite à une trop grande instabilité des capteurs capacitifs, je les ai remplacé par de simples poussoirs placés sur le dos de l'horloge. C'est simple, efficace et ça allège le circuit de quelques composants.

Le schéma final de l'horloge est donc:

Arduino Sketch final - V2.0

Partager cet article
Repost0
1 mai 2012 2 01 /05 /mai /2012 21:36

Pour ce premier projet j'ai choisi d'acheter un kit de démarrage Arduino.

Après avoir longuement comparé les kits existant j'en ai trouvé un impeccable sur leboncoin.

Prix très compétitif et dans ma ville en plus.

Il n'a pas la dernière version, c'est un Duemillanove (2009) mais c'est très bien pour ce que je veux faire.

 

J'ai aussi pris des composants pour pouvoir par la suite ne mettre que le microcontrôleur et les composants annexes nécessaires dans l'horloge, et ré-utiliser la platine de prototypage.

Partager cet article
Repost0
1 mai 2012 2 01 /05 /mai /2012 21:26

Après avoir étudié diverses solutions j'en suis venu à utiliser un cadre Ikea noir de 23*23*4.5cm

Il est suffisamment profond pour pouvoir contenir les leds et l'électronique et parfait pour la matrice d'affichage prévue: 8*5 caractères. Pour une horloge française il faudrait prévoir du 10*10 ou du 10*11 et probablement un cadre plus grand.

 

J'ai fait une maquette pour avoir une idée du rendu et voici ce que ça donne:

2012 04 29 3999

Je vais laisser le film plastique de protection du cadre jusqu'à la fin du projet.

Le centrage du fond n'est pas parfait, mais c'est juste une maquette.

 

Les zones noires en haut et en bas contiendront respectivement le capteur de lumière ambiante et le capteur de présence à infra-rouge.

 

J'ai donné un nom à cette horloge: elle s'appelle se biao (les deux caractères rouges sur la seconde ligne). Ca signifie littérallement "horloge à caractères".

Les autres caractères en rouge indiquent 7h et demie. (normalement on aurait aussi d'autres caractères allumés sur la première ligne).

 

Le cadran final sera fait d'une ou deux épaisseurs de transparent de rétro-projection sur lequels le cadran sera imprimé.  Reste à déterminer la teinte des caractères. Je vais faire prochainement des essais entre le transparent, différentes nuances de gris et de rouge sombre et voir ce qui donne le mieux avec et sans led allumée en fond.

 

Partager cet article
Repost0
1 mai 2012 2 01 /05 /mai /2012 21:15

Il y a quelques jours au hasard d'une discussion de bureau je découvrais cette horloge. C'est une horloge qui affiche l'heure en toutes lettres.

Intrigué je me suis dit que ça semblait faisable simplement avec un Arduino.

J'ai donc...passé la nuit à y penser!

Et je me suis dit que ça serait une bonne occasion de pratiquer l'Arduino, dont j'entends parler depuis si longtemps.

 

J'ai vite découvert qu'on en trouve tout un tas de clones, avec pas mal de démos sur youtube.

En remixant un peu tout ce que j'ai pu voir, j'ai établi une sorte de cahier des charges de ma future horloge:

 

  • Réglage automatique de l'heure via un radio-pilotage DCF77
  • Réglage manuel de l'heure (en cas de non-réception du signal radio) via une interface sans contact
  • Réglage automatique de la luminosité
  • Détection automatique de présence pour éteindre l'horloge quand personne n'est dans la pièce, et l'allumer quand quelqu'un y arrive.
  • Mode démonstration où l'heure s'incrémente d'une minute chaque seconde, déclenchable par un "appui" simultané sur les "boutons" de réglage de l'heure et des minutes, et qui s'arrête après un cycle complet.
  • Optimisation de la consomation électrique en utilisant le mode de sommeil du micro-contrôleur quand l'affichage est éteint.
  • Enfin, last but not least, l'affichage de l'heure se fera en chinois. Je suis sinisant, sinophile et je trouve que c'est très joli graphiquement. En plus ça apprendra à mes enfants et à ma femme à lire l'heure en chinois .

 

Nous voilà donc prêts pour notre premier projet à base d'Arduino.

 

 

 

Partager cet article
Repost0