まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

IR « Light » Gun avec Arduino (version aboutie) -1-

Après avoir expérimenté et tenté d'améliorer le prototype vu dans cet autre billet, ne parvenant pas à fiabiliser l'appareil et à lui apporter des améliorations satisfaisantes, j'ai décidé de me débarrasser de la base « G2N » finalement assez merdique, et de partir en quête d'une base software plus solide sur laquelle appuyer mon sujet.

En effet, celui-ci est plus précis (tracking par 4 sources Infra-Rouges), et réglable (système de calibration facile). Ce qui fait qu'on y gagne également en distance de recul par rapport à l'écran. On peut donc se placer plus prés !

Le pistolet :

En écumant les sites de ventes d'occasion, je suis tombé sur ce jouet dénommé « X-SHOT LASER 360° », sorte de « laser game » qui aurait été assez marrant à jouer en pleine nature, à ceci près qu'il s'agit en fait de rayons infra-rouges, les mêmes qui dans une télécommande de TV, avec donc une précision de tir complètement claquée comparée à un véritable faisceaux laser.
Essayez-donc d'augmenter le volume sonore d'une TV en orientant la télécommande vers le plafond et à travers un plaid, et vous verrez que ça fonctionne… Donc oué, tu tires à côté, tu gagnes à tous les coups. Une arnaque ce jouet.

  • C'est donc sans regret que je vais bricoler cette paire de flingue au look tout à fait plaisant, obtenu à vil prix sur le marché de l'occasion…


Les fonctionnalités :

C'est en découvrant le jouet et ses fonctionnalités d'origines que les idées se sont mises bout à bout afin de tirer parti de l'existant.

  • Le jouet propose :

- des bruitages avec un haut-parleur -> on dégage !
- une led pour simuler le feu en sortie de canon à chaque tir -> on garde !
- une gâchette, un bouton de recharge, un bouton start -> on garde !
- une led RVB (ou RGB) pour choisir la couleur de l'équipe -> on réutilise !
- 3 leds pour compter le nombre de « vies » restantes au joueur·euse -> on réutilise !


  • Voici donc ce que j'ai ajouté et modifié :

Le code du Samco est modifié afin de lui adjoindre un joystick et une souris USB.
L'idée est de pouvoir s'adapter aux jeux en fonction des besoins.

- Un Switch de sélection 3 positions est donc ajouté pour désactiver la Souris, ou désactiver le Joystick, ou rester en position hybride, « les deux » actifs.
- La gâchette est utilisée en tant que click gauche de la souris et bouton du Joystick.
- Le bouton Start est utilisé en tant que bouton du Joystick.
- Le bouton de recharge est utilisé en tant que click droit de la souris et bouton du Joystick.
- Un switch de sélection est ajouté pour permettre d'utiliser le bouton de recharge soit en manuel, soit en automatique (sortir le pistolet de l'écran déclenche la recharge).
- Les 3 leds rouges sont utilisées en témoins pour le mode recharge automatique (allumé) ou manuel (éteint), le mode souris activée (allumé) ou non (éteint), le mode Joystick activé (allumé) ou non (éteint).
- Un solénoïd est ajouté, il simulera un léger recul en claquant à chaque tir, pour plus d’immersion dans le jeu.
- Un switch de sélection est ajouté pour désactiver le solénoïd.
- Du lest est ajouté pour simuler le poids de l'arme à la main.
- La led RVB est utilisée pour connaître dans quel mode de tir on est. On le change en appuyant sur le bouton de recharge lorsque le pistolet est en mode recharge automatique, comme ceci :
Couleur Jaune = 1 coup pour 1 pression de gâchette.
Couleur Vert = 2 coups pour 1 pression de gâchette.
Couleur Bleu = 3 coups pour 1 pression de gâchette.
Couleur Blanc = 4 coups pour 1 pression de gâchette.
Couleur Cyan = 5 coups pour 1 pression de gâchette.
Couleur Violet = 6 coups pour 1 pression de gâchette.
Fondu de couleur = coups infini (MachineGun) pour 1 pression de gâchette.
Couleur Rouge = coup maintenu (MachineGun), pour 1 pression continue de gâchette. Ça dépend des jeux…

  • Si ça parait compliqué comme ça, il n'en est rien, une vidéo illustrera clairement tout cela en temps voulu.

