|
||||||||
|
||||||||
| This page is also available in English | ||||||||
| L'idée | [cacher] |
Lorsqu'on joue à des jeux NES et SNES avec un émulateur, l'idéal est
bien sur d'utiliser les manettes (et souris) d'origine.Pendant plusieurs annés, plusieurs personnes dont moi l'ont fait en contruisant un adaptateur pour port parallèle. Malheureusement, les ports parallèles sont de plus en plus rare car de nos jours, ce genre de Périphérique utiliserait USB. C'est donc pour cette raison que j'ai décidé de contruire un convertiseur manette NES/SNES à USB. Cependant, à cause de la nature d'USB, l'adaptateur est un peu plus complexe. Note: Il existe maintenant une version supportant jusqu'à quatres manettes de NES et/ou SNES. |
| Nouvelles | [cacher] |
|
| Résumé de la solution | [cacher] |
J'ai construit mon adaptateur en utilisant le microcontrôleur ATmega8 d'Atmel. Ce microcontrôleur
ne supporte pas USB nativement alors j'ai utilisé le pilote USB logiciel-seulement
codé par Objective Development.
Ce pilote permet a un microcontrôleur AVR tel que l'ATmega8 de communiquer en USB avec
un minimum de composantes externes. Grace à cela, l'adaptateur peut être construit
facilement, sans se ruiner.
Selon vos habiletés, vous pouvez construire l'adaptateur sur un 'breadboard' (En français c'est quoi?)
en utilisant des composantes standards ou la version 'montage en surface' en utilisant
le dessin de circuit-imprimé fourni.
Je peux aussi vous vendre des circuits-imprimés seuls pré-asemblés
et des microcontroleurs (boitier DIP seulement) pré-programmés. Au besoin,
visitez mon
magasin en ligne (anglais seulement pour l'instant).
Pas besoin de pilotes! Le standard USB définit certaines classes de périphériques. Dans ce project, j'utilise la classe HID (Humain input device) qui permet de communiquer à l'ordinateur de façon générique que le périphérique connecté est un controleur de jeu possédant 2 axes et 4 ou 8 boutons. Ceci permet au circuit de fonctionner sous plusieurs systèmes d'exploitation automatiquement, en autant que le système en question supporte USB et la classe HID. (J'ai essayé et ça fonctionne sous Win98, Win2K, WinXP et Linux) |
| Shéma | [cacher] |
Voici le shéma:
Une version pdf est aussi disponible (plus beau à voir et s'imprime mieux): sch-revD.pdf Liste de pièces:
Pour la connection USB, simplement dénuder un cable USB et souder les fils directement sur le circuit. USB utilise des couleurs de fils standardisés:
Versions précédentes: schematic-revA.png schematic-revA.pdf sch-revB.png sch-revB.pdf |
| Programmation du microcontrôleur | [cacher] |
Les microcontroleurs sont des composantes qui doivent être programmés pour
qu'elles fassent quelque chose d'utile. Voici donc le fichier .hex qu'il faut programmer
dans le microcontroleur:
Plusieurs micro-contrôleurs possèdent ce qu'on appelle 'Fuse bytes'. Dans le cas du ATmega8, il y en a deux: Le 'high byte' et le 'low byte'. Ces deux octets servent à configurer certains paramètres du microcontroleur. Quel type d'horloge? Crystal? Résonateur? Oscillateur RC interne? Permettre la programmation par ISP? Il est très important de configurer les fuse bytes avec les bonnes valeurs. L'utilisation de mauvaises valeurs peut rendre le microcontroleur inutilisable. Pour ce projet, voici les bonnes valeurs: high byte = 0xc9, low byte = 0x9f Pour de l'information sur la programmation d'un AVR, visitez ma page sur la programmation d'AVR |
| Code source | [cacher] |
Pour ceux qui aimeraient modifier le comportement de l'adaptateur
ou supporter d'autres types de manettes, voici le code source. Depuis la
version 1.5, le code est publié sous la license GPLv2. Les version
antérieures était sous la license d'Objective Development, qui est en
fait GPL avec quelques extensions pour couvrir le matériel
(le circuit). Voir le fichier License.txt pour plus d'information.
Contactez moi à l'addresse raph@raphnet.net si vous faites des modifications intéressantes. Modifications apportés au pilote USB d'Objective Development: Le cavalier de sélection de mode SNES/NES affecte le contenu du 'report descriptor'. Pour que ça soit possible, j'ai modifié le pilote USB d'Objective Development. Voici un 'diff' généré à partir du pilote USB contenu dans HIDKeys.2006-03-14: usbdrv-diff Combinaison Vendor ID/Product ID USB: Veuillez ne pas réutiliser ma combinaison VID/PID pour des projets dérivés ou autres. Obtenez-en un vous-même. J'ai acheté les miens chez mecanique, et ça coute beaucoup moins cher que de devenir membre du forum des implémenteurs USB (2000$ US)... |
| Circuit imprimé pour la version 'montage en surface' | [cacher] |
La version montage en surface comporte plusieurs avantages:
Voici une vue composée de la révision C du circuit-imprimé:
Voici comme référence la vue composé de la révision B: snes_nes_usb_pcb_revB.png Voici les fichiers gerber à utiliser pour contruire vos propres circuits imprimés: Révision C: snesusb_revC.zip Révision B: snes_nes_usb_PCB-revB.zip |
| Assemblage de la version 'montage en surface' (rev. C) | [cacher] |
Étape 1: Utilisez la vue composée,
la liste des composantes et le shéma
pour trouver l'endroit ou mettre chaque composantes. Après avoir tout soudé,
inspectez le tout soigneusement pour éviter les ponts de soudures et les soudures
froides. IMPORTANT: Faire un pont de soudure entre PD1 et PD0 (voir shéma).
Étape 2: Utilisez le shéma de gauche approprié pour savoir ou souder les fils
USB, ISP et ceux de la manette. Le cable ISP peut être construit avec un connecteur
2x3 et un morceau de cable plat. Le 'pinout' du shéma suit le standard d'atmel pour
l'ISP des AVR via 6 fils.
Étape 3: Si vous voulez utiliser une manette de NES, fermez JP1 en
faisant un pont de soudure ou en soudant un petit bout de fil. Si vous utilisez une manette
à connecteur DB9 (ex: Atari), fermez JP1 et JP2. Regardez les images à droite pour des exemples.
Étape 4: Branchez le cable ISP et le cable USB. Utilisez un programmeur pour programmer le fichier hex dans l'ATmega8. Ensuite, configurez les 'fuses bytes' (High byte=0xc9, low byte=0x9f) correctement. Étape 5: Essayez l'adaptateur avec un jeu. Si tout fonctionne bien, enlevez le cable ISP si vous ne prévoyez pas mettre à jour le code. Maintenant pour protéger le circuit, utilisez une petite boite ou mettez le à l'intérieur d'une gaine thermo-rétractable. Je vous recommande aussi de mettre un peu de colle chaude par dessus les soudures des fils, pour empêcher les fils de se briser en cet endroit. Étape 6: Amusez-vous! |
| Assemblage de la version 'montage en surface' (rev. A et rev. B) | [afficher] |
| Images et saisies d'écran | [cacher] |
| Photos provenant des utilisateurs | [cacher] |
| Faites moi parvenir des photo de vos montages, j'aimerais bien en mettre plus ici. Tobias Schulte, d'Allemagne, m'a fait parvenir ces photos: Tjerk Kuperus a construit ce circuit et mon circuit manette d'arcade pour snes sur une seule plaque: Andreas Kronawetter, d'Autriche, a construit le circuit dans une manette de NES:
![]() JP des Pays bas s'est construit une manette SNES USB:
|
| Avertissement | [cacher] |
|
Je ne saurais être tenu responsable pour les dommages
que la mise en oeuvre des instructions présentées
sur cette page pourraient causer à votre équipement
ou à vous-même. Aussi, je ne donne aucune garantie quant
à l'exactitude des informations et à leur fonctionnement.
Notez toutefois que les procédures ci-haut ont fonctionnées
sans aucun problème pour moi. |
Site codé avec![]() | Dernière mise à jour: 02 Juillet 2009 |