まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

samedi, 25 avril 2026

Décapotes -04-, circuit de positionnement d'image pour écran TV

Suite de la conception précédente :

  • Pour gagner énormément de temps sur ce sujet, étant donné que je partais de zero, je me suis fait aider par un professeur particulier qui s'appelle Claude, et parfois Gemini aussi.

C'est formidable d'avoir « quelqu'un » qui t'explique les choses, et traduit des exemples de code, ce langage obscure, en Français !

J'ai ainsi pu expérimenter ces prompts et me rendre compte du danger qu'ils représentent en terme de capacités cognitives qu'on pourrait vite perdre. Face à un tel outil, le cerveau humain est particulièrement faible, et vite tenté de déléguer trop le travail, au risque de perdre en capacité de réflexions. Sans compter le temps perdu dans des culs de sacs techniques, qui n'auraient pas dû se présenter…

− Dés que je demandais quelques chose du genre « je voudrais faire ça, dit moi comment faire », ça tournait mal. Beaucoup d'hallucinations, de code testés, de ratés, et parfois de code fonctionnel, mais qui décidément ne faisaient pas exactement ce que je voulais. Ça restait pourtant très séduisant pour cette feignasse de cerveau, malgré que je devenais incapable d'ajuster ce code à mon besoin, tout étant allé trop vite, pas eu le temps d'assimiler, ni de comprendre ce qui se présente. Pris dans ces boucles d'incapacités cognitive, obligé de réitérer sans cesse pour en sortir, mélasse dans la tête… wé, pas ouf.
− Par contre dés que j'exposais une directive claire « je veux faire ça, de telle manière, avec ces paramètres, écrit le−moi », ça se passait tout de suite mieux, et « on » me gratifiait au passage d'un « bravo, vous avez raison, ça fonctionnera bien mieux ainsi ». « Oui, je sais… *soupir* ».

Cantonné à un rôle de traducteur où de prof qui m'explique la technique, c'est très bien et moins coûteux pour l'humain que la méthode autodidacte classique. Évoquer des solutions envisageables passe aussi, mais il vaut mieux ne pas en demander plus, et faire le travail d'ingénierie soit même. Pour éviter de finir abruti et de se perdre…

  • Bref, à défaut il faudrait vraiment éduquer à employer correctement cette techno, où quelle disparaisse à jamais, ça ne sera pas plus mal.

Un quatrième circuit d'essais :

Allez-allez là, l'actualité ! Trêve de blabla, passons au concret !

  • Suite aux déconvenues précédentes, et ce qu'elles m'ont permis d'apprendre, j'ai tenté un schéma en − presque − tout numérique et de me passer des circuits vidéo spécialisés :


− Nous avons donc une adaptation de signaux en entrée, car l'IGS−PGM délivre un C−Sync hors normes à 5V d'amplitude.
− Le RP2040 qui va traiter intégralement le signal d'entrée, afin de sortir un nouveau C−Sync déphasable, par action sur le switch et les potentiomètres.
− Une porte ET logique 74HC08 pour réassembler C−Sync en sortie.
− Et un switch double pour inhiber le circuit, pour le cas où on ne voudrait pas traiter le signal.

Le programme µPython est disponible ici, et en annexe du billet.[1]
J'ai aussi fait commenter le code Python afin qu'il soit accessible aux grands débutants.


  • Description rapide du principe de fonctionnement :
  1. Le signal C−Sync entre sur GP0.
  2. Il est traité par sm4 : StateMachine 0 hsync_flywheel afin « d'extraire » le signal H−Sync. En fait créer un signal respectant la norme vidéo avec une impulsions de 5 µs, calée sur les fronts de C−Sync, et continuant sur ce rythme lorsque les trous formés par V−Sync apparaissent. Le signal est disponible sur GP1 pour débug ou réutilisation opportune.
  3. C−Sync in est utilisé par sm5 : StateMachine 1 vsync_pio pour « extraire » V−Sync. Donc créer une impulsion longue de 512 µs, calée sur les fronts de C−Sync. Le signal est disponible sur GP2.
  4. Ensuite, l'action combinée de sm0 : StateMachine 4 front_montant Horizontal et sm1 : StateMachine 5 front_descendant Horizontal vont permettre, lorsqu'on appuie sur le bouton, de lire la valeur du potentiomètre horizontal et de déphaser le signal H−Sync. Ce signal est disponible sur GP3.
  5. De même avec sm2 : StateMachine 6 front_montant Vertical et sm3 : StateMachine 7 front_descendant Vertical pour déphaser le signal V−Sync. Signal dispo sur GP4.
  6. Et enfin, sm6 : StateMachine 2 and_gate effectue une opération ET logique entre les deux signaux déphasés afin de reconstruire notre C−Sync déphasé en sortie. (finalement remplacé par une porte logique physique plus fiable)
  • Voici quelques chronogrammes (avec un déphasage notable en vertical et horizontal) pour voir ce qu'il en est à chaque étapes clef du circuit :




  • Et une petite vidéo démonstrative :
  • Et de deux !
  • Conclusion de l'expérimentation,

