Table des matières:
- Fournitures
- Étape 1: Les capteurs sans fil
- Étape 2: le contrôleur de jeu
- Étape 3: Raspberry Pi
- Étape 4: Configurer le jeu
Vidéo: Jeu de tir Arduino V3 : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-31 10:19
Ce jeu est fait pour vous qui utilisez l'airsoft ou le co2 pour tirer sur des cibles. C'est un jeu.
Pour des informations à jour sur le jeu et l'assistance:
www.facebook.com/arduinoshooting/
Pour ma page de blog sur le jeu:
shootinggameblog.wordpress.com
Pour les codes du jeu:
github.com/shootinggame82/Shooting-game-v3
Le jeu de tir est composé de x cibles sans fil, chaque cible a un capteur de vibration qui détecte les vibrations qui se produisent lorsqu'un coup est effectué. Les capteurs sans fil sont une puce Atmega328 (puce Arduino Uno) et rechargent la batterie Li-Po.
Le contrôleur principal de ce jeu est contrôlé par un Arduino et est contrôlé en série à partir d'un Raspberry Pi.
Alors comment fonctionne ce jeu ?Eh bien c'est 3 modes de jeu:
Quicktime: jouez X tours et tirez si vite que vous le pouvez sur chaque cible.
Mode temporel: tirez sur autant de cibles que possible en X secondes.
Rapidfire: Tirez X coups dans le temps le plus rapide.
Le système utilise des émetteurs NRF24L01 pour obtenir une bonne distance du contrôleur principal. Ils fonctionnent sur 2,6 GHz (le même que le WiFi fonctionne)
Dans mes projets précédents, j'ai utilisé Piezo pour la vibration, mais maintenant, le commutateur de capteur de vibration est utilisé. Mais vous pouvez toujours utiliser Piezo si vous avez créé mon ancienne version de ce jeu.
Le jeu dispose d'un écran tactile Raspberry Pi 7 qui contient le système Web via lequel vous contrôlez le jeu. Une imprimante de terminal imprime les résultats.
Fournitures
Pour les émetteurs:
- X Atmega328 avec Arduino Bootloader (selon le nombre de cibles)
- X Commutateur de capteur de vibration
- X Led Bleu
- X LED verte
- X LED rouge
- X 3.7v Li-Po batterie
- Module chargeur X FC-75 Li-Po (ou autre modèle)
- Condensateur X 100 uF
- X Boîtiers pour les capteurs
- X LD1117V33 (Rend un 3,3 V sûr à l'émetteur)
- X modules NRF24L01
- X x 3 résistances 220 Ohm (3 sont nécessaires pour une cible)
- X 16 MHz Cristal
- X x 2 Condensateurs non explorés 22 pF (2 sont nécessaires pour une cible)
Pour l'Arduino principal:
- 1 Arduino (Nano ou Uno est recommandé, besoin d'un port USB)
- 1 module NRF24L01
- 1 condensateur de 10 uF
Pour la framboise Pi:
- Raspberry Pi (j'ai utilisé 3B)
- Écran tactile 7"
- ATXRaspi (En option mais un bon module de bouton d'alimentation)
- RTCRaspi (Optionnel mais un bon module RTC pour garder l'heure et la date)
- Imprimante thermique (facultatif mais nécessaire pour pouvoir imprimer)
- Scanner de code-barres (version USB qui fonctionne comme un clavier, en option)
- Bonne alimentation 5V (j'ai utilisé un vieil USB 12v avec une alimentation 2,5 A)
D'autres choses:
- Alimentation 12v (j'en ai un à 12 Ah)
- Prise réseau (facilitez la connexion au réseau)
- Câbles
Étape 1: Les capteurs sans fil
Commençons par fabriquer les capteurs. J'utilise 4 capteurs pour ce jeu. Mais vous pouvez facilement ajouter plus de capteurs. Les capteurs communiquent avec un code à 4 chiffres lorsque le système principal envoie le code avec quelle fonction le capteur avec le bon code s'allumera et sera prêt pour la cible. La lumière bleue indique que c'est cette cible que vous allez atteindre.
Nous avons également une led verte et une led rouge. Le vert s'allume toujours pour informer que le capteur est allumé. Le rouge ne s'allumera que lorsque la batterie est inférieure à 3,1 V (il utilise la fonction intégrée dans la puce pour calculer combien il y a dans la batterie.
Le capteur de vibration est connecté à la broche analogique et lit sa valeur. Lorsque la valeur baisse, le capteur capte une vibration et c'est là que nous enregistrons le coup.
La cible a une fonction de sécurité intégrée, au cas où vous ne frapperiez pas dans X secondes (la valeur par défaut est de 15 secondes) ou si la transmission ne peut pas être effectuée, elle reviendra à la position de départ.
Je ne vais pas expliquer comment vous allez câbler, vérifiez la fiche électrique pour voir comment vous allez faire cela. La seule chose qui n'est pas dessus, c'est la batterie, l'interrupteur d'alimentation et le chargeur. C'est à vous de décider comment vous le voulez.
IMPORTANT À PROPOS DU Module NRF24L+:
Cela peut être pénible… de les rendre stables, combinés à une bonne puissance et à une bonne isolation, et au code que vous leur ferez fonctionner. Pour moi, un condensateur de 10 uF me donnera une connexion stable et bonne, mais essayez d'abord si vous avez besoin par exemple d'un condensateur de 100 uF. Enveloppez-les également d'abord de papier d'aluminium, puis de papier d'aluminium pour les protéger des interférences
Également dans le code, le débit de données dont vous n'avez pas besoin de plus de 250 Ko, ce ne sera donc pas le problème. Mais le PA: myRadio.setPALevel(RF24_PA_MIN);
Dans le code que j'ai défini sur MIN (c'est pendant le test), c'est le plus bas et n'utilisera pas autant d'énergie, mais la portée ne sera pas si longue. Si vous leur avez une puissance stable et bonne, vous pouvez aller jusqu'à RF24_PA_MAX pour obtenir la plus longue portée, MAIS ils ont besoin d'une puissance stable GOOOOOD pour cela. Essayez également LOW AND HIGH (Modifiez le texte MAX uniquement) pour voir si vous obtenez une bonne communication. De plus, vous obtiendrez une bonne portée sur LOW et HIGH, à moins que vous ne soyez un tireur d'élite
Gardez également les émetteurs à au moins un mètre l'un de l'autre, car les fermer peut détériorer le signal
Testez la communication avec un exemple de ping dans la bibliothèque NRF24 (lien sur GitHub)
Dans le code, vous devez définir le numéro d'identification unique pour cette cible:
int targID = 3401; //C'est l'identifiant de la cible
int ID d'envoi = 2401; //C'est l'identifiant de la réponse
Il existe également 3 fonctions DEFINE:
#define DEBUG
#définir la BATTERIE
#define SHAKE //SI SHAKE SWITCH EST UTILISÉ À LA PLACE DE L'ANCIEN PIEZO
DÉBOGUER:
Pendant le test, il est bon d'avoir défini. Mais lorsque vous les rendez disponibles, ne l'activez pas.
BATTERIE:
Si vous ne voulez pas avoir de vérificateur de batterie pour les cibles, vous devez supprimer cette définition.
SECOUER:
Si vous avez construit mon ancienne version, vous avez des capteurs piézo, puis supprimez-le pour obtenir le code correct pour eux.
Puce ATMEGA328
Au lieu d'un Arduino nano, j'ai décidé d'utiliser la puce ATMEGA328 (avec le chargeur de démarrage Uno), ils sont simples à programmer, il suffit de retirer la puce d'un Arduino Uno et d'ajouter cette puce et de télécharger le code. Vérifiez le schéma électrique sur la façon de construire les cibles.
Le code
J'ai écrit le code avec PlatformIO au lieu d'Arduino IDE. C'est un meilleur logiciel pour programmer. Le code est donc un peu différent. Je recommande d'utiliser ce logiciel à la place.
Le boîtier cible et émetteur
J'ai attaché le capteur et la led bleue sur la cible, et avec un câble phono de 3, 5 mm sur 2 m je le connecte ensemble dans le boitier émetteur qui contient la puce atmega, le chargeur de batterie et la led verte & rouge. Il s'agit de le protéger des coups de balles en acier.
Étape 2: le contrôleur de jeu
La prochaine chose que nous devons faire est de créer le contrôleur pour les capteurs. C'est un Arduino qui utilise un module NRF24L01 pour communiquer avec les capteurs. Rien d'autre. L'Arduino est ensuite connecté en USB dans le raspberry pi pour fonctionner.
C'est ainsi que cela fonctionnera. Il utilise la série pour savoir quoi faire. Le pi enverra des commandes série. Tout d'abord, lors de la configuration, il envoie le nombre de cibles que vous avez ajoutées et les numéros d'identification des cibles. Ensuite, il effectuera la fonction de test et informera le raspberry pi s'ils communiquent entre eux.
Lorsque vous jouez au jeu, il enverra à partir de pi quel type de jeu et combien de tours/coups utiliser. C'est ça.
Il est possible d'utiliser les modules NRF24L01 dans le raspberry pi, mais pour moi l'Arduino est une meilleure option car je ne les utilise jamais dans le raspberry donc je ne sais pas à quel point ils fonctionnent bien sur le long terme
Il existe un module d'alimentation qui utilise 5 v pour fournir une alimentation stable et correcte aux émetteurs. Vous pouvez les utiliser avec vous Arduino (voir l'image) le nom est Socket Adapter Module Board
Lorsque vous jouez, les cibles seront activées aléatoirement une par une. Quand l'un est touché, un autre sera activé.
Pendant le test, vous pouvez activer #DEFINE DEBUG pour voir comment cela fonctionne, mais pas lorsque vous l'utilisez dans l'ordinateur pi, cela ne fonctionnera pas alors.
Téléchargez le code sur la page GitHub.
Étape 3: Raspberry Pi
Nous arrivons maintenant au Raspberry Pi.
J'ai ajouté quelques fonctions supplémentaires pour que je puisse avoir un bouton d'alimentation. L'ATXRaspi 3 est un excellent module, vous pouvez allumer, éteindre et redémarrer le pi avec un bouton. Également un RTCRaspi pour garder l'heure et la date sur le pi. A également permis de simplement brancher un câble réseau au cas où j'aurais besoin de faire des mises à jour sur le système. Vous les trouverez sur Lowpowerlab
L'imprimante thermique que vous trouverez sur sparkfun et le lecteur de code-barres sont disponibles sur amazon.
L'ordinateur Pi fonctionne en mode kiosque afin que le navigateur s'ouvre au démarrage. Tout d'abord, vous devez disposer d'un serveur Web avec PHP 7 et mysql sur l'ordinateur pi. (Il y a beaucoup de guides sur le web pour cela)
VEUILLEZ NOTER: si vous envisagez d'utiliser une imprimante thermique avec Raspberry Pi qui a intégré Bluetooth, vous devez d'abord la désactiver
Le script python a besoin de pyserial et vous l'installez: sudo apt-get install python-serial
Pour faire fonctionner mysql, installez ce qui suit:
sudo apt-get install mysql-python sudo apt-get install python-mysql.connector
suso apt-get installer pymysql
Maintenant, vous pouvez contrôler votre Arduino via la série et également mettre à jour la base de données mysql.
L'étape suivante consiste à créer un script python pour se connecter à mysql.
Dans les trois scripts python, modifiez la connexion à votre base de données mysql.
L'étape suivante consiste à exécuter le script python au démarrage.
Il y a trois script python.game.py est le plus important de tous, celui-là détient la fonction de jeu.print.py cela n'est nécessaire que si vous allez utiliser une imprimante thermique pour imprimer.ean.py n'est nécessaire que si vous êtes va utiliser le lecteur de codes-barres.
Pour les faire démarrer automatiquement, j'édite:
sudo nano /etc/rc.local
et ajoutez ce qui suit en bas avant la sortie 0:
sudo python /home/pi/Gamefiles/game.py &sudo python /home/pi/Gamefiles/print.py &sudo python /home/pi/Gamefiles/ean.py &
Veuillez changer à la place correcte pour votre script python et n'oubliez pas le signe & à la fin
Maintenant, nous devons créer un mode kiosque pour le navigateur Web, supprimez d'abord le curseur:
sudo apt-get install unclutter
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
maintenant dans ce fichier, recherchez et commentez:
@xscreensaver -no-splash # commentez cette ligne pour désactiver l'économiseur d'écran
Ci-dessous, ajoutez:
@xset s off @xset -dpms @xset s noblank @chromium-browser --noerrdialogs --force-device-scale-factor=1.25 --kiosk
Prochaine étape pour supprimer tous les textes de démarrage et autres éléments, ajoutez également votre propre écran de démarrage, voici un guide rapide:
sudo nano /boot/config.txt et en bas adddisable_splash=1
Supprimer le message texte sous l'image de démarrage:
sudo nano /usr/share/plymouth/themes/pix/pix.script
Rechercher et supprimer (ou commenter):
message_sprite = Sprite();message_sprite. SetPosition(screen_width * 0.1, screen_height * 0.9, 10000);
et:
my_image = Image. Text(text, 1, 1, 1);message_sprite. SetImage(my_image);
Maintenant, nous supprimons les messages de démarrage:
sudo nano /boot/cmdline.txt
remplacer "console=tty1" par "console=tty3"
et à la fin de la ligne ajouter:
splash tranquille plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default=0
Et remplacez le pi splash par le vôtre:
sudo cp ~/my_splash-p.webp" />
Vous avez maintenant votre propre écran de démarrage personnalisé pour votre jeu. Votre ordinateur pi est maintenant prêt à gérer le jeu. Passons donc à l'étape suivante !
Étape 4: Configurer le jeu
À ce stade, vous avez maintenant créé le jeu.
Vous devez d'abord configurer le webbsystem. Téléchargez la base de données sur votre serveur mysql. Le fichier est dans le dossier include et nommé database.sql
L'étape suivante consiste à éditer le fichier de configuration, vous le trouverez dans le nom du dossier include config.php Modifiez les informations de connexion à la base de données pour que le script fonctionne.
Le système Web est basé sur plusieurs langues et est écrit en anglais. Il y a une traduction suédoise disponible. Pour faire plus de langue, vous avez besoin d'un logiciel nommé Poedit.
Pour ajouter plus de langue au système Web, vous devez éditer i18n_setup.php et ajouter dans le tableau:
return in_array($locale, ['en_US', 'sv_SE']); (Ligne 23)
Aussi pour changer la langue par défaut, vous devez changer à la ligne 27: $lang = 'en_US'; changez l'en_US en votre langue.
les fichiers de langue doivent être placés dans locales/LANGCODE/LC_MESSAGES/ et être nommés main.mo (changer le code de langue en votre langue)
pour changer le clavier dans le fichier selectplayers.php vous changez la langue: "en", //en pour l'anglais sv pour le suédois mise en page: 'qwerty', //qwerty pour l'anglais suédois-qwerty pour le suédois
Vous les trouvez aux lignes 218 & 219
Les langues disponibles sont dans le dossier: assets/js/keyboard/languages & layouts sont dans assets/js/keyboard/layouts et ajoutez les bons fichiers aux lignes 118 et 119 (remplacez celui que vous y trouvez maintenant)
Ajouter des cibles
Pour ajouter des cibles, accédez à localhost/admin/ et cliquez sur ajouter des cibles.
Vous devez ajouter un nom pour la cible et l'ID de cible unique et l'ID d'envoi, ajoutez autant de cibles que vous avez.
Ajouter des jeux
Vous devez également ajouter des jeux. Allez sur localhost/admin/ et cliquez sur ajouter un jeu
Vous devez ajouter un nom pour le jeu, une description, le nombre de joueurs minimum et maximum quel type de jeu, ainsi que la difficulté du jeu entre 1 et 5. Et comment est le jeu, donc pour le jeu rapidfire, vous ajoutez combien de coups (exemple 30) pour la dégaine combien de tours (par exemple 8) et pour combien de temps ils vont jouer (par exemple 60 pour une minute)
Commencer le jeu
Lorsque vous allumez le jeu, il effectuera le test cible. Les cibles doivent donc être activées avant de démarrer le système principal. Si tous réussissent le test, vous pouvez utiliser le système, mais s'ils ne le font pas, vous ne pouvez pas l'utiliser. Il essaiera de communiquer jusqu'à ce qu'ils obtiennent une réponse.
Bonne chance
Eh bien, c'est à peu près tout, pour obtenir de l'aide et des informations sur la mise à jour du code, veuillez suivre ma page Facebook pour ce jeu, afin que je puisse vous répondre rapidement. Vous trouverez des liens en haut ici.
Conseillé:
Jeu de Tir ARDUINO + SCRATCH : 6 Étapes
Jeu de Tir ARDUINO + SCRATCH : Sauvez votre gâteau !!! Il est en danger. Il y a quatre mouches qui s'en approchent. Vous n'avez que 30 secondes pour tirer sur les mouches et sauver votre gâteau
Jeu de Tir Laser (Star Wars) : 5 Étapes
Jeu de tir au laser (Star Wars): Dans cet article, je partagerai un projet de guerre des étoiles basé sur Arduino que vous pouvez réaliser avec un budget limité. Ce projet est un jeu de tir laser qui vous conviendra comme un produit fait maison. Ce projet se compose de 2 sous-projets : faire du blaster en carton un
Jeu de grattage de tir en 2D : 11 étapes
Jeu de grattage de tireur 2D : dans ce instructable, je vais vous montrer comment faire un jeu de grattage de tireur 2D. C'est assez simple à faire, mais j'espère que vous apprendrez certaines choses en cours de route et que vous créerez bientôt vos propres jeux de grattage
Contrôleur de jeu Arduino Rhythm (pour mon propre jeu): 6 étapes
Contrôleur de jeu de rythme Arduino (pour mon propre jeu) : dans ce instructable, je vais vous montrer comment je construis ce contrôleur de jeu de rythme à partir de zéro. Cela implique des compétences de base en menuiserie, des compétences de base en impression 3D et des compétences de base en soudure. Vous pouvez probablement construire ce projet avec succès si vous n'avez aucun ex
Contrôleur de jeu DIY basé sur Arduino - Contrôleur de jeu Arduino PS2 - Jouer à Tekken avec la manette de jeu DIY Arduino : 7 étapes
Contrôleur de jeu DIY basé sur Arduino | Contrôleur de jeu Arduino PS2 | Jouer à Tekken avec la manette de jeu DIY Arduino : Bonjour les gars, jouer à des jeux est toujours amusant, mais jouer avec votre propre contrôleur de jeu personnalisé DIY est plus amusant. Nous allons donc créer un contrôleur de jeu utilisant arduino pro micro dans cette instructables