Affichage d'horloge victorien : 350 LED et une seule carte pour les commander

Dans un précédent article, intitulé « Versions revisitées des affichages victoriens à 21 segments », j'ai expliqué que mon ami bricoleur (et maker de génie) Steve Manley et moi-même étions en train de créer des interprétations modernes des affichages victoriens à 21 segments. Contrairement à l'affichage d'origine qui utilisait comme source d'éclairage de petites lampes à incandescence, nous utilisons des LED WS2812B tricolores, comme le modèle 4684 d'Adafruit Industries LLC.

De même, au lieu d'utiliser un interrupteur électromécanique compliqué pour tout contrôler (ce qui aurait été une solution de pointe à l'époque), nous utilisons un microcontrôleur (MCU) moderne, qui aurait impressionné les ingénieurs et les inventeurs de l'ère victorienne.

Steve et moi créons chacun des affichages à 10 caractères. Pour vous donner une idée de ce à quoi ils ressemblent, la Figure 1 montre l'un des premiers affichages de Steve, réalisé à l'aide d'un panneau avant imprimé en 3D et peint couleur laiton. Dans ce cas précis, Steve exécute un schéma de test simple pour vérifier que toutes ses LED fonctionnent.

Figure 1 : L'une des premières implémentations à 10 caractères de l'interprétation moderne des affichages victoriens à 21 segments. (Source de l'image : Steve Manley)

Vous noterez que le panneau en pseudo-laiton de Steve est divisé en deux parties, car son imprimante 3D ne pouvait pas prendre en charge l'intégralité des 50 cm de l'affichage. Par ailleurs, Steve a opté pour 10 grands « trous » dans son panneau avant autour des bords extérieurs de ses caractères. En comparaison, mon panneau avant a été découpé au laser dans un seul bloc acrylique avec finition laiton (Figure 2).

Figure 2 : Éléments principaux de l'affichage à 10 caractères. Le panneau acrylique en pseudo-laiton découpé au laser se trouve au premier plan. Derrière lui se trouvent 10 coques imprimées en 3D, mesurant chacune 64 mm de haut, 50 mm de large et 10 mm d'épaisseur. En haut de l'image se trouvent dix cartes LED vues côté verso et regroupées en cinq sous-assemblages de deux cartes. (Source de l'image : Max Maxfield)

Chacune des cartes à circuit mesure 50 mm de large et 64 mm de haut. Ces cartes sont regroupées en cinq sous-assemblages de deux cartes. Il y a également 10 coques imprimées en 3D, qui font la même taille que les cartes et 10 mm d'épaisseur. Dans le cas de mon panneau en pseudo-laiton découpé au laser, le laser a pu découper les 21 segments qui forment chaque caractère en laissant de fines bandes de 0,7 mm entre les segments.

Steve et moi avons déjà travaillé sur des projets similaires par le passé, généralement dans le cadre d'une compétition amicale, comme les chronographes astucieux que nous avons créés il y a quelques années (voir l'article relatif à la création d'un chronographe astucieux avec Arduino). Ce qui est intéressant, c'est que même si nous nous sommes mis d'accord sur les règles de base, comme le nombre de LED et leur emplacement relatif, nous avons fait chacun nos propres choix en ce qui concerne les éléments comme les microcontrôleurs, les horloges temps réel (RTC) et autres. Le problème de cette approche, c'est que cela a rendu quasiment impossibles le partage et l'échange du code.

De plus, chaque fois que nous commençons à travailler sur un nouveau projet, nous finissons tous les deux par « réinventer la roue », ce qui est une perte de temps et un gaspillage d'efforts. Dans ce cas-ci, nous avons donc décidé de créer une seule carte de commande que nous utiliserions tous les deux pour commander nos affichages. En outre, nous avons décidé de créer une carte comportant tout le nécessaire pour alimenter nos futurs projets pendant des années.

Découvrez notre carte de commande d'affichage victorien

Après de nombreuses heures de brainstorming, de négociations et de compromis, nous avons trouvé une conception qui répondait à tous nos besoins. Le mieux est peut-être de vous montrer cette carte (Figure 3), puis de passer rapidement en revue les différents composants.

Au milieu à gauche, il y a le processeur principal, un Teensy 3.6 sous forme de carte DEV-14058 de SparkFun Electronics. Ce système est doté d'un processeur Arm Cortex-M4F 32 bits fonctionnant à 180 mégahertz (MHz) (avec possibilité de surcadençage à 240 MHz), avec 1 méga-octet (Mo) de Flash, 256 kilo-octets (Ko) de SRAM et 4 Ko d'EEPROM.

