{{tag>dev arduino joystick usb hid}} ====== Arduino: Joystick ====== Il est possible de modifier le firmware de la puce de communication FTDI présente sur la carte Arduino pour qu'elle soit reconnue comme un périphérique USB HID de type joystick. C'est ce que permet de faire le projet **UnoJoy** d' Alan Chatham. Cette manipulation est réversible, on pourra flasher le firmware original depuis l'IDE. Cloner le projet git clone https://github.com/AlanChatham/UnoJoy.git cd UnoJoy Le système se compose de 3 parties: - outils logiciels de flashage: dfu-tools sous Linux pour flasher le firmware sur la puce de communication de la carte Arduino; - Le firmware - La bibliothèque UnoJoy pour Arduino à ajouter au Sketch ===== Flasher le firmware ===== Installer le paquet **dfu-programmer** sudo apt install dfu-programmer Activer le mode DFU((**D**evice **F**irmware **U**pdate)): * Mettre l'Arduino sous tension * Placer brièvement le cavalier sur les broches 5-6 (les plus proches du connecteur USB) pour redémarrer la carte en mode DFU Flasher le firmware en exécutant le script: $ cd UnoJoy $ sudo ./TurnIntoAJoystick.sh La commande retourne les messages suivants: . Abracadabra! Trying to program for Arduino Uno R1/R2... Validating... 2596 bytes used (63.38%) Unplug your Arduino and plug it back in. It's a joystick now! Déconnecter/reconnecter la carte sur le port USB. Si on affiche à présent les périphériques USB, on peut voir dans la liste un device "Silicon Labs UnoJoy Joystick" $ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 04f2:b541 Chicony Electronics Co., Ltd Integrated Camera Bus 001 Device 002: ID 8087:0a2b Intel Corp. Bus 001 Device 008: ID 10c4:82c0 Silicon Labs UnoJoy Joystick Bus 001 Device 004: ID 275d:0ba6 USB OPTICAL MOUSE Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Dans cet exemple présent sur le bus 001 périphérique 008, on peut afficher ces informations détaillées avec la commande: lsusb -D /dev/bus/usb/001/008 ===== Tester ===== Tester/recalibrer le périphérique avec l'application **jstest-gtk**: sudo apt install jstest-gtk ===== Références ===== * https://create.arduino.cc/projecthub/Ingeimaks/arduino-joystick-8c9722 * https://github.com/AlanChatham/UnoJoy * https://www.arduino.cc/en/Hacking/DFUProgramming8U2 * [[https://www.thingiverse.com/thing:4576634|Joystick imprimable arduino effet hall]]