.cf_videoshare_referral {affichage: aucun! important; }
Illustration: James Provost
Les anciens appareils électroniques grand public ont souvent assez de place pour des mises à niveau majeures.
Comme le vinyle et cassettes, les tubes cathodiques connaissent un retour dans certains cercles. Les rétrogamers veulent faire l’expérience d’anciens titres sur les écrans flous pour lesquels ils ont été conçus. Et les fabricants les ont déconstruits pour toutes sortes de projets: en janvier 2020, nous avons présenté une horloge graphique vectorielle basée sur un tube cathodique conçu à l’origine pour un oscilloscope. Mais les tubes cathodiques à oscilloscope sont relativement rares, alors que les vieux téléviseurs analogiques peuvent littéralement être trouvés sur les trottoirs. Alors, quand je suis tombé sur une annonce bon marché sur eBay pour un téléviseur portable noir et blanc avec un écran de 5 pouces qui avait l’air presque en parfait état, j’ai pensé relever le défi de relever le défi de cette ancienne technologie.
Contrairement à un oscilloscope CRT, vous ne pouvez pas contrôler facilement le faisceau d’électrons d’un téléviseur CRT directement. Au lieu de cela, il est préférable d’alimenter un signal vidéo que le circuit d’origine peut décoder. J’ai donc décidé de créer une Geek TV: au lieu de chaînes de diffusion, elle afficherait les dernières mises à jour et images d’endroits comme la NASA et l’Organisation européenne pour la recherche nucléaire (CERN), ainsi que quelques animations. Et je voulais qu’il reflète la simplicité autonome du téléviseur d’origine: pas de câbles ou de boîtes supplémentaires suspendus et certainement pas de clavier, de souris ou de commutateurs supplémentaires pour le contrôle.
Mon «nouveau» téléviseur est un Coby CX-TV1, qui a un connecteur vidéo composite RCA et fonctionne sur un adaptateur d’alimentation CC, ce qui suggère que j’aurais de bons points de départ dans les circuits internes pour le piratage.

Illustration: James Provost
Le circuit de commande du téléviseur fonctionne à 12 volts, il doit donc être réduit à 5 V par un convertisseur abaisseur, qui est alimenté dans les bornes Qwiic pHat. Un régulateur intégré au Pi Zero abaisse encore la tension jusqu’à 3,3 V utilisés en interne par le Pi et par le capteur de capacité.
Une fois que j’ai dévissé le boîtier et regardé les tripes, j’ai été encore plus encouragé. Le circuit interne est divisé en deux parties: une carte de circuit imprimé principale construite autour d’un clone d’une puce AN5151 et une carte de circuit imprimé secondaire montée à angle droit. Le bouton de réglage du téléviseur fait tourner l’arbre d’un condensateur variable sur cette carte secondaire.
J’avais toujours prévu d’utiliser ce bouton monté sur le côté comme commande pour sélectionner les «canaux», mais au départ, je pensais que je le monterais sur un encodeur rotatif pour détecter les mouvements. Mais une fois que j’ai vu comment les PCB étaient arrangés, j’ai eu un de mes rares moments d’inspiration. J’ai déconnecté la carte tuner du PCB principal et connecté l’un des fils du condensateur variable à un capteur tactile basé sur Adafruit MPR121.
Ce capteur capacitif est destiné à fournir une réponse simple oui / non à la question «Un doigt touche-t-il une surface ou non?» Mais en regardant les mesures brutes du capteur, j’ai pu déterminer la capacité variable, et donc la position du bouton. En prime, cela signifiait que je pouvais laisser intact le joli mécanisme mécanique qui déplace une bande de plastique rouge de haut en bas pour indiquer la chaîne sur laquelle le téléviseur est réglé.
J’ai ajouté des cerveaux au téléviseur avec un Raspberry Pi Zero W compatible Wi-Fi que j’avais caché au fond d’un tiroir. (Si je partais de zéro, j’utiliserais probablement un module de calcul Pi 3 ou 4 pour un traitement plus rapide, mais j’étais heureux d’utiliser le Pi Zero à bon escient.) Chaque Pi a la capacité de générer une vidéo composite en NTSC ou PAL format. Dans le cas du Pi Zero, une prise non peuplée fournit le signal, il a donc fallu quelques instants pour souder un en-tête. Un peu plus de travail de soudure m’a permis de faire passer les fils du connecteur à l’arrière du connecteur RCA du téléviseur. Comme mon téléviseur est en noir et blanc, j’ai désactivé le signal colorburst de la vidéo composite dans le fichier de configuration du Pi pour une image légèrement plus nette.

