まこと の ブログ

MaKoTo no burogu — Journal de bord…

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

lundi, 24 novembre 2025

Péritel multiple

Un peu de contexte,

Il y a bien longtemps, dans les années '90, j'étais l'heureux propriétaire de deux consoles de jeux, une Sega Master System et une PC Engine qu'on appelait plus simplement la NEC à l'époque.
Quasi toutes mes économies amassées au fil du temps y étaient passées, et il ne me restait pas grand chose mais suffisamment pour acheter un accessoire qui aurait dû me simplifier la vie : un quadrupleur de prises péritel.

En effet, celleux qui ont vécu l'époque savent à quel point il était pénible de brancher un appareil sur une télévision, sachant qu'elles étaient souvent disposées dans un coin peu accessible, voire dans un meuble dédié et que la manœuvre consistait alors à se munir de la dite prise péritel, plonger son bras derrière la télé, et à l'aveugle tenter d'aligner la prise dans celle de la TV… Une galère sans nom, sans compter qu'à force d'opérer, la prise de la TV avait tendance à devenir lâche et devenait alors source de faux contacts générant parasitage vidéo, coupe de son et autre nuisances si on n'avait pas pris soin de bien coincer la prise… Et malheur à celui qui toucherait par mégarde au câble péritel, provoquant alors le déséquilibre de ce savant réglage.
Voilà, donc ça, chaque fois qu'on voulait passer du magnétoscope, ou à une des deux consoles, misère !

  • Au supermaché de mon coin, j'ai donc déboursé 15 Francs, si mes souvenirs sont exacts, pour obtenir l'accessoire qui aurait donc dû me permettre de connecter jusqu'à 4 appareils sur la TV 36 cm à ma disposition.

Sauf que ! Ça n'a jamais fonctionné.
Le simple fait d'avoir plusieurs appareils connectés, même éteints, provoquait une perte de qualité d'image et de son sur l'unique appareil qu'on utilisait.

Débutant à l'époque en électronique, j'ai alors ouvert le quadrupleur et tenté de comprendre l'origine du problème.
Je ne me souviens plus de ce que j'ai conclu alors à la vue du circuit…

  • Par contre aujourd'hui en regardant cette plaquette en bakélite je peux dire que c'est d'une conception catastrophique !

Les quatre prises comportant 12 signaux sont simplement tous connectés ensembles… C'est à dire par exemple que l'appareil allumé envoyait son signal audio/vidéo à la TV, certes, mais aussi aux autres appareils !!! Et si on en allume plusieurs, c'est tout ce monde qui se « repisse dessus » (jargon d'électronicien) joyeusement, quelle horreur ! Surtout quand on sait aujourd'hui (l'ados de l'époque ne savait pas) qu'en plus de ça, les broches 8 et 16 des péritel envoient chacune 5 et 12 Vots. Heureusement que les puissances de tous ces signaux sont très faibles et n'ont pas détruit de matériel.

Je n'avais pas tout compris, cependant j'avais quand même pensé qu'il faudrait isoler les prises péritel les unes des autres, ce que j'avais fait en coupant le circuit des pistes à la surface de la bakélite.
Puis avec le peu de ressources dont je disposais j'ai imaginé et bricolé d'abord un connecteur à l'aide de dominos… Imaginez un peu, souder des fils sur le bornier de la prise péritel mâle, et d'autres sur le pastilles des broches des péritel femelles.
Ces fils sont ensuite vissés d'un côté du dominos noir pour la péritel mâle, et de l'autre côté, j'ai vissé des clous que j'ai coupé à dimensions. Ce montage devenant alors le connecteur mâle.
Puis les fils provenant des 2 broches péritel femelles sont vissés chacun d'un côté des dominos translucide, pour faire les connecteurs femelles. Suffisait alors d'insérer une des deux femelle sur le mâle, en jouant sur la souplesse du domino, ça n'était pas toujours facile mais ça fonctionnait…

  • J'ai retrouvé les dit dominos, j'ai tenté de reproduire la scène, imaginez juste les clous ne dépassant que de 5 mm :


J'ai donc dû percer le boîtier pour sortir les bottes de fils, on verra ces trous de plus prés ensuite.
Et oué, quand t'as pas de permis, pas de voiture, pas de magasin à proximité, tu te débrouilles avec ce que tu as sous la main.

  • Plus tard j'ai découvert l’existance d'un magasin d'électronique accessible en 20 min à pieds de l'école (et 20 min retour…) auprès duquel j'ai pu aller m'acheter des petits interrupteurs inverseurs. J'ai pu disposer du matériel de l'école, me permettant de simplifier mon montage, par une plaquette gravée sur laquelle j'ai soudés tous les fils dont je parlais ci-dessus, afin de les raccorder sur les interrupteurs :


