piClock: une horloge lumineuse

Mis à jour : mai 5


Ce tutoriel explique comment créer une horloge lumineuse à l'aide d'un raspberry pi zéro aux commandes d'un anneau de 60 leds RGB et d'un afficheur 7 segments adafruit de grande taille (1,2"). Un bouton "off" permet d’éteindre correctement tout le système, et un autre bouton poussoir "select" permet quand à lui de modifier le style de l'horloge, avec une option d'extinction de l'anneau de leds (extinction automatique de l'anneau à minuit). Je compléterai ce tutoriel plus tard d'un boitier imprimé 3D sur mesure (pour cacher l'électronique) quand je serai équipé d'une imprimante 3D.


Vidéo démonstrative





Matériel nécessaire et coût


compter une bonne centaine d'euros pour réaliser cette horloge: les afficheurs 7 segments de grande taille ainsi que l'anneau de leds et l'impression du circuit imprimé au format 172*172 mm ne sont pas donnés.


matériel spécifique:

  • Un raspberry pi zéro WH (wifi et connecteur GPIO): 15 €

  • microSD card 16Go sandisk A1 (8Go suffisent): 7€

  • Bloc d'alimentation 5V 3A jack: 10€

  • Anneau 60 leds RGB 172mm: 30€

  • 7 segment-display adafruit 1,2" + backpack: 24€

  • Carte PCB : 30€ (télécharger les fichiers GERBER sur mon github)

  • Non indispensable mais très pratique pour installer le système: prévoir une alim Raspberry pi, un câble mini-HDMI vers HDMi (attention la sortie hdmi d'un piZERO c'est du mini-HDMI: les câbles micro-HDMI des pi3 et pi4 ne sont pas compatibles), et très pratique pour brancher clavier, souris + le réseau ethernet: un HUB USB avec prise ethernet + 2 usb: le réseau et le clavier et souris sont ainsi récupérés via le mini-usb unique du piZERO c'est très très pratique pour installer et mettre à jour son piZERO.


Attention à bien prendre un anneau de leds RGB (et non pas RGBW), entiers (certains modèles sont vendus par 1/4 d'anneau et il faut dans ce cas en acheter 4 puis les souder, et ça revient 2 fois plus cher ...) et compatible avec la bibliothèque Neopixel d'Adafruit. Si vous achetez autre chose que celui indiqué (par exemple une mauvaise copie chinoise à bas prix sur ali...) ça risque fort de ne pas fonctionner (mauvaises dimensions et non compatible).

composants électronique: 5€

  • 4 résistances (1/4W) 10

  • 2 boutons poussoir 6mm type NO

  • 2 condensateurs céramiques 100nF

  • 1 condensateur chimique polarisé 470uF

  • 1 barrette 2*20 pin femelle à souder, 2.54mm (pour raspberry pi)

  • 1 connecteur jack DC femelle à souder

  • 1 bornier 3 pins 2.54mm à souder (pour brancher l'anneau)


Installation du système sur le Raspberry pi


  • Commencez par Installer Raspbian Lite sur votre SD Card (nous n'aurons pas besoin d'interface graphique). Si vous n'êtes pas équipés de clavier/souris il faudra procéder à une installation depuis un autre ordinateur via SSH.

  • Activez le WIFI sur votre piZERO ( sudo raspi-config -> 2 - Network Options -> N2 wi-fi)

  • Réglez bien la localisation en fonction de votre pays (sudo raspi-config -> 4 Localisation Options -> I2 Change Timezone -> Europe (dans mon cas) -> Paris (dans mon cas)

  • Activez l'interface I2C: sudo raspi-config -> 5 Interfacing Options -> P5 I2C et cliquer sur "Oui/Yes". L'afficheur 7 segment va communiquer via cette interface.

  • Installer la bibliothèque python Adafruit Neopixel (elle va permettre de commander l'anneau de LEds RGB). C'est très simple:


sudo apt install python3-pip
sudo pip3 install adafruit-circuitpython-neopixel


pip3 install adafruit-circuitpython-ht16k33
sudo apt-get install python3-pil


sudo nano /etc/fstab
    # recopier/coller ces 3 lignes à la fin du fichier
tmpfs /tmp tmpfs defaults,noatime,nosuid,size=10m 00 tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=10m 00 tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=10m 00
    # CTRL-O pour sauver, puis CLTR-X pour quitter

  • On y est presque ! il reste à récupérer le code Python qui gère toute l'horloge, directement sur mon github,avec ces commandes:


git clone https://github.com/papsdroidfr/piClock
ls -l

Vous devriez voir un répertoire nommé piClock sur /home/pi avec à l’intérieur les fichiers GERBER files zipés (ne servent à rien à ce stade) et le programme python piClock.py


  • Dernière étape pour que le programme puisse s’exécuter automatiquement au démarrage du Raspberry pi, ajouter ceci dans le fichier /etc/rc.local:


sudo nano /etc/rc.local
    # à la fin du fichier, juste avant exit 0 ajouter ceci:
sudo python3 -u '/home/pi/piClock/piClock.py' > '/var/log/piClock.log' 2>&1 &
    # CTRL O pour sauvegarder, puis CTRL-X pour quitter

Voilà vous pouvez éteindre le raspberry pi (sudo poweroff) il sera prêt à démarrer et piloter l'horloge tout seul quand il sera branché sur le circuit imprimé.


Circuit Electronique



Pour obtenir le circuit imprimé fait sur mesure pour l'anneau de Leds et l'afficheur 7 segment, il faut récupérer les fichiers zippés GERBER sur mon github et passer commande à un professionnel de fabrication de circuit imprimé. Perso ça m'a coûté environ 30€ frais de port inclus en 5 exemplaires en passant par JLCPCB.


Soudure des composants

  • Commencer par placer sur le dessus: les 4 résistances, les 2 petits boutons poussoirs et les 2 condensateurs céramiques repérés par c2 et c3 sur le circuit imprimé. Les soudure doivent être réalisée au dessous.

  • Souder ensuite le condensateur polarisé c1 (à positionner au dessus comme le reste): attention au sens la patte la plus longue doit être là où est le +

  • passons de l'autre côté: au dessous du circuit imprimé pour y placer la barrette femelle 2*20 pin (soudures apparentes au dessus donc), ainsi que le petit bornier 3 points sur lequel on va brancher l'anneau de Leds.

  • Reliez au dessous une prise jack DC femelle avec des câbles soudés directement sur les +5V (fil rouge) et GND (fil noir). Les soudures sont donc apparentes au dessus.Pour protéger les courts-circuits il faut mettre un bout de chatterton (rouge) sur les soudures qui risquent de rentrer en contact avec l'électronique du backpack de l'afficheur 7 segment.

  • souder ensuite l'afficheur 7 segment directement sur son backpack avec les 5 pin header mâles comme expliqué sur le site d'Adafruit. Attention à ne pas vous tromper de sens ...

  • Enfin vous pouvez alors positionner l'afficheur et son backpack et souder les 5 pins dans les 5 trous centraux, juste en dessous du condensateur céramique c3 (attention d'avoir bien soudé d'abord le connecteur jack femelle avant !)

  • Pour brancher l'anneau j'ai sectionné le cable jst-sm femelle 3 points qui permet de brancher plusieurs anneaux en cascades et l'ai relié au bornier 3 points, afin de pouvoir y brancher l'autre connecteur jst-sm mâle dessus. Vous pouvez aussi tout sectionner pour brancher directement les fils dans le bornier ... Pour protéger les soudures apparentes sur l'anneau j'utilise un petit bout de chatterton rouge.

  • Loger ensuite le raspberry pi ZERO sur son connecteur, par dessous donc

  • Positionnez l'anneau fil vers le haut: la leds 0 doit se trouver au milieu du 12, idem pour les leds 15, 30 et 45 qui doivent être en face du 3, 6 et 9 du circuit imprimé. Pour maintenir l'anneau en place j'utilise des petits morceaux de boule gomme, ce qui permet de gérer l'occupation prises par les fils qui partent de l'anneau.


Vous pouvez maintenant brancher l'alimentation 5V sur le jack: la petite led verte du Raspberry pi zero va clignoter le temps qu'il démarre, et ensuite l'horloge démarre toute seule. Il faut laisser le temps au Raspberry pi de se connecter au wifi et l'heure va se mettre à jour toute seule (c'est normal qu'au premier démarrage l'heure affichée n'est pas immédiatement correcte).

Fonctionnalités de l'horloge


  • Le bouton "Off" permet d'éteindre tout le système

  • Le bouton "Select" permet de changer le style de l'horloge: secondes qui défilent sur l'anneau -> affichage heures (3 leds dégradées jaune/orange/rouge: la rouge est positionnée sur l'heure), minutes (led verte), secondes (led bleue) -> extinction de l'anneau

  • Extinction automatique de l'anneau à minuit (il faut appuyer sur "Select" pour relancer un style)

  • Mise à jour automatique de l'heure via le wifi

  • Quand le style de l'horloge est positionné sur le défilement des secondes, l'ambiance lumineuse change toutes les minutes (arc-en-ciel -> alternance de rouge et violet -> couleurs au hasard -> couleurs au hasard sans rouge -> couleur au hasard sans vert -> couleur au hasard sans bleu).


logo_papsdroid_64x64.png
suivre l'acutalité du blog sur Facebook:
  • Facebook Social Icône

© 2019, de papsdroid.fr,  administré depuis un Raspberry pi4