Illustration: James Provost
J’ai soudé des fils au sol [1] et interrupteur marche-arrêt [2] pour puiser dans la puissance du téléviseur. Pour une entrée de commande, j’ai déconnecté le condensateur variable du tuner d’origine du reste du téléviseur, le laissant attaché à l’arbre du bouton [3]. Ensuite, j’ai soudé un fil entre le condensateur et le capteur tactile pour fournir un signal série au Pi Zero W [4].
La seule étape matérielle majeure restante était l’alimentation: la plupart des circuits internes du téléviseur fonctionnent à 12 volts, ce qui ferait immédiatement frire le Pi, j’ai donc utilisé un convertisseur abaisseur pour abaisser la tension à 5 V.Deux autres touches de soudure connectées à l’interrupteur marche / arrêt du téléviseur et à la masse.
J’ai écrit le logiciel en Python: une série de bibliothèques permet de relier facilement le matériel à des routines de plus haut niveau pour extraire et traiter des images à partir de sources en ligne. Tout d’abord, j’ai installé le bundle Blinka d’Adafruit, qui est un backport de Circuit Python, développé à l’origine pour intégrer Python dans des microcontrôleurs. Avec Blinka, je peux communiquer avec mon capteur tactile via une connexion I2C montée sur une carte SparkFun Qwiic pHat v2.0 branchée sur l’en-tête GPIO du Pi. (Le pHat fournit également une paire pratique de bornes à vis connectées aux rails 5 V et au sol du Pi qui me permettent d’apporter l’alimentation à partir du convertisseur abaisseur).
Obtenir des images à partir de sources en ligne nécessite une combinaison de techniques. Par exemple, le tableau de bord d’état du Grand collisionneur de hadrons au CERN est affiché sous la forme d’un PNG qui se trouve toujours sur une URL statique. Le Pi doit simplement télécharger l’image et la mettre à l’échelle à la résolution 720 par 480 de la vidéo composite NTSC. Une autre chaîne sur mon Geek TV affiche l’astronomie du jour de la NASA. Pour le télécharger, le Pi doit interroger une API qui renvoie des métadonnées, puis l’analyser à l’aide d’une bibliothèque JSON pour obtenir l’URL de l’image quotidienne. Et obtenir la dernière photo du satellite météo GOES East signifie analyser le HTML à l’aide de la bibliothèque Beautiful Soup.
J’ai également ajouté quelques animations: Une chaîne «joue» le jeu de la vie de Conway. Un autre canal lance des versions de plus en plus haute résolution de l’ensemble Mandlebrot. Et entre les chaînes, le téléviseur affiche «statique» pixélisé.
Pour finir, j’ai dû réparer des fils du tube cathodique qui s’étaient cassés à cause de toutes les flexions qui s’étaient produites pendant que je soudais de nouvelles connexions. Une fois cela fait, il ne restait plus qu’à tout ranger dans le boîtier du téléviseur et à le refermer. Maintenant, pour obtenir mes dernières mises à jour scientifiques, il ne me reste plus qu’à allumer et à me connecter.
Cet article apparaît dans le numéro de mai 2021 sous le titre «Geek TV».