6 minute(s) de lecture

PiClock 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).

Vidéo démonstrative

Matériel nécessaire

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 (avec wifi et connecteur GPIO): 15 €
  • microSD card 16Go sandisk A1 (8Go suffisent): 7€
  • Bloc d’alimentation 5V 3A jack: 10€
  • Un anneau de 60 leds RGB 172mm: 30€
  • 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 ça risque fort de ne pas fonctionner (mauvaises dimensions et non compatible).

composants électroniques:

  • 4 résistances (1/4W) 10kΩ
  • 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
  • Installer ensuite la bibliothèque python HT16K33 d’Adafruit qui va permettre de commander l’afficheur 7 segments via son backpack. Très simple:
pip3 install adafruit-circuitpython-ht16k33
sudo apt-get install python3-pil
  • Sécuriser la carte SD en déportant les écritures de logs directement en RAM:
    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

PiClock 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é.

PiClock

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.
assemblage

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).

Impression 3D d’un boîtier et pied

modélisation 3D

Dans la section 3D_STL du Github du projet vous trouverez les fichiers STL qui permettent d’imprimer un boîtier composé d’une coque en 2 partie et d’un pied optionnel.

  • coque_basse.stl: partie arrière du boîtier avec un passage pour y loger une vis de fixation à un mur (pied inutile dans ce cas)
  • coque_haute.stl: partie qui vient recouvrir le LCD, avec des rehausses de bouton poussoir intégrés.
  • pied.stl: il permet de poser l’horloge légèrement inclinée sur une surface plate sans le fixer contre un mur.

PiClock