まこと の ブログ

MaKoTo no burogu — Journal de bord…

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

Mot-clé - Hacking

Fil des billets - Fil des commentaires

vendredi, 8 mai 2026

IR « Light » Gun avec Arduino - Mundo Yakara -

Pour faire suite à mes travaux précédents :

Ah wé quand même ! Presque deux ans et demi, et je n'avais pas pensé en parler ici…
J'en ai oublié comment j'ai trouvé sa première vidéo, mais toujours est−il qu'un camarade Colombien, @MundoYakara sur youtube, s'est inspiré de mon projet pour réaliser sa propre version de flingue !
Et le moins qu'on puisse en dire, c'est qu'elle est extraordinaire, autant que l'enthousiasme avec lequel il décrit, démontre et communique les détails opérationnels pour permettre à chacun·e d'obtenir un résultat similaire, si on veut bien s'en donner la peine !

C'est ça qu'on veut ! C'est une des raisons qui me pousse à partager mes travaux. Les voir repris et parfois améliorés me met en joie :)

  • Voici les vidéos qu'il a réalisé sur le sujet :

CAP1 [Camara de Wii]: https://youtu.be/K_C604FbPDc

CAP2 [Codigo arduino]: https://youtu.be/3iE0Odys9mg

CAP3 [Mod de guncon]: https://youtu.be/htQh8Hk19M8

CAP4 [Circuito solenoide]: https://youtu.be/wORQgI4LfjM

CAP5 [imprime en 3d tu propia GUNCON]: https://youtu.be/70oEejEn5gk

  • Et les pages web associées :

https://www.mundoyakara.com/2023/10/wiimote-en-camara-infraroja-para.html
https://www.mundoyakara.com/2023/10/lightgun-con-arduino-pro-micro.html
https://www.mundoyakara.com/2023/10/convierto-guncon-en-lightgun-arduino.html
https://www.mundoyakara.com/2023/11/circuito-de-solenoide-para-lightgun-cap4.html https://www.mundoyakara.com/2023/11/imprime-en-3d-tu-propia-llghtgun.html

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...

lundi, 3 novembre 2025

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

Suite de la conception précédente :

Le premier circuit ayant donc montré ses limites et défauts, nous allons ici tenter de les corriger.

Un deuxième circuit d'essais :

  • À force d'expérimentations, j'ai fini par aboutir à ce schéma :


Ce circuit fonctionne relativement bien, mais avant de tirer les conclusions (oui je ne suis pas un politique ou un journaleux qui tire les conséquences, faut arrêter avec ça !), regardons comment il fonctionne, car encore une fois, ce sera salutaire pour la suite à donner.

  • Nous avons donc à nouveau l'étage de séparation de synchro basé sur le circuit intégré LM1881, nécessaire pour récupérer le signal V−Sync.

Cet étage est cette fois connecté à des PLL (boucle à verrouillage de phase) CD4046, le type de montage à système bouclé dont la théorie me donnait des sueurs froides à l'école… Mais bon c'est plus facile à expérimenter… un peu.

  • La PLL est ici employée afin de générer un signal carré d'une fréquence égale au signal d'entrée. Une fois la fréquence « accrochée » par le VCO (oscillateur contrôlé en tension), led témoin allumée par l'entremise du potentiomètre, ce système bouclé va nous permettre de déphaser le signal carré en continuant de jouer du potentiomètre. La limite étant le décrochage du VCO au delà d'une certaine plage de fonctionnement où l'on perd alors la fréquence.

Les composants R1, R2 et C1 sont donc calculés et vérifiés expérimentalement pour offrir la plage de fonctionnement la plus large possible sans décrocher de la fréquence d'entrée.
Pour H−Sync et ses 15,625 kHz, R1 = 100 kΩ, R2 = 100 kΩ, C1 = 1 nF.
Pour V−Sync et ses 59 Hz, R1 = 8,2 kΩ, R2 = 18 kΩ, C1 = 1 µF.

  • Voici une démo vidéo de la phase d'accrochage de la PLL, avec le signal zoomé sur V−Sync, on regarde la sortie 3 du CD4046.

On prend soin d'observer attentivement la valeur de fréquence affichée en bleu sur l'oscilloscope, ainsi que la réaction de la led.

  • La sortie de chaque PLL est ensuite envoyé à un monostable, pour, comme nous l'avons étudié précédemment, générer une impulsion de largeur fixée grâce au potentiomètre associé.

Voyons cela avec des oscillogrammes :

  • Ici nous voyons le déphasage obtenu pour H−Sync. Le signal C−Sync (en jaune), la sortie 3 de la PLL (en bleu), et la sortie Q7 du monostable (en vert) qui déclenche son impulsion sur le front montant du signal de sortie du CD4046.


  • Et de la même manière, nous voyons le déphasage obtenu pour V−Sync. Le signal V−Sync (en jaune), la sortie 3 de la PLL (en bleu), et la sortie Q9 du monostable (en vert).


Lire la suite...

- page 1 de 32