Pour réaliser certains projets, un circuit permettant de relier 16 boutons (dont 4 sont directionels) à
un ordinateur via USB est très pratique.
Exemples d'applications:
Manette style arcade ou intégration dans une borne d'arcade avec PC.
Adaptateurs de manettes simples (1 fil par bouton) à USB. Ex: Neo-Geo, Atari...
Avec les bons logiciels du côté PC, les entrées boutons peuvent servir à bien
d'autres choses. Ex: commutateurs, interrupteurs de fin de course, alarmes... Beaucoup plus propre que de modifier une manette
existante.
Caractéristiques du projet:
Total de 16 entrées
12 Entrées pour boutons
4 Entrées pour directions (joystick ou boutons)
Interface USB conforme à la classe HID. Fonctionne sans installer de pilotes supplémentaires
avec la plupart des systèmes. (Linux, WinXP, Win7, 32 et 64 bits)
Points de soudure perforés pour installation facile des fils.
Beaucoup d'espace entre les points de soudure.
Conducteur commun (GND) dédié pour chaque bouton. Facilite le câblage.
Ce projet est basé sur le microcontrôleur ATmega8a 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 de communiquer en USB avec un minimum de
composantes externes.
Câblage
Diagramme de câblage
Le câblage n'est pas très compliqué. Pour chaque bouton, deux fils. D'abord le conducteur de
l'entrée respective (Direction ou Bouton X) et ensuite le conducteur commun (GND dans ce design).
Le logicile s'attends à ce que le boutons soient de type normalement ouvert (NO). Il faut donc
sélectionner ce type ou utiliser les broches correspondantes (souvent marquées "NO" et "COM").
Note: Normalement Ouvert = Conduit lorsqu'appuyé. Le mot 'ouvert' est pour 'circuit ouvert'.
Voici maintenant à quel GPIO corresponds chaque fonction.
Nom AVR
Fonction
Nom AVR
Fonction
PORTD 4
Haut
PORTC 5
Bas
PORTC 4
Gauche
PORTD 3
Droite
PORTC 3
Bouton 12
PORTC 2
Bouton 11
PORTB 5
Bouton 10
PORTC 1
Bouton 9
PORTD 5
Bouton 8
PORTB 4
Bouton 7
PORTB 3
Bouton 6
PORTB 2
Bouton 5
PORTB 1
Bouton 4
PORTB 0
Bouton 3
PORTD 7
Bouton 2
PORTD 6
Bouton 1
Programmation du microcontrôleur
Les microcontrôleurs sont des pièces qui doivent être programmées. Voici le fichier à programmer: usb_game16-1.0.hex
Le microcontrôleur doit être configuré pour utiliser un cristal haute fréquence. La valeur par défaut
des fuses ne conviennent pas. 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
Le code source est disponible sous license GPLv2 et est compilé avec avr-gcc.
Pour éviter des conflits, si vous faites des changements au report descriptor,
ne distribuez pas le résultat sans avoir remplacé le USB Vendor+product ID par
le votre. usb_game16-1.0.tar.gz
Exemple 1: Câblage NeoGeo
Les contrôles de NeoGeo utilisent une prise de type DB15 standard et sont d'une conception très
simple qui utilise un fil par bouton en plus d'un conducteur commun. Il est donc facile
de réaliser un adaptateur en utilisant ce circuit.
Voici une table expliquant comment utiliser un joystick NeoGeo sur ce circuit:
DB15
Nom NeoGeo
Nom USB_Game12
Commentaire(s)
1
Common
Gnd (n'importe lequel)
3
Select
Bouton 6
4
D Button
Bouton 4
5
B Button
Bouton 2
6
Right
Right
7
Down
Down
8
+5v
VCC
Pour certaines manettes seulement
9
D Button
Bouton 4
Double de la pin 4
11
Start
Bouton 5
12
C button
Bouton 3
13
A button
Bouton 1
14
Left
Left
15
Up
Up
(Les broches 2 et 10 du DB15 ne sont pas utilisées)
Exemple 2: Manette arcade
Voici un exemple de manette d'arcade à 4 boutons. Comme je n'avais que des boutons (pas de joystick),
j'ai décidé d'expérimenter en installant quatres boutons en croix pour les directions.
C'était difficile à utiliser au début et je me suis même dit que j'avais fait une erreur.
Mais après quelques minutes de jeu, je me suis rendu compte que je m'étais habitué
et que ce n'était pas si mal...
Comme nous pouvons le voir ici, j'ai soudé les fils directement sur les microswitch.
Cela n'est pas idéal pour la maintenance, mais bon.
Je compte revoir le positionnement et le nombre de boutons. Aussi, je compte
faire (ou faire faire) une finission beaucoup plus artistique. À suivre..
Avertissement
Je ne saurais être tenu responsable pour les dommages
que l'utilisation des informations ou la mise en œuvre des instructions présentées
sur cette page pourrait causer à votre équipement,
à vous-même ou à autrui. Aussi, je ne donne aucune garantie quant
à l'exactitude des informations et à leur fonctionnement.