Figure 3 : Première version de notre carte de commande, en commençant avec la carte de processeur DEV-14058 Teensy 3.6, basée sur un cœur Arm Cortex-M4F, à gauche. (Source de l'image : Steve Manley)

Derrière le Teensy, tout au bout de la carte, se trouvent deux potentiomètres qui peuvent être utilisés pour contrôler tout ce que nous voulons, comme la luminosité de l'affichage ou la sensibilité au son. À droite du Teensy se trouvent des embases qui permettent d'accéder aux broches entrée/sortie (E/S) non affectées du microcontrôleur.

Devant le Teensy se trouve une pile bouton CR2032 utilisée pour assurer le fonctionnement de l'horloge temps réel lorsque l'alimentation secteur est débranchée du système. Devant la pile CR2032 à droite se trouvent des embases qui permettent de connecter à la carte d'autres capteurs et actionneurs basés sur I2C. Devant la pile CR2032 à gauche se trouvent huit groupes d'embases à trois broches, constituées chacune d'une broche de 0 volt (V), d'une broche de 5 V et d'une broche de données. Chacune de ces embases peut commander une chaîne de LED WS2812. Par ailleurs, le Teensy est doté d'une bibliothèque LED Octo associée, capable de commander huit chaînes simultanément.

Dans le cas de nos affichages à 21 segments, les sept segments plus courts ont chacun une seule LED, tandis que les 14 segments plus longs en ont chacun deux, ce qui fait 35 LED par caractère et un total de 350 LED pour l'affichage à 10 caractères. Chaque LED nécessite 24 bits de données, et l'horloge utilisée pour charger les LED fonctionne à 800 kilohertz (kHz). Cela signifie que si nous devions commander toutes les LED à partir d'une seule broche du microcontrôleur, il faudrait ((35 x 10) x 24)/800 000 = 10,5 millisecondes (ms) pour charger la chaîne.

En comparaison, en utilisant la bibliothèque Octo du Teensy et en séparant nos 10 caractères en cinq paires de deux caractères, nous pouvons réduire ce délai à seulement ((35 x 2) x 24)/800 000 = 2,1 ms. Mieux encore, la bibliothèque Octo peut utiliser le moteur d'accès direct à la mémoire (DMA) du Teensy pour effectuer ce chargement en arrière-plan, permettant ainsi au processeur principal d'effectuer d'autres tâches, comme le calcul de nos effets lumineux incroyablement astucieux.

Les cinq interrupteurs à bouton-poussoir à action momentanée au milieu de la carte sont utilisés pour accéder aux menus, sélectionner les modes et les effets, et saisir des valeurs (par exemple, la date et l'heure). Il est également possible de connecter cinq interrupteurs montés sur le boîtier en parallèle à l'aide des bornes à vis vertes montées au bord des différents côtés de la carte. Nous avons également décidé d'inclure une capacité de commande infrarouge (IR) qui peut être utilisée pour effectuer les mêmes tâches que les boutons-poussoirs. Le détecteur IR se situe en dessous du bouton du milieu. Au-dessus de ce bouton se trouve une photorésistance (LDR) qui peut être utilisée pour contrôler la luminosité de l'affichage en fonction de la lumière ambiante. Au-dessus de la photorésistance, il y a un microphone à électret qui peut être utilisé pour faire en sorte que l'affichage réagisse au son. Tous ces dispositifs peuvent être retirés de la carte, montés sur le boîtier, puis connectés à la carte via les bornes à vis vertes.

À droite de la carte, il y a une carte Seeeduino XIAO 102010328 de Seeed Technology. Même si elle ne fait que la taille d'un timbre, la carte XIAO cache des ressources inestimables, avec un cœur de processeur Arm Cortex-M0+ ATSAMD21G18 32 bits fonctionnant à 48 MHz avec 256 Ko de mémoire Flash et 64 Ko de SRAM. La carte XIAO est utilisée pour traiter les signaux de commande IR et les transmettre au processeur Teensy. Même si cela peut paraître superflu (car nous aurions certainement pu utiliser le Teensy pour gérer les signaux IR directement), nous avons décidé qu'une approche « diviser pour mieux régner » nous simplifierait la vie à long terme.

Les composants à montage en surface (CMS) se trouvent sous la carte. Ils incluent une horloge temps réel DS3231SN# de Maxim Integrated, un codec audio stéréo basse consommation SGTL5000XNAA3R2 de NXP, une puce antirebond de commutateur LS119-S de LogiSwitch et un émetteur-récepteur de bus octal 74HCT245 de Toshiba Electronic Devices and Storage Corp agissant en tant que module de décalage du niveau de tension.

La Figure 4 montre la carte de commande rouge montée au dos de mon affichage. Elle montre également une carte verte de distribution de puissance, qui inclut un régulateur robuste de 3,3 V à utiliser pour commander les éventuels capteurs de 3,3 V supplémentaires, en cas de besoin.

Figure 4 : Assemblage d'un affichage à 10 caractères. La carte de commande rouge se trouve à droite de l'image. La carte verte à gauche est utilisée pour distribuer l'alimentation aux cartes et aux affichages. (Source de l'image : Max Maxfield)

À droite de l'affichage, non représentée sur l'image, il y a une carte de prototypage bleue. Tout cela pour dire qu'il y a trois couleurs de cartes : rouge, verte et bleue (RVB), ce qui a « titillé notre sens de l'humour ». Idéalement, la carte de distribution de puissance aurait dû être rouge et la carte de commande aurait dû être verte, mais pour des raisons inconnues, nous aurions alors dû payer une pénalité conséquente lors de la fabrication de la carte pour avoir le cuivre plus épais requis pour la distribution de puissance sur un substrat rouge. Nous avons donc fait ce qu'il fallait pour faire des économies.

Programmation de la carte de commande

L'étape suivante marque le début des choses ludiques, car nous devons commencer à écrire le code qui permettra de commander l'affichage. L'approche que nous prévoyons d'utiliser consiste à avoir un concept de couleur d'arrière-plan, de couleur de premier plan et de masque. Lorsqu'un bit de masque est défini sur 0, le segment correspondant s'affiche dans la couleur d'arrière-plan. Lorsque le même bit de masque est défini sur 1, le segment s'affiche dans la couleur de premier plan. Ce qui est intéressant ici, c'est que les couleurs de premier plan et d'arrière-plan peuvent être des couleurs statiques comme le noir, le blanc ou autre. Autre possibilité, l'une de ces couleurs ou les deux peuvent être dynamiques, par exemple avec des rayures couleur arc-en-ciel ondulant d'un bout à l'autre de l'affichage.

Conclusion

Il y a bien d'autres expériences que nous prévoyons de faire avec ces affichages d'horloge victoriens repensés. Par exemple, avec la puce de microphone et de codec audio, nous pourrions avoir un mode audio-réactif (voir également les articles traitant du projet audio-réactif avec Arduino, 1re partie et 2e partie). Une autre chose que j'aimerais essayer, c'est ajouter la possibilité de faire « glisser » du texte défilant sur l'affichage en inclinant l'affichage vers la gauche ou la droite (voir également l'article relatif à l'ajout de détection de mouvement et d'orientation à des projets de loisirs).

En conclusion, je ne peux m'empêcher de repenser à George Lafayette Mason qui a fait une demande de brevet pour les affichages à 21 segments originaux en 1898, soit 123 ans avant que j'écrive ces lignes. Je me demande ce qu'il aurait pensé s'il avait pu voir la manière dont nous exploitons maintenant son idée en utilisant les technologies d'aujourd'hui.

À propos de l'auteur

Image of Max Maxfield

Clive "Max" Maxfield a obtenu sa licence en ingénierie de contrôle en 1980 à l'université de Sheffield Hallam, en Angleterre, et a commencé sa carrière en tant que concepteur de processeurs (CPU) pour ordinateurs centraux. Au fil des ans, Max a tout conçu, de puces en silicium aux cartes à circuit imprimé, en passant par les amplificateurs d'ondes cérébrales et les moteurs de prédiction steampunk (ne posez pas de questions !). Il a également été à la pointe de l'automatisation de la conception électronique (EDA) pendant plus de 30 ans.

Max est l'auteur et/ou le co-auteur d'un certain nombre d'ouvrages, dont Designus Maximus Unleashed (interdit en Alabama), Bebop to the Boolean Boogie (un guide non conventionnel de l'électronique), EDA: Where Electronics Begins, FPGAs: Instant Access, et How Computers Do Math. Consultez son blog « Max's Cool Beans ».

More posts by Clive "Max" Maxfield
 TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum