Afficheur alpha-numerique xPL

De MicElectroLinGenMet.

Sommaire

Description

Ceci est mon premier projet utilisant la plate-forme Arduino . Plate-forme de développement à base de micro-contrôleur AVR très diffusée sur le net.


Le but de ce montage, c'est de remplacer une horloge évoluée placée dans le salon qui permet d'afficher des informations supplémentaire comme la t° extérieure ou le nombre de mails reçus.


Actuellement, celle-ci utilise une interface personnel i2c avec un afficheur i2c (SAA1064) 4 digits 7 segments. Cette interface est pilotée par une machine Linux.


Cette nouvelle version à base de carte Arduino et de schield ethernet necessitera uniquement une alimentation électrique et une liaison réseau. De plus les 4 digits 7 segments ont été remplacés par 4 digits 16 segments permettant un affichage de messages alpha-numémriques.


Matériel utilisé:

  • Carte Arduino + ethernet schield ou carte regroupant les 2 (Arduino Ethernet Pro).
  • Circuit horloge RTC i2c PCF8583 pour la gestion de l'heure avec condo. de sauvegarde.
  • Circuits d'entrée/sortie 3x PCF8574 pilotant 4 afficheurs 4 digits 16+1 segments.
  • Afficheur 16 segments + 1 à anode commune.

               +-------+                 a   b
           a -o|1    18|o- b            --- ---
           m -o|       |o- n           |\  |  /|
           k -o|  - -  |o- c          h| k m n |c
           h -o| |\|/| |o- p           |  \|/  |
           u -o|  - -  |o- r            -u- -p-
           s -o| |/|\| |o- d           |  /|\  |
           t -o|  - -  |o- dp         g| t s r |d
           g -o|     o |o- ac          |/  |  \|
           f -o|9    10|o- e            --- ---   O dp
               +-------+                 f   e


Cablâge sur les ports des PCF8574:

PCF1:  7  6  5  4  3  2  1  0 
       a  m  k  h  u  s  t  g
      
PCF2: 15 14 13 12 11 10  9  8 
       f  e  d  r  p  c  n  b		    	    
     
PCF3:  7  6  5  4   3   2   1   0
       dp -  -  -  ac3 ac2 ac1 ac0
      


Principe de fonctionnement

  • L'Arduino + l'Ethernet-Schield relié au réseau affiche l'heure et périodiquement affiche la t° intérieure / extérieure reçues par messages xPL sensor.basic.
  • La carte permet aussi d'afficher des messages texte reçu par xPL avec le shema osd.basic, un buzzer est utilisé pour signaler l'arrivée des messages.
  • L'horloge peux être mise à jour par message xPL clock.update


L'afficheur est géré directement par l'Arduino (pas de circuit dédiè) en mode interruption timer. A chaque période du timer, un digit est affiché.

Ports de l'Arduino utilisés:

  • Pins 10,11,12,13 et 4 (SD) utilisées par Ethernet Schield.
  • Pins 9 pour le buzzer.
  • Pins AN4 port SDA I2C et pins AN5 port SCL I2C, permet de piloter l'horloge i2c ainsi que les 3 ports I/O des afficheurs.




Après les tests, l'Arduino + l'Ethernet-Schield ont été remplacé par L'Arduino Ethernet Pro de chez SparkFun. Un Arduino avec chip ethernet W5100 intégré à la carte.


Arduino Ethernet Pro


Le Programme

  • Version IDE Arduino: 022
  • Programmes externes utilisés
  1. Librairie Ethernet fourni avec l'IDE.
  2. Librairie i2c (Wire) fourni avec l'IDE.
  3. Librairie PCF8583 légèrement modifiée pour gérer un retour d'erreur (Source: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1276499944),
  4. Fonctions xPL reprise du projet http://smhteam.info/blog/2011/06/17/arduino-controler-un-ruban-de-leds-rgb-avec-xpl-et-domogik-donc/


Aprés initialisation du réseau, de horloge RTC et de l'afficheur (message INIT au boot), la boucle principale vérifie la réception UDP sur le port xPL configurés, analyse les messages xPL reçus, extrait les données sensor.basic, clock.update et osd.basic et exècute les actions correspondantes.

Le reste du temps, la boucle affiche l'heure à la seconde 'mn + 0' puis la t° intérieure à la seconde 'mn + 6' suivi de la t° extèrieure à 'mn + 12'.
Si la t° enregistrée est trop ancienne, un affichage spécifique est affiché pendant 1 heure puis plus d'affichage autre que l'heure pour signaler qu'il n'y a plus de réception de la donnée par xPL.


  • Programme en 4 sketchs (xpl_aff4d16.tgz): xpl_aff4d16.pde, app.pde, display16seg.pde, xpl.pde.
  • Librairie PCF8583 légèrement modifiée pour retourner un code retour à l'init. (PCF8583.tgz).


  • Messages xPL de test (xpl-sender fait partie de la libxpl-perl):
Mise à l'heure de l'horloge
$ xpl-sender -m xpl-stat -c clock.update time=20110731234500
ou
xpl-sender -m xpl-stat -c clock.update time=$(date "+%Y%m%d%H%M%S")
Envoie d'un Message 
$ xpl-sender -m xpl-cmnd -c osd.basic command=write text="BONJOUR DOMOS" delay=2	  (text uniquement en majuscules, delay indique ici le nombre de fois que le message sera affiché)


Schéma et photos du montage

  • Shéma


  • Photos
Vue du montage avec affichage de l'heure
Vue du montage avec affichage de la température


  • Vidéo

Vue de l'afficheur en fonctionnement avec défilement de messages: http://www.youtube.com/watch?v=1BIM9ogc6E4



Août 2011