On a donc un programme « full states machines » indépendant du CPU du microcontrôleur, ce qui permet une cadence de génération des signaux très précises.
Le CPU n'est là que pour gérer les boutons et la lecture des potentiomètres.

Tout fonctionne bien et sans gigue, pour ce programme tout à fait adapté à l'IGS−PGM, c'est je pense le montage qui constituera la carte fille que je vais donc intégrer à mon péritel multiple !

À moins que… Hum, j'ai testé le montage sur quelques consoles, Sega ou Nintendo, et ça ne fonctionne pas du tout…
J'ai regardé un peu les signaux émis par ces machines, et j'ai eu quelques surprises qui m'ont d'ailleur fait retarder la publication de ce présent article, et dont je parlerais peut-être une prochaine fois.

À suivre…?

Ressources :
https://rocelec.widen.net/view/pdf/en7p9sshgt/GENNS00351-1.pdf
https://zestedesavoir.com/tutoriels/2256/de-la-logique-aux-processeurs/des-maths-a-lelectronique/
https://www.ti.com/lit/ds/symlink/sn74hc08.pdf
https://www.eurobot.org/wiki/fr/informatics/lire_les_codeurs
https://docs.micropython.org/en/latest/library/rp2.StateMachine.html
https://docs.micropython.org/en/latest/library/rp2.html
https://www.onetransistor.eu/2021/02/rpi-pico-pio-state-machine-square-wave.html
https://tutoduino.fr/pio-rp2040/
https://www.developpez.net/forums/d2149816/general-developpement/programmation-systeme/embarque/raspberry-pi/rpi-pico-utilisation-pio/
https://www.raspberrypi.com/news/what-is-pio/
https://gregchadwick.co.uk/blog/playing-with-the-pico-pt4/
https://pip-assets.raspberrypi.com/categories/610-raspberry-pi-pico/documents/RP-008355-DS-1-raspberry-pi-pico-python-sdk.pdf?disposition=inline
https://pip-assets.raspberrypi.com/categories/814-rp2040/documents/RP-008371-DS-1-rp2040-datasheet.pdf?disposition=inline
https://scanlines.xyz/t/tutorials-for-generating-video-sync-signals-with-arduino/104

Note

[1] ci-dessous

dimanche, 22 mars 2026

Décapotes -03-, circuit de positionnement d'image pour écran TV

Suite de la conception précédente :

  • Avant de tenter de résoudre le problème du trou dans H−Sync, j'ai voulu trouver une solution à la stabilité de la synchro sortante afin d'obtenir une image la plus nette possible, et ce même si le circuit à base de PLL propose une qualité d'image tout à fait correcte.

Mon côté perfectionniste doublé de curiosité m'emmena faire un tour du côté du monde merveilleux de l'Arduino et de l'ESP32. Malheureusement les quelques essais que j'ai pu réaliser n'ont pas donnés les résultats escomptés, et étaient parfois pire qu'avec mon précédent circuit.

  • Quelques temps ont passés avant que je sois poussé à m'intéresser au Raspberry Pi Pico, et plus particulièrement la carte de WaveShare RP2040-ZERO.

J'étais passé jusqu'alors complètement à côté de cette puce. Certes j'avais eu vent de son existence et de la « mode » entourant sa sortie, beaucoup de monde s'y mettait, sauf moi. Comme souvent j'ai plusieurs trains de retard sur les technos, que je sais laisser passer tranquillement avant d'en avoir réellement besoin. Idem pour tout ce qui est LLM + prompt d'intelligence simulée, pas besoin. Vous lisez un type qui lit encore sa musique classée dans des dossiers, en local sur son appareil. Pas de méta−données, rien. Pas besoin.

  • Bref. J'ai donc découvert le RP2040 et entrevu une potentielle solution pour mon problème, en comprenant ce qu'il en était des States Machines, ces machines intégrées à la puce à qui on s'adresse en assembleur et qui roulent au rythme des cycles d'horloges, indépendamment du code adressé au processeur.