Schéma de principe :

  • Rien de révolutionnaire vis à vis du prototype, à ceci prés qu'on va ici simplifier les choses pour l'Arduino, en utilisant un modèle Pro-Micro en 3,3V !

Ce qui permet une compatibilité immédiate avec la caméra de la Wiimote. Plus besoin donc de convertir la tension d'alimentation où les niveaux logiques des signaux.

Liste des composants :

Nom             Type et valeur
R1, R2, R3, R4  Résistance  440Ω
R11, R12, R13   Résistance  440Ω
R5              Résistance  1kΩ
R6, R7          Résistances 10kΩ
R8, R9          Résistances 4,7kΩ
R10             Résistance  220Ω
C3              Condensateur MKT 100nF
D1, D2, D3, D4  Led CMS rouges
D5              Led RGB à Anode Commune
D6              Diode 1N4001 ou 1N4007
Q1, Q2          Transistor NPN : BC547
Q3              Transistor MOSFET N : IRL540N, IRLZ44PBF, 029N06N
U1              Arduino ProMicro 3,3 Volts (32u4)
L1              Solénoïde 12 Volts
XTAL1           Oscillateur HCMOS/TTL  24 ou 25MHz 3,3V
SW1, SW2, SW3   bouton poussoir momentanés
SW4A, SW5A      Interrupteurs 2 positions
SW6A            Interrupteurs 3 positions
K1              Camera Pixart Infra-Rouge, d’une Wiimote
  • Certains composants seront réutilisés depuis la PCB d'origine du jouet.

Ce sont ceux-ci : R1, R2, R3, R4, R11, R12, R13, D1, D2, D3, D4, D5, SW1, SW2, SW3, SW4A.


  • Le dessin Fritzing, pour celleux qui ne savent pas bien lire un schéma l'électronique :


  • À propos du module solénoïde, j'ai eu plusieurs soucis lors de la conception de celui-ci, entre théorie et pratique.

Le montage aurait dû être plus simple, en attaquant directement le transistor Mosfet avec les niveaux logiques 3,3V de l'arduino. On n'aurait eu besoin que du Mosfet, et deux résistances et c'était plié, aux vues de ce qu'annoncent les datasheet des Mosfet.
Sauf que, voyez-vous même la conclusion des tests avec :

Aliexpress : IRL540N : aucun des 10 composants reçu ne fonctionne. On m'a refourgué du faux, ou du non-conforme.
Radio Spare : IRLZ44PBF : déclenchement ok, mais faible. Fonctionne à peine avec le solénoïde orienté à la verticale. (test le plus défavorable)
Radio Spare : IRL540NPBF : déclenchement ok, mais plus faible encore, ça « claque » pas fort. Ne fonctionne pas solénoïde orienté à la verticale.
En boutique physique : IRL540N : déclenchement impossible.
Radio Spare : IPP029N06N : déclenchement impossible.

L'ajout d'un BC547 permet alors de déclencher le solénoïde à tous les coups, avec n'importe lequel de ces transistors (sauf les défectueux d'Ali…) mais inverse la logique (0 pour activer, et 1 pour désactiver).
Ce qui est alors un problème car dés que l'arduino n'est plus alimenté (prise USB débranchée) le solénoïde s'active si on n'a pas encore, ou oublié de débrancher son alimentation 12V, ce qui le fait chauffer rapidement, avec le risque de le brûler. C'est en effet un composant électro-mécanique destiné à rester au repos pour ne s'activer que brièvement.
Conclusion, utiliser le montage à double BC547 se révèle alors une solution simple pour remettre la logique dans le bon ordre (1 pour activer, et 0 pour désactiver).

Démontage du jouet :

  • Afin de ne pas trop se laisser sur notre faim avant le prochain billet, voici ce que révèle l'intérieur du jouet :




À suivre…

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet