Gamoover

[move]Vous vous épilez le maillot et collectionnez les bornes d'arcade avec des hommes musclés dessus ? Alors soyez les bienvenus sur Gamoover ! [/move]

Arduino et contrôles analogiques

Démarré par lipide512, Dimanche 09 Décembre 2012, 18:21:48 PM

lipide512

Bonsoir à tous !

J'ai depuis quelques temps quelques meubles sega rally sur les bras, l'un d'eux que je vais conserver était en assez bon état. Mais le hardware sega m'a fait un peu peur pour le long terme. Donc j'ai décidé de convertir ma machine en emulation model 2.

Pour ce faire je ne souhaitais pas me séparer des contrôles d'origine. Seul souci, l'ensemble des contrôleurs sega utilisent des potentiomètres 5kO ou 10kO. Il y a la solution d'utiliser une carte de conversion de valeur... mais c'est bien indépendant de l'interface qui devra être en plus derrière.

La solution que j'ai sélectionné se base sur le projet UnoJoy qui permet de transformer le petit module expérimental Arduino Uno en interface joystick HID sous windows et sur ps3.

Le diagramme des boutons reprend donc le schéma d'une manette ps2/ps3.

Au niveau du module, pour ceux qui ne connaissent pas, il s'agit de ça :


Le arduino en photo est une copie chinoise, le arduino étant une interface universelle et opensource.

Plus d'infos ici :
http://www.arduino.cc/

Ça coute actuellement 11.61 euros frais de port inclus sur dealextreme.
http://dx.com/p/funduino-uno-r3-mega328p-board-for-hw-sw-engineers-development-tools-150802