Vraiment très intéressant, quand on sait la vitesse à laquelle c'est capable de monter sans sourciller.
C'est bien simple, j'ai pu coder des exemples de génération de signaux de manière classique, à travers le processeur et demander la même chose aux States Machines et le résultat à l'oscilloscope était sans équivoque tellement meilleurs avec ces dernières.
Pour plus d'info, il y a cette vidéo qui explique très bien ce qu'il en est des Machines à état et cette page aussi..
Je comprend maintenant l'engouement pour ce Raspberry Pi Pico !

Un troisième circuit d'essais :

  • J'ai donc envisagé ce schéma, avec une nouvelle fois la structure basée sur le circuit séparateur de synchro LM1881 en entrée, les portes logiques 74LS132 en sortie, mais utilisant le RPi Zero pour le traitement du signal.


  • Particularité ici très importante, le RP2040 fonctionnant en logique 0−3,3V, il faut impérativement adapter les signaux qu'on lui applique, ce que je fais ici à l'aide d'un circuit basé sur le transistor MOSFET BS170 montés ainsi en adaptateur de niveau logique.

Je dispose maintenant d'un analyseur logique, ce qui est bien pratique pour montrer facilement les signaux. J'en profite donc pour donner un relevé des signaux d'entrée/sortie du LM1881, agrémentés de diverses mesures intéressantes…



  • Après plusieurs itérations, j'ai pu écrire ce programme µ−python pour le RP2040-Zero (dispo aussi en annexe à ce billet), pour déphaser les signaux.

Il utilise quatre State Machines pour déphaser les signaux. Les potentiomètres et le bouton sont gérés par le CPU. Lorsqu'on appuie sur le bouton, on passe en mode lecture de la valeur des pots, ce qui permet donc de décaler l'image en les réglants, puis de mémoriser ces réglages en rappuyant sur le bouton.

  • Voyons ce que donnent les signaux :


− En blanc, le C−Sync d'entrée,
− En marron, le V−Sync de sortie du LM1881, qui entre dans le RP2040-Zero en GP5,
− En rouge, le C−Sync de sortie du LM1881, qui entre dans le RP2040-Zero en GP14,
− En orange, le V−Sync déphasé en sortie GP6 du RP2040-Zero, qui entre dans le 74LS132,
− En jaune, le C−Sync déphasé en sortie GP15 du RP2040-Zero, qui entre dans le 74LS132,
− En vert, la sortie du 74LS132, avec V−Sync + C−Sync réassemblés.

Lire la suite...

samedi, 27 décembre 2025

Pocket SDVX pico, Makoto's edition -5-

Suite des précédents travaux :

Je ne me suis pas rendu compte du temps qui passait − autour d'une année lol − assez occupé sur d'autres sujets en partie chroniqués parmi ces pages…
Mais enfin ! J'ai compilé toutes mes sources, apporté les corrections nécessaires et mis tout cela en ordre pour que cela soit digeste et exploitable.
Je vais donc décrire tout ça, en espérant que cela en motive certain·e·s à se lancer dans la reproduction de l'objet, et pourquoi pas dans des améliorations/modifications ou de nouvelles fonctions. Vous me montrerez ça !

  • Hors usage personnel, la seule condition au repartage étant de respecter la licence CC-BY-SA 4.0 voulue par Speedy Potato, l'auteur originel du contrôleur sur lequel j'ai basé mes travaux, en citant également Woody Tsai (je n'ai pas trouvé de sources le concernant, il ne semble pas partager ses travaux autrement qu'en mode « hey tavu ce que j'ai fait… », la jeunesse en mal de reconnaissance sur les rézo ou bien en mode portfolio d'une activité lucrative, mais puisque je me suis inspiré de son idée de dessin… Voilà).
  • On trouvera donc en annexe à ce billet deux archives.

Pocket-SDVX-Pico MAKOTO final.zip :

Cette archive contient deux dossiers principaux et une liste des composants électro-mécaniques dans un fichier tableur.

  • Le dossier PRODUCTION, pour celleux qui souhaiteraient reproduire tel quel mon contrôleur :

− Il y a les fichiers STL pour imprimer les pièces 3D.
− Les fichiers vectoriels SVG pour la découpe laser en PMMA transparent.
− Et les fichiers Gerber dans plusieurs archives zip pour faire fabriquer les plaques. On a besoin de la plaque PCB qui constitue le circuit électronique et la plaque PLATE qui constitue la plaque décorative supérieure.

