Adaptation d'une manette Intellivision à USB
Résumé du projet

On m'a demandé d'essayer de convertir une manette d'Intellivision 1 à USB et j'ai réussi.
Le résultat final est visible sur la photo à gauche.
Une partie amusante de ce projet a été d'avoir à découvrir le fonctionnement de la manette
moi même. En effet, mes recherches ne m'ont pas permis d'obtenir de l'information pertinante
sur le fonctionnement de la manette. Mais ne vous en faites pas, j'ai au moins pris le temps
de documenter son fonctionnement dans la section
fonctionnement.
Les caractéristiques principales du résultat sont:
- Les 16 directions (+ la position centrale) du disque sont fonctionnelles
- Les 12 boutons "Téléphone" fonctionnent
- Les 4 boutons sur les côtés fonctionnent (Mais les deux boutons supérieurs sont équivalents)
- Pas de pilotes nécéssaires. L'adaptateur est conforme au standard USB HID (Human Input Device)
Retour en haut
Schéma
Voici le schéma:

Une table faisant correspondre les numéros de fils avec des couleurs est donnée dans la section
Fonctionnement.
Important:
Ces numéros de fils sont pour les manette d'
Intellivision 1 seulement! Pour le moment,
je n'ai aucune idée du câblage des autres manettes similaires. Si vous souhaitez essayer avec
une autre manette, je vous suggère d'utiliser l'information de la section
fonctionnement
pour comparer avec votre manette. N'oubliez pas de me faire connaître vos résultats!
Liste des composantes:
| Ref | Description |
| U2 | Un microcontroleur ATmega8. ATMEGA8-16PC, ATMEGA8-16PI, ATMEGA8-16PJ ou ATMEGA8-16PU. Ne pas utiliser un ATMEGA8L-*, car l'horloge de 12Mhz dépasserait la limite. |
| R1 | Résistance de 1.5k. Ordinaire au carbone 1/4 watt. |
| R2, R3 | Résistance de 68 ohms. Ordinaire au carbone 1/4 watt. |
| D2, D3 | Diodes Zener de 3.6 volts. |
| Y1 | Crystal de 12 mhz |
| C2, C3 | Condensateurs de 18 pf. Si votre crystal recommande une autre valeur, utilisez la. |
| C1 | Condensateur de 1 uf. Installer près du ATmega8. |
| J2 | Connecteur 2x3 (6 broches), espacement 2.54mm. Pour la programmation du ATmega8. |
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, mais faites attention, il y a parfois des exceptions.
| Couleur | Description |
|---|
| | Rouge | +5 volts |
| | Noir | Ground |
| | Vert | D+ |
| | Blanc | D- |
Retour en haut
Programmation du microcontrôleur
Les micrôcontroleurs 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:
intellivusb-1.0.hex
Plusieurs microcontrôleurs possèdent quelque chose 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 microcontrôleur. Quel type d'horloge? Crystal? Résonateur? Oscillateur RC interne? Permettre
la programmation par ISP?
Il est impératif de configurer les fuse bytes avec les bonnes valeurs.
L'utilisation de mauvaises valeurs peut rendre le microcontrôleur 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
Retour en haut
Code source
Le code source est disponible sous licence GPL et se compile avec avr-gcc. Pour éviter
des conflits, veuillez ne pas distribuer de versions où le
report descriptor a été
modifié sans d'abord remplacer le
Vendor ID et
Product ID par les vôtres.
intellivusb-1.0.tar.gz
Retour en haut
Circuit imprimé pour montage en surface
La version en montage en surface utlise mon circuit imprimé
Multiuse PCB2.
Voici à quoi ce projet ressemble lorsque ce circuit est utilisé:
Multiuse PCB2:
|
Câblage pour Intellivision 1:
|
Retour en haut
Fonctionnement
Au début du projet j'ai cherché sur le net pour de l'information concernant le fontionnement
de la manette mais je n'ai rien trouvé d'utile. J'ai donc du découvrir
le fonctionnement moi même. Ce fut bien intéressant. Voici donc
comment la manette fonctionne. (D'après mes observations).
La manette possède 12 boutons placés comme sur un clavier de téléphone, 4 boutons
sur les côtés (Les boutons supérieurs de chaque côté sont équivalents), et un
disque rotatif.
La manette que j'ai utilisé (Intellivision 1) possède 9 conducteurs et le connecteur
est prévu pour être branché à l'intérieur de la console. Voici une table associant les couleurs
et les numéros de fils:
| # | Couleur |
| 1 | Brun |
| 2 | Rouge |
| 3 | Orange |
| 4 | Jaune |
| 5 | Vert |
| 6 | Bleu |
| 7 | Violet |
| 8 | Gris foncé |
| 9 | Gris pâle |
Considérant qu'il y a seulement 9 fils et qu'il n'y a pas d'électronique
dans la manete, il est évident que les boutons sont organisés sous
forme de matrice. Il faut donc en faire le balayage en logiciel. Voici
un tableau montrant la relation entre les fils et les boutons:
Le disque détecte 16 directions différentes. La direction actuelle
est transmise en utilisant 6 fils (#2 à #6, #1 commun). On constate que ces
fils entrent en conflit avec ceux du clavier 'téléphone'. Ces pourquoi les
12 boutons 'téléphone' ne peuvent pas être utilisés en même temps que le
disque. On remarque qu'il y a toujours qu'un seul bit qui change entre les
directions adjacentes. Cela vous rappelle le code Gray?

Lorsqu'aucun des fils #2 à #6 est relié au fil 1, le disque est à la position de
repos (Aucune direction/Centré).
Avertissement
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.
Retour en haut