Horloge infinie

Bonjour
Je me lance avec un nouveau projet : une horloge infinie à LEDs. On en voit pas mal sur Internet alors j'ai voulu tester. Je mettrai ce post à jour au fur et à mesure... avec des images, des codes, des fichiers, etc.


Tout d'abord une vidéo qui explique mieux ce qu'est une horloge infinie. (une nouvelle version ce soir sans la latence)

Une horloge infinie utilise les réflexions multiples entre un miroir et un miroir semi réfléchissant pour donner l'illusion d'une grande profondeur alors qu'elle ne fait qu'un centimètre ! L'heure est indiquée par des LEDs (ici des WS2812) qui se réfléchissent de nombreuses fois entre ces interfaces et donnent cette impression de profondeur.

Les LEDs étant adressables et multicolores, il est donc facile de les utiliser pour faire des animations lumineuses.

L'horloge est commandée par une liaison sans fil. J'avais fait une première version Wifi avec un ESP8266 mais les sorties numériques en 3.3V n'étaient pas adaptées aux LEDs (qui ont besoin d'une commande en 5V) ce qui provoquait des glitches que je n'ai pas pu régler. J'ai commandé un circuit level shifter : s'il règle le problème, je posterai la version Wifi.

Je me suis donc tourné vers un Arduino Nano (un clone Chinois) avec une commande Bluetooth, via un HC06. La commande se fait sur un smartphone Android grâce à l'excellent logiciel freeware Bluetooth Electronics de KeuwlSoft.

Le reste coule de source : apprentissage, codage et préparation de l'IHM.
Il a bien sûr fallu faire l'horloge elle-même. Un bandeau de LEDs WS2812 acheté chez Ali***, et du bois pour la structure. J'ai acheté du MDF 3mm chez Leroy Merlin, ainsi qu'un peu de plexiglass, et me suis rendu au FabLab le plus proche pour faire les pièces par découpe laser.

Achats :

  • Arduino nano
  • Module HC06
  • Module RTC DS3231
  • Bandeau de 60 LEDs
  • Connectique
  • Panneau MDF 3mm
  • Plaque de plexiglass (épaisseur 2 mm ?)
  • Feuille de miroir autocollante
  • Film adhésif sans tain pour fenêtre

Je joins les fichiers pour la découpe. Le plus "angoissant" était de bien calculer les dimensions, imposées par le bandeau de LEDs. Le bandeau fait 1 mètre de long et comporte 60 LEDs : elles sont déposée en cercle, ce qui impose le périmètre du cercle, donc son rayon et toutes les dimensions pour les découpes (miroir, plexi, etc)

Bref, la vidéo montre que ça marche, j'en suis assez content, j'ai corrigé la gestion des commandes Bluetooth (le module est réglé à 115200 bauds, vitesse max compatible Arduino) qui posait des problèmes de latence.

A propos de la commande : voici ce qui est possible.

  • Mise à l'heure (voir plus bas)
  • Choix de certaines couleurs. Par défaut, l'heure est marquée par une LED rouge, les minutes par une verte. La couleur des secondes peut être changée
  • Choix de l'animation. Selon l'animation, on peut changer certaines couleurs et palettes de couleur. Pour l'animation 7, la palette correspond au changement de drapeau...
  • Affichage ou non des repères des 5 minutes
  • Affichage dans la petite console des commandes

Une image vaut mieux qu'un long discours...

La vidéo a été faite avec un téléphone portable, qui, même s'il est de bonne qualité, ne donne qu'une assez moyenne idée du résultat réel. Les couleurs sont plus pures et mieux localisées (ne bavent pas) en réalité...

Les codes... Soyez indulgents, je ne suis pas un pro... :slight_smile:

Mise à l'heure : elle se fait en tapant des commandes dans la petite console en bas à gauche de l'IHM :

  • Hxx : régler les heures à xx (ex: H4)
  • Myy : régler les minutes (ex: M15)
  • Szz : régler les secondes (ex: S30)
  • On peut enchaîner les commandes en insérant une étoile entre deux, exemple : H4M15S35
    Le réglage des heures et des minutes remet les secondes à 0.