Cette dernière existe en 3 versions,
PLATE est celle que je présente ici, depuis le début de ces travaux,
PLATE2 est quasi identique sauf qu'elle ne présente pas deux grands trous ronds pour les boutons d'encodeur − knob −, mais deux petits trous pour laisser juste dépasser la tige de l'encodeur, donc dans le cas où l'on souhaiterait que le knob soit placé au dessus de la plaque et non incrusté comme c'est le cas avec la PLATE. Ce qui laisse la liberté de choix pour le diamètre des knob !
PLATE3 est prévue pour être utilisée à la manière des modèles Pocket SDVX Pico v4 ou v5 originels, c'est à dire qu'on va clipser les switchs MX dans cette plaque, et qu'il n'y aura pas d'autres plaque par dessus. J'en parlais dans le premier billet sur le sujet, avant de faire d'autres choix techniques qui m'ont menés à la PLATE.
Donc avec PLATE3 on n'utilisera pas les supports de switch MX imprimé 3D, ni les plaques en découpe laser, Le contrôleur sera alors moins épais et le cadre formant le boîtier n'ira pas avec non-plus. Il faudra que vous bricoliez quelque chose vous-même car je n'ai pas mené cette version à son terme.

  • Et pour fabriquer tout ça ?? Une petite vidéo sous-titrée !

En complément, je reposte la vidéo de l'assemblage 3D du billet N°3 en bas de cette page.

  • Le dossier SOURCES, pour celleux qui souhaiteraient modifier quoique ce soit au contrôleur :

− Il y a les ressources Kicad 7 pour la PCB et les PLATE, PLATE2, et PLATE3.
− Les fichiers FreeCAD 1.0 pour la modélisation 3D et 2D.
− Ainsi que les fichiers des graphismes que j'ai mis tant de temps à dessiner,
qui ont permis de fabriquer les ressources du dossier PRODUCTION que j'ai décrites.

Le contenu de l'archive est aussi disponible sur github :

Firmware Pico-Game-Controller-20220705-v4 Makoto-edition.tar.gz :

Comme son nom l'indique, elle contient le firmware du contrôleur USB.

  • Le binaire à flasher sur le Raspberry Pi Pico se trouve dans le dossier build_uf2

Pour opérer, il suffit de maintenir le bouton poussoir du Rpi Pico enfoncé tout en connectant le câble USB-C à l'ordinateur, puis de relâcher la pression.
Un média amovible est alors monté automatiquement par le système d'exploitation de votre machine, et il suffit alors de glisser le fichier Pico_Game_Controller_Makoto-edition.uf2 dans ce média. Sitôt fait, le média sera automatiquement démonté et le Rpi Pico redémarrera. En principe le contrôleur de jeux doit alors être disponible dans l'ordinateur.

Le reste des fichiers constituent les sources du programme que j'ai modifié pour prendre en charge les leds et boutons supplémentaires, ainsi que les différents modes de couleurs additionnels.
Le SDK Rpi pico est lui aussi inclu, ce qui fait que si on a gcc, cmake et ninja installés sur son ordi, il suffira de lancer depuis le dossier build les commandes :

cd build
cmake ..
ninja

pour obtenir le binaire dans le sous-dossier build/src en fin de compilation.
Si ça se passe bien, on pourra ensuite modifier le programme à loisir en éditant les fichier .c et .h disponibles dans le dossier src présent à la racine.
Sinon, on peut aussi faire ça avec l'usine à gaz Visual Studio code

  • Ce programme est donc basé sur le firmware 20220705, à ce que j'ai compris le dernier en date que j'ai trouvé concernant la v4 du contrôleur qui m'a servi de modèle.

Le contenu de l'archive est aussi disponible sur github :



  • Voilà, je pense que j'ai fait le tour de la question, on termine avec ça :

samedi, 13 décembre 2025

Pocket SDVX pico, Makoto's edition -4-

Suite des précédents travaux :

Le fond :

Au départ il était prévu que le dessous de l'appareil soit constitué d'une plaque imprimée 3D, notamment car celle-ci doit venir s'appuyer sur la plaque électronique afin de rigidifier la structure. Pour cela il est nécessaire de prévoir tout un tas de creux dans la plaques afin que la matière ne viennent pas contre les pattes soudées des composants.

  • J'ai à nouveau dû imprimer la pièce en deux morceaux, ainsi que des petites plaquettes