Vous disposez basiquement de 6 entrées analogiques et 10 entrées digitales (dans un premier temps)
L'avantage c'est que la lecture sera possible quelque soit le potentiomètre branché (et ça c'est cool !)



Dans mon cas je l'utilise pour le volant, les pédales, les boutons start / VR, TEST, SERVICE ainsi que la boite vitesse qui est assignée aux points de vue.

A l'utilisation, c'est parfait.

La seule différence avec une programmation classique du arduino réside dans la possibilité de le faire reconnaitre directement en périphérique HID (autrement dit en joystick).

Cela nécessite le passage en mode DFU puis le lancement d'une commande BAT. C'est assez simple et facile à mettre en œuvre.

Le lien vers l'excellent projet Unojoy :
http://unojoy.tumblr.com/




LE MINI TUTO

Notice : Toute l'équipe et moi même ne pourront être pris pour responsables de tous dégâts physiques, financiers ou intellectuels à la suite de la lecture de ce mini-tuto.

Les archives nécessaires :

arduino-1.0.3-windows
http://arduino.cc/en/Main/Software

JRE – ATMEL Flip Installer - 3.4.5.106
http://code.google.com/p/unojoy/downloads/detail?name=JRE%20-%20Flip%20Installer%20-%203.4.5.106.exe

UnoJoyWin-24May2012
http://code.google.com/p/unojoy/downloads/detail?name=UnoJoyWin-24May2012.zip

On commence par installer les softs et dezipper les archives arduino et unojoy.



Il faut installer le drivers pour le arduino rev3 (celui dispo sur le lien dealextreme)
sous 8 ça peut poser quelques inconvénients parce qu'ils ne sont pas signés. J'ai mis à la fin la procédure pour bypasser ce pb. (j'ai fait le tuto sous 8)

Une fois le drivers installé, le arduino sera configuré par défaut en com3 ...au besoin nous pouvons le passer en com1 si il est libre dans le panneau de config / système / périphériques et arduino -> avancé

S'il reste en com3 bien s'assurer que le arduino est reconnu dans le logiciel de programmation arduino.

Nous allons injecter ou téléverser le code unojoy dans le arduino :
Exécutez arduino.exe dans arduino-1.0.3 et fichier->ouvrir-> sélectionner le fichier « UnoJoyArduinoSample.ino » dans le répertoire unojoywin-> UnoJoyArduinoSample



- Une fois le code *.ino chargé téléversez !



Installez "atmel_flip" et "atmel_dfu mode" dans le répertoire unojoywin->drivers
(il s'agit de libs nécessaires au passage en mode spécifique pour changer le type de hid du arduino)

- Passez le arduino en mode DFU en touchant brièvement les pins.



Rendez vous dans le répertoire unojoy :

- Lancer le ficher « TurnIntoAJoystick.bat »



Deux séquences se lancent successivement, la seconde est dédiée spécifiquement à notre arduino Uno R3 : 0 erreur, c'est un succès !:)

Si vous rencontrez une erreur assurez vous d'avoir tout fait dans l'ordre.

Plus qu'à débrancher et rebrancher le arduino du port usb et il est reconnu comme un joystick dans le panneau de configuration, aucun driver n'est nécessaire.



Les interfaces digitales sont les boutons - pour les faire agir, il faut faire un circuit entre le GND de la même colonne et un des boutons...



Pour l'analogique :

Il faut apporter le +5 de la colonne A, le brancher à une extrémité du bornier du potentiomètre et prendre la masse à l'autre extrémité. La pin du milieu qui nous servira de curseur sera la valeur du potentiomètre en fonction de sa position : elle sera reliée sur le bornier de A0 à A5... selon l'axe que l'on veut piloter.



Vous pouvez inverser la valeur en inversant +5V et GND.

FAQ :

Le arduino reboote ou plante :
Il s'agit d'une mauvaise connexion et d'un court circuit franc.
Vous comprendrez qu'il vaut mieux éviter.

L'usb clignote ...
raison idem ci-dessus

Le arduino est vu comme un joystick mais ne répond à rien même à un test sur un port digital:

c'est que la séquence de téléversement a dû échouer. Assurez vous bien qu'elle est un succès.

Le arduino ne répond pas normalement aux contrôles analogiques dans le panneaux de configuration :
cela vient du fait que le arduino n'a pas de valeur d'entrée sur des pins analogiques. Ce n'est pas un problème tant que vous sélectionnez un axe exploitable pour votre application. Il faut faire la bonne combinaison selon votre utilisation.

La plage d'utilisation n'est pas bonne :
Faites un calibrage sous windows dans le panneau de configuration.

Certains jeux/roms accélèrent ou freinent tout seul:
Il faut inverser l'axe dans la configuration de l'émulateur / jeu ou intervertir les +5V et la masse du potentiomètre incriminé... sous mame certaines roms exploitent la valeur du potentiomètre à l'envers... c'est étrange mais je l'ai remarqué - il faudra les configurer séparément

Voilà.

=:))

CitationDrivers Arduino non certifiés et windows 8, voici la procédure en VO :

I have come up with an alternative method to install the Arduino drivers on Windows 8.
This method does not require new driver files or installation of a test signature.

1. Windows Key + R
2. Enter shutdown.exe /r /o /f /t 00
3. Click the "OK" button
4. System will restart to a "Choose an option" screen
5. Select "Troubleshoot" from "Choose an option" screen
6. Select "Advanced options" from "Troubleshoot" screen
7. Select "Windows Startup Settings" from "Advanced options" screen
8. Click "Restart" button
9. System will restart to "Advanced Boot Options" screen
10. Select "Disable Driver Signature Enforcement"
11. Once the system starts, install the Arduino drivers as you would on Windows 7

AsPiC

Citation de: lipide512 le Dimanche 09 Décembre 2012, 18:21:48 PM
Je pourrais détailler la procédure si vous êtes intéressés vu que j'ai encore 2 machines à équiper.

A ton avis =?= :D

Merci par avance ;)

Little_Rabbit

Salut,

Même si je n'ai pas de racecab SEGA, je vais suivre ce projet avec grand intérêt !  ^-

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

francois95470

"trop de compétence tue l'incompétence"

Recherche: borne crazy taxi ou jumbo safari.

lipide512