Horloge_LED3_nano_BTOK.ino (4.52 KB)

Animations.h (5.84 KB)

Horloge.h (2.42 KB)

HorlogeBT.h (2.8 KB)

Le code de l'IHM, à installer dans Bluetooth Electronics sur le smartphone, ainsi que les fichiers de découpe. Je pense que le disque du miroir est un poil trop large ; s'il était à refaire je diminuerais le diamètre d'un millimètre.

Pour faire tenir les LEDs sur le petit cylindre situé entre le fond et le plexi : un peu de colle à bois, en faisant bien attention à ne pas en mettre trop pour éviter de déborder sur les LEDs, mais d'en mettre assez pour que ça tienne correctement.

Pour faire tenir le plexi dans le trou, alors qu' est légèrement trop petit : un peu de colle sur la tranche qui joue le rôle de joint torique. Il colle un peu mais assure surtout le remplissage de l'espace vide.

NB : La touche "Fond" n'est pas encore active. Elle vise à mettre un fond coloré et changeant pour les animations "vides" (0, 1, 3, 4)

Horloge.zip (4.76 KB)

Quelques images...

D'autres photos : le scotch de peintre pour tenir le fond n'est pas assez solide. Le fond ne tient pas en place sous son propre poids et je devrai trouver une autre solution...

Les animations :

  • 0: Juste l'heure, on peut changer la couleur de la trotteuse
  • 1: Un fond coloré (on peut changer la couleur) d'amplitude variable
  • 2: Arc en ciel tournant
  • 3: Une bande de couleur (que l'on peut changer) qui fait un tour par seconde
  • 4: Une bande de couleur qui rebondit sur la trotteuse
  • 5: Un fond coloré (on peut changer la palette) d'amplitude aléatoire
  • 6: Juste l'heure, la trotteuse change d'amplitude lumineuse
  • 7: Des drapeaux qui tournent (changer la palette pour changer de drapeau)
    Je suis preneur de vos suggestions...

Animation 2 :

Animation 7 : drapeau Français

Mises à jour :

  • 7 avril : une animation en plus, qui choisit aléatoirement une animation toutes les 15 secondes
  • 7 avril : utilisation d'une RTC DS3231 pour la mise à l'heure (au lancement et toutes les 30 minutes)
  • 8 avril : vidéo mise à jour sur Youtube

La prochaine version sera basée sur un bandeau de LEDs plus dense (144 par mètre), une structure imprimée en 3D, des fonds miroirs interchangeables de formes diverses (imprimés en 3D aussi) et un PCB pour regrouper les composants et l'utilisation d'un µduino pour gagner un peu de place...

Des suggestions ? Des avis ?

Je cherche notamment à diminuer les tailles des modules bluetooth et RTC. Si vous avez des idées...

Ca a vraiment de la tronche. Par contre je n'arrive pas à ouvrir les IO horlogeBT qui m'intéresse beaucoup...

kammo:
Ca a vraiment de la tronche. Par contre je n'arrive pas à ouvrir les IO horlogeBT qui m'intéresse beaucoup...

Utilise Notepad++

Comme j'aime le dire, Ca a de la gueule. Mais sur les différentes photos que tu as posté, je ne comprend pas comment lire l'heure.. :smiley: :smiley: :smiley:

Par exemple, sur la première photo, la led rouge indique les heures, la verte les minutes et la jaune les secondes. Les blanches marquent les 5 minutes.
Sur la dernière photo, c'est le même code de couleurs, le drapeau tourne autour de l'horloge pour faire l'animation.

Je prépare une nouvelle version sur ESP32, qui est équipé de Bluetooth et Wifi par construction. L'horloge se met à l'heure au lancement par Wifi (donc plus besoin d'une RTC), les animations sont commandées en Bluetooth par un smartphone par une appli spécifiquement développée. Donc plus besoin d'un module BT supplémentaire : l'ESP32 suffit pour l'ensemble de l'horloge.

Bonjour,
De passage ici, je tombe sur ce fil et je suis sans voix.
Bravo pour ta réalisation, c'est super chouette.

Merci, la suite bientôt (j'espère)...

lesept:
Merci, la suite bientôt (j'espère)...

Vivement.