qui vont servir à consolider le collage à la cyanoacrylate.

  • Sont prévu les trous pour accueillir des inserts fileté de 4 mm de diamètre à destination des pieds en caoutchouc où des ventouses !


  • Voici l'intérieur de la plaque avec la vis de la ventouse qui dépasse. Il sera donc coupé à dimension.


On peut donc alterner à loisir entre pieds ou ventouses, à l'aide d'un tournevis pour le premier et en tournant l'objet à la main pour la seconde.
La vis dans le coin est celle qui ferme ce couvercle de fond, et elle sera complémentent cachée par le pieds en caoutchouc.

Plus tard j'ai envisagé la possibilité d'utiliser des plaques de PMMA transparente à la place de l'impression 3D. J'ai simplement eu l'idée de demander la découpe de deux plaques, une de 3 mm d'épaisseurs qui comporterait non pas les creux mais des trous, et l'autre de 2 mm pour venir fermer le tout.

  • La première plaque de 3 mm, puis la seconde de 2 mm par dessus :


  • La plaque de 2 mm est tout de même trouée pour laisser passer l'épaisseur du port USB du Rpi Pico qui reste là, et permettre d'appuyer sur son bouton de programmation.


Voulant suivre la même logique pour la fixation des pieds/ventouses, j'avais prévu des trous larges dans la plaque de 3 mm pour y mettre les inserts.

Mais ce fut une idée assez galère, car en fondant le PMMA boursouffle un peu en repoussant la matière fondue à la surface, ce qu'il a fallu gratter afin d'aplanir le périmètre autour de l'insert. Et comme l'insert dépasse dans la plaque de 2 mm, il a fallu élargir et le chanfreiner le trou correspondant… Bref, pas une partie de plaisir, alors qu'il suffisait de prévoir un trou plus petit et de le tarauder pour y créer le filetage qui aurait permis de visser les pieds/ventouses directement dans le PMMA, plastique suffisamment dur pour cela.

Autre déconvenue aussi, je l'évoquais dans ma série sur le pincab, le contour des plaques découpées au laser présente un angle de 3°, ce qui n'avait pas posé de problème pour la plaque de protection du dessus, mais ici, avec 3 + 2 mm d'épaisseur, c'est suffisant pour gêner quelque peu la mise en place des plaques. Il a donc fallu limer les 4 champs des deux plaques, afin de les redresser à 90°.

  • C'est tout bon, elles rentrent maintenant bien à plat, ouf !



Finitions :

Je l'évoquais plus haut, pour estomper la jointure du cadre du boîtier, j'ai une solution qui ne fonctionne qu'avec du plastique ABS.

En effet, le solvan qui permet de ramollir ce plastique n'est autre que l'acétone, et il est alors aisé de se confectionner du mastique coloré qu'on va utiliser pour combler toutes les imperfections. Une fois bien sec il suffira de limer et poncer jusqu'au résultat attendu. Toutefois il faut faire attention au ratio acétone/quantité de plastique, car j'ai remarqué que si la mixture est trop diluée, en séchant elle laisse des micro-bulles blanches assez disgracieuses.

  • Alors on verra toujours l'emplacement de la jointure, mais ça jure moins et au toucher, on ne la ressent plus sous les doigts.


  • On peut aussi pousser la chose jusqu'à poncer toute la pièce, de plus en plus fin…


Et ensuite polir et lustrer la surface jusqu'à obtenir cette brillance !

  • Une dernière chose à faire, est de chanfreiner les trous sur les plaques en PMMA pour permettre d'engager des vis à tête fraisée à fleur de la surface.



Fonctionnalités :

  • Une petite vidéo qui montre le montage des ventouses et leurs utilité :

J'ai dû bricoler le firmware d'origine afin de pouvoir attribuer des fonctions aux cinq boutons que j'ai ajouté sur les tranches.
Ceux de la tranche inférieure sont vu comme des boutons de gamepad et pourront servir en cours de partie.
Tandis que ceux de la tranche supérieure sont là pour configurer la déco.

Celui de gauche pour basculer entre le mode « color cycle » qui présente une vague de couleurs défilantes et le mode « turbocharger » qui permet aux « knobs » d'animer la vague de leds en rouge ou en bleu.
Celui de droite incrémente d'une couleurs parmi douze.

  • Pour bien comprendre, voici tout cela montré dans cette petite vidéo :


Lire la suite...

- page 1 de 177