ok pour un petit tuto ! :)
Je m'étonne d'ailleurs que personne n'ai déjà proposé cette solution tellement c'est simple.

Le projet peut s'adapter très facilement à vos besoins : vous pouvez aussi interfacer un panel 1 joueur digital + spinners par exemple... ce sera un de mes prochains wip pour faire évoluer une borne proprement et jouer à Arkanoid dans de bonnes conditions.

Notez que vous pouvez assigner des touches via joy2key comme avec n'importe lequel de vos joystick / interface USB, je pense à ESCAPE par exemple pour sortir des emuls.

J'ai un petit diagramme des sorties dispo ainsi que le câblage d'un potentiomètre (ça peut aider certains) je le posterai demain.
Niveau électricité, le arduino sort du 5v de l'usb pour les potentiomètres donc il est autonome.

La dernière version de unojoy devrait permettre d'émuler deux joysticks.

ps : le arduino en photo est une copie chinoise, le arduino étant une interface universelle et opensource.

Plus d'infos ici :
http://www.arduino.cc/
Le lien vers l'excellent projet Unojoy :
http://unojoy.tumblr.com/

Maitre_Poulpi

Super  ^-
Ca parait simple pour toi, mais pour celui qui n'a jamais tripoté les arduino&co faut relire plusieurs fois...  :D

J'ai une question quand même puisqu'il est fait mention des contrôles d'origine : Quid du retour de force ?
May the Gamooforce be with you !
À partir du moment où un fou sait qu'il l'est, peut-on toujours le nommer ainsi ?
Boulot, rétro, dodo... et un peu (beaucoup) de TATC© (Touche A Tout Compulsif)...
Le WIP en slip et le hack Sega en Pijama !

lipide512

#6
Non c'est vraiment simple... mais j'ai relu plusieurs fois !   :-\

Pas de retour de force dans le projet initial désolé... Donc pour notre application, on se cantonne aux contrôles analogiques classiques : pédales, volants, spinners, potentiomètres, joy analogiques...

edit : guidons, manettes, poignées... aussi ... ;)


Il est clair que si via le hid, le arduino pouvait renseigner un relais... ce serait carrément énorme.

Je vais demander conseil à un pro ! :)




aganim

Super idée :)
L'interface ne dispose pas de sortie ? (pour justement pousser un peu le concept et voir pour le retour de force  :o)

lipide512

Si justement, on peut faire ce que l'on veut en E/S.

Niveau relais faut voir si un modèle 4 sorties en 10A peut coller... celui ci-dessous coute 6.03 € !:)

http://dx.com/p/arduino-compatible-4-channel-relay-shield-module-144762

CitationArduino Compatible 4-Channel Relay Shield Module
ModelN/AQuantity1MaterialPCBFeatures4-channel input and output system; Control signal: TTL level; Rated loading: AC 250V / 10A; AC 125V / 10A, DC 30V / 10A; DC 28V / 10AApplicationArduino DIY projectP


Noelfhim

Citation de: lipide512 le Lundi 10 Décembre 2012, 07:44:39 AM
Niveau relais faut voir si un modèle 4 sorties en 10A peut coller... celui ci-dessous coute 6.03 € !:)

Hello,

A noter qu'on peut aussi prendre un relais lambda et ajouter les composants en complément (de mémoire une résistance et une diode).

On peut aussi commander plus de relais qu'on a de sorties analogique. Là encore c'est de mémoire mais avec 3 ou 4 sorties on peut commander le nombre qu'on veut du moment qu'on n'a pas besoin d'une réponse instantanée (ça doit être rapide quand même, j'avoue ne pas avoir eu l'occasion de tester) :
On met une puce et on cycle entre ses sorties. Du coup, on peut avoir le nombre de sorties qu'on veut, simplement on envoie une séquence de 0 et de 1 à appliquer par la puce aux différentes sorties.

Pour les curieux :
Augmenter le nbre de sorties avec 74HC595N

Régis.

lipide512

