Architecture matérielle
L’appareil repose sur un microcontrôleur Adafruit Feather RP2040 couplé à une bande de 48 NeoPixel disposés autour du cadran. Le mouvement analogique est un mécanisme 24 h acheté en série, ce qui place minuit en bas du disque et midi en haut. Un module RTC (real‑time clock) assure la persistance de la date et de l’heure même lorsque l’alimentation est coupée, évitant ainsi une reconfiguration manuelle à chaque branchement.
Le boîtier et le cadran ont été découpés à la découpe laser à partir de fichiers créés dans Cuttle.xyz. La forme circulaire comporte exactement 48 LED, ce qui correspond à une subdivision horaire directe (une LED par demi‑heure). Les pièces sont assemblées avec de la colle à bois, peintes à l’acrylique et maintenues par du Blu Tack pour permettre le remplacement du disque décoratif inspiré du Zytglogge de Berne. Les connexions entre le microcontrôleur et la bande LED utilisent des connecteurs crimpés et des fils tressés, facilitant le déplacement du boîtier de commande sans soudure supplémentaire.
Logiciel et calcul solaire
Le firmware est écrit en CircuitPython et exploite la bibliothèque asyncio afin de séparer la lecture des entrées (potentiomètre, encodeur rotatif, interrupteurs) du calcul et de la mise à jour des couleurs des NeoPixel. Cette architecture asynchrone garantit que le rafraîchissement visuel ne bloque pas la détection des changements d’état.
Le calcul du crépuscule et de l’aube provient d’une implémentation du calculateur solaire NOAA initialement développé en Rust par le créateur du projet original. Le code a été porté en Python et utilise les paramètres de latitude, de longitude relative (ouest, centre, est) et le fuseau horaire pour déterminer la portion du cercle à illuminer. Le résultat est un arc lumineux qui représente la durée du jour à la date courante.
Le bouton rotatif du boîtier incrémente la date d’une semaine à chaque clic, ce qui permet de visualiser rapidement les variations saisonnières. Le potentiomètre vertical ajuste la latitude, tandis que le commutateur à trois positions sélectionne la position relative dans le fuseau horaire, affichée par trois LED indicatrices.
Interaction utilisateur et limites
Le panneau de commande comprend : un encodeur rotatif (contrôle du temps), un interrupteur à bascule (mode « daylight » ou « override »), un curseur linéaire (latitude) et un sélecteur à trois positions (longitude relative). En mode « override », les réglages du boîtier remplacent le calcul basé sur l’heure réelle, et la luminosité du bord du cadran reflète directement la position du curseur.
Des limites pratiques sont mentionnées : le boîtier n’est pas assez profond pour accueillir proprement le faisceau de fils, ce qui empêche un montage affleurant au mur. De plus, la dépendance à un espace de découpe laser public a introduit des retards liés aux politiques d’accès. Enfin, l’absence de calibration automatique du capteur de temps signifie que l’utilisateur doit vérifier périodiquement la synchronisation du RTC.