Pour cacher la grand entaille faite dans le boîtier, j'avais collé du carton de chemise colorée. (notez l'isolant en chiffon quadrillé, utilisé là car les seules vis que j'ai trouvé étaient trop grosses et auraient fait court-circuit en touchant les pistes de ma plaquette).
Pour passer d'une péritel à l'autre, au lieu de débrancher un domino pour brancher l'autre, il fallait alors basculer tous les inverseurs dans la position opposée. C'était mieux, mais pas ouf, et on ne disposait là encore que de deux péritel en source audio/vidéo.

Lire la suite...

samedi, 22 novembre 2025

Joystick Arcade pour Nintendo GameCube

La borne est en travaux !
En plus du PC « mame » je souhaite lui installer deux autres systèmes de jeux, dont l'un est la console GameCube.
Motivation ? Jouer à Ikaruga et SoulCalibur sur la borne avec les sticks arcade.
Sauf que ! Comment faire pour connecter ces derniers à la console ?

Avant de réinventer la roue, j'ai traîné sur le web à la recherche d'une proposition de circuit électronique.
J'ai eu un peu de mal à trouver ce que je cherchai, visiblement ça n'intéresse pas trop les foules… L'occasion de constater au passage que la manette GameCube n'était pas aussi électroniquement simple que ses aînées, et qu'il faudrait un circuit programmable pour faire le travail.

J'ai fini par trouver cette page, qui décrit comment construire un contrôleur maison, avec un Arduino, et surtout l’existence de la bibliothèque logicielle adéquate : https://github.com/NicoHood/Nintendo (que je joins en annexe à ce billet)

  • Le code C++ est vraiment très simple à adapter grâce aux exemples donnés, et j'ai alors pu assigner les numéros de broches d'un Arduino Pro Mini 5V aux boutons d'une manette GameCube et établir le schéma de câblage suivant :


Une fois un câble de manette de remplacement acheté, restait alors le plus long à faire, câbler les broches sur le joystick.

  • Ici le brochage est réalisé à l'aide de connecteurs « maisons », qui permettront d'interchanger le joystick entre plusieurs systèmes de jeu (USB ou GameCube pour le moment).


  • Le brochage du câble de la manette est le suivant :
Couleur  −   Usage 

Jaune    −   5V
Blanc    −   GND
Vert     −   GND
Noir     −   GND
Bleu     −   3,3V
Rouge    −   DATA
  • Voici le Scketch à inscrire sur l'Arduino, en ayant pris soins de charger la librairie de NicoHood :

https://github.com/makotoworkshop/Joystick_Arcade_GameCube

#include <Nintendo.h>

// Variables
#define Bouton_A  A1
#define Bouton_B  9
#define Bouton_X  A2
#define Bouton_Y  3
#define Bouton_START  A3
#define Bouton_L  7
#define Bouton_R  8
#define Bouton_Z  2
#define Direction_UP  6
#define Direction_DOWN  5
#define Direction_LEFT  A0
#define Direction_RIGHT  4

// Broche de communication vers la console GameCube
CGamecubeConsole gc_console(10);

// Structure de données de la manette
Gamecube_Data_t gc_data = defaultGamecubeData;


void setup() {
//  Serial.begin(115200);
  // Configuration des boutons en entrée avec résistance pull-up
  pinMode(Bouton_A, INPUT_PULLUP);
  pinMode(Bouton_B, INPUT_PULLUP);
  pinMode(Bouton_X, INPUT_PULLUP);
  pinMode(Bouton_Y, INPUT_PULLUP);
  pinMode(Bouton_START, INPUT_PULLUP);
  pinMode(Bouton_L, INPUT_PULLUP);
  pinMode(Bouton_R, INPUT_PULLUP);
  pinMode(Bouton_Z, INPUT_PULLUP);
  pinMode(Direction_UP, INPUT_PULLUP);
  pinMode(Direction_DOWN, INPUT_PULLUP);
  pinMode(Direction_LEFT, INPUT_PULLUP);
  pinMode(Direction_RIGHT, INPUT_PULLUP);
  delay(100);
}

void loop() {
  // Lecture des boutons
  gc_data.report.a      = !digitalRead(Bouton_A);
  gc_data.report.b      = !digitalRead(Bouton_B);
  gc_data.report.x      = !digitalRead(Bouton_X);
  gc_data.report.y      = !digitalRead(Bouton_Y);
  gc_data.report.start  = !digitalRead(Bouton_START);
  gc_data.report.z      = !digitalRead(Bouton_Z);
  gc_data.report.l      = !digitalRead(Bouton_L);
  gc_data.report.r      = !digitalRead(Bouton_R);

  gc_data.report.dup    = !digitalRead(Direction_UP);
  gc_data.report.ddown  = !digitalRead(Direction_DOWN);
  gc_data.report.dleft  = !digitalRead(Direction_LEFT);
  gc_data.report.dright = !digitalRead(Direction_RIGHT);

  // Stick analogique centré
  gc_data.report.xAxis = 128;
  gc_data.report.yAxis = 128;

  // Stick C centré
  gc_data.report.cxAxis = 128;
  gc_data.report.cyAxis = 128;

  // Gâchettes analogiques à 0
  gc_data.report.left = 0;
  gc_data.report.right = 0;

  // Envoi du rapport à la console de jeux
  gc_console.write(gc_data);

//  Serial.print("bouton Y = ");
//  Serial.println(gc_data.report.y);
  
}

mardi, 9 septembre 2025

RecalStick -1-

Aujourd'hui on va fabriquer un RecalStick !… Un stick avec RecalBox dedans.
Je dispose en effet d'un écran cathodique qui ne demande qu'à afficher de belles images, et d'un Raspberry Pi 4 sur lequel j'ai enfin testé la distribution Recalbox, boite à émulateurs permettant d'exécuter des jeux vidéos d’antan, et je voulais une solution pour faire fonctionner ça joliment.


  • L'émulation sur ce genre de plate-forme étant enfin à peu prés potable, par la puissance maintenant correcte du Rpi – le 4 c'est bien, le 5 je pense qu'on ne fera pas mieux – pour émuler des jeux d'Arcade, et le rendu graphique excellent notamment grâce au module VGA666 compatible avec Recalbox.

On le trouve pour moins de 5€, il suffit de l'enficher sur le Rpi, d'y connecter un câble VGA,

  • alors on pourra brancher ça sur la vieille télé en intercalant un adaptateur VGA vers Péritel câblé comme ceci :
      Prise VGA                —        Prise Péritel

Pin N°1: Vidéo Rouge           —     Pin N°15: Rouge
Pin N°2: Vidéo Vert            —     Pin N°11: Vert
Pin N°3: Vidéo Bleu            —     Pin N°7:  Bleu
Pin N°6: Retour rouge          —     Pin N°13: Masse Rouge
Pin N°7: Retour vert           —     Pin N°9:  Masse Verte
Pin N°8: Retour bleu           —     Pin N°5:  Masse Bleue
Pin N°9: +5 V                  —     Pin N°8:  SWITCH
Pin N°10: Masse                —     Pin N°17: Masse Synchro
Pin N°13: HSync et N°14: VSync —     Pin N°20: Synchro.

Ajouter une résistance de 75 Ohms entre la Pin 8 et 16 de la prise péritel, permet, grâce au 5V en provenance de la carte vidéo, de basculer le TV en RVB sur l'entrée AV.
dsc07537.jpg dsc07535.jpg

Ok, donc on a le micro-ordinateur pour faire tourner des jeux branchés à la TV, il manque la manette et une boite pour l'ordinateur.
Et bien on va combiner les deux pour donc fabriquer (encore !) une sorte de TV Game.


Les plans :

Disponibles en annexe à ce billet, j'ai dessiné le modèle 3D en fonction de plusieurs facteurs importants :
– Je souhaitais que le stick arcade ressemble au Hori Real Arcade Pro VX
– Qu'on puisse l'utiliser posé sur ses genoux
– Qu'il intègre donc le Rpi4
– Qu'on puisse brancher directement les câbles VGA, audio, et alimentation sur le boîtier du stick
– Et aussi un HDMI, comme ça on ne se limite pas aux écrans cathodiques
– Que l'on puisse brancher le câble USB du stick sur évidement le Rpi, mais aussi sur un autre ordinateur
– Qu'on puisse brancher jusqu'à trois autres manettes sur le Rpi Recalbox
– Qu'un bouton permette de basculer le joystick d'un quart de tour pour permettre de jouer aux jeux verticaux à l'horizontale dans le cas où l'on ne peux pas basculer l'écran d'un quart de tour.


Nous avons donc de gauche à droite, sur la façade arrière, l'emplacement du bouton de bascule ¼ de tour, la prise HDMI, la lamelle métallique VGA (qui intégrera la prise audio et la prise alimentation jack), et l'emplacement du Rpi qui laisse l'accès aux 4 prises USB. Il manque pour le moment le trou pour faire sortir le câble USB du circuit manette.

Le matériel :

  • Cette fois je n'ai pas investi dans des fournitures arcade onéreuses Sanwa ou Seimitsu, car l'usage en sera occasionnel.

– J'ai opté pour le célèbre Zippy et des boutons « no-name »
– On dispose aussi d'un câble de déport VGA (une mini-ralonge en somme)
– Un déport mini-HDMI vers HDMI qui intègre aussi un déport USB-C
– Une prise jack femelle audio stéréo
– Une prise jack femelle d'alimentation
– Un énorme dissipateur thermique ventilé qui enserre le Raspberry
– 4 bouts de bois de récupération, préparés à dimensions, constituant le cadre du boîtier
– Un circuit de manette USB qui vient avec ses câbles et ses cosses serties
Ce qui sera au final tellement plus pratique que de tout fabriquer comme je l'ai fait à l'époque

Des lattes de volets, un montant de porte, et une chute non-identifiée.


Lire la suite...

samedi, 19 juillet 2025

Piloter un ventilateur pour Odroid-C2

Le µ-ordinateur Odroid-C2 vient avec un bon dissipateur thermique, mais sans ventilateur.
Il a tendance à fleurter avec les 50°C, surtout par temps caniculaire et d'autant plus s'il est disposé dans un boîtier, ce qui m'a amené à vouloir lui adjoindre un ventilo.

Les vendeurs de boîtiers (le design de l'Odoid-C2 est compatible avec les boîtiers Raspberry-pi 2 et 3) avec ventilateur ont tendance à y mettre un ventilo de 30 mm assez faiblard, quand ce n'est pas simplement un ventilo 12V qui sera donc alimenté en 5V par l'appareil, réduisant sa vitesse de rotation.
L'avantage indéniable c'est qu'il ne fait alors pas trop de bruit.

  • En choisissant comme je l'ai fait un ventilateur 5V, je ne m'attendais pour autant pas à autant d'efficacité pour autant de bruit très gênant.

Nous allons donc voir comment réguler ça.

Au démarrage de l'appareil, avec 26°C de température ambiante, nous avons 36°C pour le CPU ''ARMv'8'. Nous garderons cette température en référence à atteindre.

Au bout de quelques minutes sans rien demander à la machine nous sommes déjà à 42°C. La faire travailler montera encore indéniablement la température.

L'électronique :

Un simple transistor sera utilisé pour interfacer le ventilateur à une pin GPIO de l'appareil.
Elle sera en charge de piloter le transistor avec une PWM logicielle. (oui, impossible de faire fonctionner la PWM matérielle, nous y reviendrons plus loin).

Notez qu'en principe il aurait fallu ajouter une diode de roue-libre aux bornes du ventilateur.

  • Nous avons donc un simple ventilateur à deux broches, et un transistor costaud bien que sur-dimensionné IRLZ44N (un IRL540N fonctionne aussi). J'ai fait avec ce que j'avais sous la main.

C'est ici un transistor CMOS, mais ça fonctionnera aussi bien avec un classique NPN, cependant il faut vérifier sur la datasheet la valeur max du courant iD (Drain Current) ou iC (Collector Current) qu'il est capable d'encaisser.
Un classique BC547 qui encaisse 100 mA serait insuffisant car le ventilateur consomme 120 mA.
Je m'étais alors orienté vers un BS170 qui prend allégrement 500 mA, sauf que !
Il est utile de rappeler que la logique GPIO fonctionne en 0-3,3V, et qu'il faut alors que le transistor soit capable de saturer complètement à 3,3V.
Nous pouvons consulter la valeur de VGS(th) (Gate threshold voltage), et pour le BS170 c'est entre 0,8V et 3,0V, et c'est donc bien au delà de cette dernière valeur qu'il va conduire pleinement.
Expérimentation à l'appui, ce n'est en effet pas suffisant, certes ça déclenche, mais le ventilo ne tourne pas à fond.
Alors qu'avec l'IRLZ44 qui à son VGS(th) à 2V, aucun problème, ça ventile à pleine vitesse.


Lire la suite...

- page 1 de 174