Pad d'arcade

Author avatarHugot | Last edit 9/12/2019 by Clementflipo

Pad d'arcade arcade big.png
Une manette type arcade utilisant le protocole USBHID.
Difficulty
Hard
Duration
1 day(s)
Categories
Play & Hobbies
Cost
50 EUR (€)
Other languages:
français
License : Attribution (CC BY)

Introduction

Le projet fini, dans la version 1.1, propose un Pad arcade compatible Windows (testé sous xp, et 7), non testé sous Mac,Linux. Le protocole USB utilisé est le "HID", ne nécessitant pas de pilote. Le circuit peut supporter soit :

- 2 axes numériques + 24 boutons (2 joueurs arcade)

- 2 axes analogiques + 10 boutons (manette commerciale la plus fréquente)

Le support (boitier) quand à lui est conçu pour porter une Pad arcade 1 joueur.

Materials

  • Circuit imprimé (cf. partie circuit)
  • Pic 18f4550
  • Résistances (3,3k(2) et 3,3k ->10k ohm(14 pour le pad 1 joueur))
  • Capacité (condensateurs 47nf et 100uF)
  • Bois (MDF 5 (ou 6mm))
  • Câble USBA mâle
  • Bouton et stick
  • Pickit 3 (ou autre programmeur)

Tools

Machines utilisées

  • Machine d'impression de circuit (CNC ou imprimante chimique).
  • Découpeuse laser
  • Fer à souder

Logiciel utilisé

  • MPLab IDE 8.91 disponible sur le site de  microchip
  • Eagle ou autre logiciel de CAO

Step 1 - Circuit imprimé

Pour ce qui est du circuit imprimé, je vous propose celui que j'ai conçu.

Il est conseillé d'apporter les améliorations suivantes :

- Ajout d'un plan de masse (pour une gravure du circuit à la CNC, et pour faire moins de bruit CEM)

- Réduction de la taille (coût plus faible et moins de place dans la boîte)




Step 2 - Programmation du PIC

Pour le Pic18f4550 un programmateur Pickit 3 ( ~15€ ) suffis.

Deux logiciels s'offrent à vous :

- MPLab 8.92 + c18 compiler

- MPLab X + xc8 compiler

Pour une simple de raison de programme d'exemple disponible et de prise en main j'ai utilisé MPLab 8.91 + c18 compiler (disponible sur le site de Microchip)

J'ai donc modifié le fichier d'exemple "HID - Mousse" pour en faire un HID - joypad

Les fichiers qui vous seront utiles pour modification sont :

  •  joypad.c
    • #pragma config PLLDIV = X //(X = fréquence du quartz/4Mhz)
    • char buffer[7]; // peut être modifié si vous changez les sorties de la manette
    • void joypad(void) //à modifier si vous changez les sorties
  • usb_config.h
    • #define HID_INT_IN_EP_SIZE      7 //nombre d'octets par message
    • #define HID_RPT01_SIZE          55 // à changer si vous modifiez le "HID report"
    • #define MY_VID 0x04D8 #define MY_PID 0x80FA // éditez si vous avez mieux, ce sont des VID et PID de microchip (non commerciaux)
  • joypad_map.c
    • char Lect_ANX(void)
      • N'est pas utilisé, mais quelques changements permettent d'effectuer la lecture d'un stick analogique.
    • char Lect_XY(void)
      • Permet la lecture de stick numérique (type arcade)
    • char Lect_buton_X_to_Y (void)
      • Permet la lecture des boutons
      • Vous devrez probablement modifier les valeurs : if (botonX == 0) en fonction de vos soudure.
  • joypad_map.h
    • Définie les utilitaires liés à joypad_map.c
      • Pratique pour repérer les liens entre "entrée et bouton"
  • usb_descriptor.c
    • Le fichier le plus complexe que vous pourriez avoir à modifier
    • //Manufacturer string descriptor
      • votre nom, plus ou moins
        • n'oubliez pas de de modifier "string[25]" si vous changez le nombre de caractère
    • //Product string descriptor
      • Le nom qu'il aura dans le système (vue par les jeux et autres)
        • N'oubliez pas de modifier "string[25]" si vous changez le nombre de caractères
          • (un nombre réduit de caractères < 12 , sans accents, est une bonne idée)
    • //Class specific descriptor - HID joypad
      • Bien que je vous déconseille de vous aventurer en terrain dangereux vous devrez toucher à cette horreur si vous souhaitez modifier les sorties du pad.
      • Je n'ai pas tout compris à ce langage mais si vous souhaitez vous y aventurer :
        • "usb_lyser" (payant mais version trial de 30 jour disponible)
          • Peut vous aider en récupérant les HID report des objets que vous connectez en USB à votre PC (souris pas chère, manette,...).
        • MSDEV : Dt.exe (logiciel fournit par Microsoft) permet d'écrire les Bytes(octet) de code du HID report.


Step 3 - Boîtier

La boîte à été faite pour 1 joueur.

Elle contient 10 boutons (8 de jeu + select, start), 1 espace pour le stick et 2 visses pour fermer le capot supérieur. Le capot inférieur est fixé par de la colle à bois aux quatre contours.




Step 4 - Résultat final

Bravo votre borne est finie !




Notes and references

Un projet réalisé au fablab LabBoîte de Cergy à retrouver aussi sur github.com/hugotpichon/arcpad-pic18f4550.

Comments

Published