Suite à quelques discussion, cela parait très envisageable d'interfacer le ffb sur un arduino via les relais... faudra juste s'assurer que ça correspond au mode de fonctionnement du volant. Par contre perso j'ai pas le skill et mon beauf n'a pas le temps (déjà plein de projets en cours...)

Si quelqu'un se sent de plancher sur le sujet, je pense que ça peut être quelque chose de plus universel que l'aganyte board... puisque dans le relais on rentre ce qu'on veut... En plus j'ai dans un coin un panel de model 2 à modifier... dès que j'ai trouvé un volant à mettre dessus !  ;D

Iro

#11
BP avec déja fait quelque chose avec le BP79.
:)

Citation de: lipide512 le Dimanche 09 Décembre 2012, 18:21:48 PM
La solution que j'ai sélectionné se base sur le projet UnoJoy qui permet de transformer le petit module expérimental Arduino Uno en interface joystick HID sous windows et sur ps3.
Mais on va perdre le force feedback du logitech/L2M2 ?
Et en branchant les potards d'origines sur le logitech, c'est finalement ce que fait ton montage :D

EDIT : J'ai lu de travers, tu réponds donc à mes questions  :-\
Je pense que le projet le plus utile serait juste une conversion de valeurs/plage d'utilisation d'un potentiomètres.C'est universel et pas besoin de se soucier du matériel derrière.
Si je peux me permettre , le mieux serait que tu essayes le BP79 , quitte à l'améliorer, et de nous faire un tuto pour une mise en place facile.
Car je l'avais essayé et je m'étais heurté à certains problèmes.
:)

Pour les relais du FFB , Aganyte avait déjà essayé mais l'oscillation était trop importante et il restait collé.
Je pense que c'est un chouette projet. Mais je pense qu'Aganyte a fait une belle avancée sur le sujet pour le Happ/Model2 et ré-inventer la roue serait dommage  :-\
:)
"Jet set 2, c'est avec Robert Garcia ?" Kaneda, Lapsus de sac Vol.1
Peter Shou Owner' Club

WIPs : Naomi - SEGA Rally - AB Cop - Lethal Enforcers - COMPUMI - Terminator 2 - Space Invaders - Artworks pour Boitiers K7 Naomi CF - Ma collec' de panels

LES TUTOS DE GAMO   

Maitre_Poulpi

Moi je vous avouerais que je suis un peu perdu sur les solutions à mettre en place.
Si j'ai à peu près suivi (j'ai pas pu tout lire et des fois j'ai un peu décroché je l'avoue) :
- La carte d'Aganyte permet d'interfacer un volant Happ en utilisant l'électronique d'un Logitech (et, à priori devrait fonctionner avec d'autres type de volant fonctionnant sur le même principe)
- Le projet de BP permet de convertir les valeurs des potentiomètres pour rendre universel ?
- Le projet proposé par Lipide serait de pouvoir interfacer un volant sur une ps3 ou un pc (ce que fait BP en fait?)

Donc l'idéal serait de pouvoir interfacer un volant sega ou happ sur un pc ou une console de façon universelle sans avoir à dépouiller/utiliser un autre volant. On laisse tout d'origine et on branche dessus, genre faire une universal racing cab en jamma et on y met ce qu'on y veut ensuite ?

J'ai bon ou j'ai rien compris ?
May the Gamooforce be with you !
À partir du moment où un fou sait qu'il l'est, peut-on toujours le nommer ainsi ?
Boulot, rétro, dodo... et un peu (beaucoup) de TATC© (Touche A Tout Compulsif)...
Le WIP en slip et le hack Sega en Pijama !

lipide512

#13
Citation de: Maitre_Poulpi le Mardi 11 Décembre 2012, 12:20:21 PM
On laisse tout d'origine et on branche dessus, genre faire une universal racing cab en jamma et on y met ce qu'on y veut ensuite ?

C'est précisement l'intérêt de unojoy - tu branches tes contrôles directement dessus... pas de hack pad etc... le montage de bp sert uniquement à convertir un potentiomètre en un autre afin de pouvoir l'interfacer sur un hack volant/manette.


Dans le cas actuel :
- Potards d'origine en 5kO
- Interface Bp pour mettre le 5kO en 10kO ou 100kO(plus vraisemblable)
- Hack volant pour brancher le signal converti 10 ou 100 kO
- Montage aganyte board pour le ffb du volant hacké (dans le cas d'espèce un logitech)

Dans le cas du uno joy
- Potards d'origines sur le uno joy qui transmet les contrôles au pc (dans 90% des cas de conversion model2...)
- un jour? relais pour le moteur ffb d'origine...

Unojoy ne gère pas le ffb. Ce que fait (très bien à priori) l'aganyte board actuellement. Techniquement (et théoriquement) il est possible de récupérer les informations de ffb via unojoy et le arduino et le transmettre à un relais.

--- désolé pour la qualité des photos c'était pas fait pour mais ça trainait dans mon tel et ça permet d'illustrer un peu mes propos ---

Unojoy et le arduino, à plat niveau câblage des potards d'origine, ça donne ça :






Et dans la borne ça :


sans parler de la relative complexité de fabriquer la plaque + achat de composants des différentes boards...
pour le arduino tout est stock... et reviendrait à moins de 20 euros.

Iro

#14
Citation de: lipide512 le Mardi 11 Décembre 2012, 12:57:43 PM
C'est précisement l'intérêt de unojoy - tu branches tes contrôles directement dessus... pas de hack pad etc... le montage de bp sert uniquement à convertir un potentiomètre en un autre afin de pouvoir l'interfacer sur un hack volant/manette.
Mais justement, tu achètes n'importe quel volant du marché et tu branches les potards de la borne dessus. Pas de soudures, pas de typon , pas de circuit imprimé.
Avec un coups de calibrage et çà roule. La seule chose est peut être la perte de sensibilité ou d'angle du volant.

De plus, il existe déjà des interfaces avec entrées des potards sur de l'USB chez ultimarc et consorts.

Après tous, une alternative de plus n'est jamais inutiles. Surtout qu'elle sera surement utile pour la T2 :D
Mais c'est tellement de dommage de refaire de l'existant alors que par exemple , le BP79 à besoin d'un bon coups de dépoussiérage.
Et puis le FFB, c'est la vie. Faut pas déconner avec le participe passé, faut aussi ne pas déconner avec le FFB dans un Racecab SEGA. Tu l'as , tu l'utilises :D

Mais quand je vois tes photos, tu as ""juste"" le programme à faire ?
:)
"Jet set 2, c'est avec Robert Garcia ?" Kaneda, Lapsus de sac Vol.1
Peter Shou Owner' Club

WIPs : Naomi - SEGA Rally - AB Cop - Lethal Enforcers - COMPUMI - Terminator 2 - Space Invaders - Artworks pour Boitiers K7 Naomi CF - Ma collec' de panels

LES TUTOS DE GAMO   

lipide512

CitationMais quand je vois tes photos, tu as ""juste"" le programme à faire ?

En pratique il faut brancher le arduino sur l'usb du pc - y "téléverser le programme" Unojoy via le soft de chez artmel et passer le arduino en mode dfu (2 pins du arduino à relier un court instant) ensuite executer un BAT fournis dans l'archive d'unojoy.... c'est fait en 2 mins montre en main.

Le arduino est reconnu comme un joy type ps3 sous windows et permet d'y interfacer ce que vous voulez sur les entrées du module.

Je répète : Pas besoin de volant à hacker... pas besoin de hack... c'est tout l'intérêt.
Par contre pas de ffb à l'horizon.

Après je ne dis pas que c'est le truc ultime, juste que c'est hyper pratique et que ça coute deux fois moins cher qu'une interface USB classique ou qu'un volant d'occase... Je n'essaye pas de vous convaincre : j'informe.

A bon entendeur. <:)