Table des matières:
- Fournitures
- Étape 1: Configuration du Raspberry Pi
- Étape 2: Disposition de l'électronique
- Étape 3: Conception de la base de données
- Étape 4: Configuration d'un compte sur TTN
- Étape 5: Configuration de l'Arduino
- Étape 6: Configuration du backend
- Étape 7: Configuration du frontend
- Étape 8: Ajout d'un boîtier
Vidéo: Capturez la boîte : 8 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Capture The Box est un jeu de teambuilding auquel vous pouvez jouer avec des amis de votre quartier.
Le but est de capturer la boîte et de la garder en votre possession aussi longtemps que possible pendant que d'autres joueurs essaient de l'éloigner de votre porche ou de votre jardin.
Ce jeu utilise le GPS pour localiser la boîte et des tags RFID pour identifier les joueurs. Un LDR en option peut être ajouté pour faire correspondre l'intensité de l'affichage à matrice de points avec le pourcentage de lumière dans la zone.
Fournitures
Microcontrôleurs et ordinateurs
- Tarte aux framboises
- Arduino (Mega) J'ai choisi un Arduino Mega plutôt qu'un Uno normal, car il a beaucoup plus de broches. Ceci est nécessaire car nous utilisons un shield Dragino LoRa, ce qui nous laisserait avec trop peu de broches numériques lors de l'utilisation d'un UNO. ASTUCE: Il est préférable d'en utiliser un authentique, car les clones chinois ne fonctionnent pas toujours comme prévu.
Capteurs et modules
- 4 modules matriciels MAX7219Connectez DOUT à DIN, CS à CS, CLK à CLK…
- Résistance dépendante de la lumière (10K) + Résistance (10K)
- Module GPS NEO-7M (ou similaire) J'utilise le VMA430 de Velleman
- Module RFID RC522 + quelques badges/cartes RFID
Pour utiliser LoRa (technologie sans fil)
Bouclier Dragino Lora
Capteurs et modules en option
Un écran LCDPour afficher l'adresse IP du Raspberry Pi
Pour faire une configuration de test
Une maquette et des câbles Dupont (Mâle-Mâle
Facultatif (boîtier)
- Fer à souder
- Une vieille mallette à outils
- Matériaux pour l'impression 3D
- Quelques fines planches de bois
- Certains boulons et écrous (pouvant s'insérer dans les trous Arduino). Mes vis ont un diamètre d'environ 3 mm.
Un prix estimé peut être trouvé dans le BOM (Bill of Materials), inclus ci-dessous.
Étape 1: Configuration du Raspberry Pi
Le Raspberry Pi est le cœur du Projet.
Il exécutera le frontend, le backend et la base de données. Il sera également responsable de la communication entre le backend et l'Arduino.
Pour que nous puissions utiliser le Raspberry Pi, nous devrons procéder comme suit:
Partie 1: Installer Raspbian sur un Raspberry Pi
Un tutoriel sur la façon de le faire peut être trouvé ici:
Partie 2: Installer Raspbian sur un Raspberry PiConfigurer votre WiFi domestique.
Cela peut être fait en utilisant wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Redémarrez le Pi et vous devriez voir une adresse IP lorsque vous tapez ifconfig
Partie 3: Installer le serveur Web et la base de données
Une fois que votre Pi est opérationnel, il est préférable de changer votre mot de passe. Cela peut être fait avec la commande passwd.
Une fois cela fait, allez-y et installez Apache, PHP, MariaDB et PHPMyAdmin.
Apache, PHP sudo apt install apache2 -y sudo apt install php libapache2-mod-php -y
MariaDB sudo apt install mariadb-server mariadb-client -y sudo apt install php-mysql -y sudo systemctl restart apache2.service
PHPMyAdminsudo apt install phpmyadmin -y
N'oubliez pas de définir un mot de passe MySQL sécurisé.
Partie 4: Installation des bibliothèques Python nécessaires
Pour le backend, nous aurons besoin de quelques bibliothèques. Ceux-ci peuvent être installés à l'aide de la commande pip3.
pip3 installer mysql-connector-python
pip3 installer flask-socketio
pip3 installer des flacons-cors
pip3 installer geventpip3 installer gevent-websocket
pip3 installer ttn
Étape 2: Disposition de l'électronique
Pour que ce projet fonctionne, nous devons connecter toute l'électronique.
Le bouclier LoRa peut être facilement mis en place. Alignez simplement les broches avec les broches de votre Arduino.
Les autres connexions sont décrites dans mon schéma de Fritzing. Qui peut être téléchargé ici:
Étape 3: Conception de la base de données
Pour pouvoir stocker toutes les données du jeu et des capteurs, j'ai fait quelques tableaux:
mesure et capteurLes mesures des capteurs, trouvées dans les tableaux des capteurs. Il contient une référence au capteur, la valeur de la mesure (par exemple les coordonnées: 51.123456; 3.123456) et un identifiant de jeu facultatif (si un jeu était actif pendant la mesure).
spelerLes noms des joueurs et l'UID de leur badge RFID. Un modérateur de champ facultatif est ajouté, cette personne peut modifier le jeu (par exemple, l'arrêter avant l'heure).
spelLes informations sur le jeu (heure de début et de fin).
spel_has_spelerLa relation entre spel et speler. C'est là que les joueurs sont affectés à un jeu.
bezitDans ce tableau, le score est enregistré. Il contient l'identifiant du jeu, l'identifiant du joueur, l'heure à laquelle il a volé la boîte et l'heure à laquelle il l'a perdue (quand quelqu'un d'autre la vole ou quand le jeu se termine). En soustrayant l'heure de début de l'heure de fin, vous pouvez calculer le score qu'il a obtenu à partir de cette capture.
Un export de la base de données se trouve sur mon GitHub (https://github.com/BoussonKarel/CaptureTheBox)
Ouvrez le SQL dans PHPMyAdmin / MySQL Workbench et exécutez-le. La base de données doit maintenant être importée.
Étape 4: Configuration d'un compte sur TTN
Étape 1: Créez un compte sur TTN et créez une application
Créez un compte sur TheThingsNetwork, puis accédez à Console > Ajouter une application.
Choisissez un nom pour votre application et cliquez sur Ajouter une application.
Étape 2: Enregistrez un appareil
Lorsque vous avez fait votre demande, allez dans Enregistrer l'appareil.
Choisissez un identifiant d'appareil, cela peut être celui que vous voulez (tant qu'il s'agit d'un boîtier serpent) et cliquez sur Enregistrer.
Cliquez sur l'icône Générer sous Device EUI, afin que TTN en génère un pour vous.
Étape 3: Notez vos identifiants
Allez maintenant sur votre appareil et cliquez sur l'icône Code à côté de Device EUI, App EUI et App key. Il devrait maintenant apparaître comme un tableau d'octets.
Avant de copier, cliquez sur le bouton Switch et assurez-vous que votre Dev EUI et App EUI sont LSB FIRST.
Votre clé d'application doit rester MSB FIRST (ne changez pas cela).
Vous aurez besoin de ces clés à l'étape suivante: Configuration de l'Arduino.
Étape 4: écriture de votre clé d'accès à l'application
Nous aurons maintenant besoin d'une clé supplémentaire pour configurer MQTT sur notre Raspberry Pi.
Accédez à votre application et faites défiler jusqu'à Clés d'accès.
Vous en aurez besoin à l'étape Backend.
Étape 5: Configuration de l'Arduino
Le code Arduino peut également être trouvé sur mon GitHub, sous Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Ce code est divisé en plusieurs onglets, pour le garder organisé.
main.inoLe code principal: déclarations des broches, setup() et loop()
0_LoRa.inoCe code gère la communication à l'aide de LoRa.
Il place les données des balises LDR, GPS et RFID dans un tableau de 13 octets et les envoie à TheThingsNetwork.
1_LDR.inoEn utilisant analogRead(), il mesure la quantité de tension sur la résistance dépendante de la lumière.
Ceci est ensuite converti en un pourcentage de lumière (0 étant rien, 100 étant une lampe de poche pour téléphone portable).
2_GPS.inoCeci utilise la communication série en utilisant TX1 et RX1 (Serial1).
Il utilise des messages NMEA (les messages $GPRMC pour être précis) pour trouver la latitude et la longitude de la boîte.
3_RFID.inoÀ l'aide de la bibliothèque MFRC522, ce code recherche de nouvelles étiquettes RFID. Chaque fois qu'une est présente, elle est stockée sous le nom RFID_lastUID.
4_DotMatrix.inoCe code est utilisé pour initialiser et définir l'affichage de la matrice de points. Il contient des définitions pour l'animation de chargement etc…
Le mettre en place
Avant de pouvoir télécharger ce code sur votre Arduino, vous devrez installer quelques bibliothèques.
La bibliothèque Arduino-LMIC de matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
La bibliothèque MFRC522 pour le lecteur RFID (https://github.com/miguelbalboa/rfid)
Maintenant, allez sur main.ino et remplacez DEVEUI, APPEUI et APPKEY par ceux que vous avez copiés à la dernière étape.
Étape 6: Configuration du backend
Le backend de ce projet se trouve sur mon GitHub, sous RPI > Backend (https://github.com/BoussonKarel/CaptureTheBox).
Comment ça marche?
- Toutes les 10 secondes, le code recherche un jeu actif. S'il en trouve un, il est enregistré dans une variable appelée huidigSpel (currentGame)
- Si le mode est défini sur Série, un câble est utilisé entre l'Arduino et le Pi. Le Pi interroge les valeurs du LDR et du GPS. L'Arduino répond avec un format JSON. Les balises RFID sont envoyées chaque fois qu'elles sont présentées. Ce mode était uniquement utilisé à des fins de développement et n'est plus vraiment nécessaire.
- Si le mode est défini sur LoRa, un client MQTT est créé qui déclenche un rappel chaque fois que des données LoRa sont reçues par TTN. Celui-ci contient des données LDR, GPS et RFID.
- L'interface peut récupérer des données à l'aide des points de terminaison de l'API. La plupart des données sont récupérées à l'aide de huidigSpel.id. Les données sont renvoyées au format JSON à l'aide de jsonify()
Modifiez les paramètres Allez sur secrets.py et renseignez le nom de votre application LoRa et votre Clé d'accès (que vous avez notée précédemment).
Allez sur config.py et remplissez vos identifiants de base de données (tels que mot de passe, utilisateur…)
Configurez-le en tant que serviceEssayez d'exécuter app.py, une fois que vous avez confirmé que cela fonctionne, nous pouvons l'utiliser en tant que service. Cela démarrera automatiquement le code en arrière-plan lorsque vous démarrerez votre pi.
Pour ce faire, copiez ctb_service.service dans /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Activez-le maintenant à l'aide de systemctl enable ctb_service.service
Si vous devez apporter des modifications au code, vous pouvez facilement l'arrêter à l'aide de systemctl stop (cela redémarrera au redémarrage) ou désactiver is (l'empêcher de démarrer automatiquement) à l'aide de systemctl disable.
Si vous devez consulter les logs (à cause d'erreurs), vous pouvez utiliser journalctl -u ctb_service.service.
Plus d'informations sur les services peuvent être trouvées ici:
Étape 7: Configuration du frontend
Comme d'habitude, le frontend se trouve sur mon GitHub, sous RPI > Frontend (https://github.com/BoussonKarel/CaptureTheBox)
Collez-le dans le dossier /var/html de votre Raspberry Pi.
Celui-ci contient toutes les pages Web nécessaires au jeu.
Il contient également un script pour communiquer avec le backend (à la fois en temps réel et en utilisant les points de terminaison de l'API).
Étape 8: Ajout d'un boîtier
Pour la mallette, j'ai utilisé une vieille mallette à outils, ainsi que les matériaux/techniques suivants:
- impression en 3D
- Mousse pour maintenir la batterie en place
- Des planches de bois recyclées
- Colle chaude
- Vis et écrous
Ce que vous faites avec votre cas est votre choix ! Je vais vous donner la liberté artistique.
Pour l'inspiration, j'ai ajouté quelques photos de mon étui (fini).
Conseillé:
ESP32-CAM Capturez des photos et envoyez par e-mail à l'aide de la mémoire SPIFF. --AUCUNE carte SD requise : 4 étapes
ESP32-CAM Capturez des photos et envoyez par e-mail à l'aide de la mémoire SPIFF. || AUCUNE carte SD requise : Bonjour les amis, La carte ESP32-CAM est une carte de développement à faible coût qui combine une puce ESP32-S, une caméra OV2640, plusieurs GPIO pour connecter des périphériques et un emplacement pour carte microSD. Il a un certain nombre d'applications allant du serveur Web de streaming vidéo, bu
Capturez et envoyez des images avec ESP32-Cam à l'aide du processeur Wifi ESP8266 WeMos D1 R1 avec Uno: 7 étapes
Capturez et envoyez des images avec ESP32-Cam à l'aide du processeur Wifi ESP8266 WeMos D1 R1 avec Uno: Capturez une image à l'aide de ESP32-Cam (OV2640) à l'aide du processeur WiFI ESP8266 WeMos D1 R1 avec Uno et envoyez-la par courrier électronique, enregistrez-la sur Google Drive et envoyez-la à Whatsapp utilisant Twilio.Exigences : ESP8266 WeMos D1 R1 WiFI Processor avec Uno (https://protosupplies
La boîte Barbie : un étui camouflé/boîte boom pour votre lecteur MP3 : 4 étapes (avec photos)
La Barbie Box : un étui camouflé/boîte perche pour votre lecteur mp3 : il s'agit d'un étui de protection rembourré pour votre lecteur mp3 qui convertit également la prise casque en quart de pouce, peut servir de boîte perche en appuyant simplement sur un interrupteur, et déguise votre lecteur mp3 en un lecteur de cassette du début des années 90 ou un vol faible similaire i
Construire une boîte de batterie de boîte à cigares pour les radios à tube: 4 étapes
Construisez une boîte à piles pour boîtes à cigares pour les radios à tube : Si vous aimez construire et jouer avec des radios à tube comme moi, vous avez probablement le même problème que moi pour les alimenter. La plupart des anciens circuits étaient conçus pour fonctionner avec des batteries haute tension b qui ne sont plus disponibles. Donc
Afficher la boîte à lumière à partir d'une boîte en bois : 9 étapes (avec des images)
Boîte à lumière d'affichage à partir d'une boîte en bois : ma femme et moi avons offert à ma mère une sculpture en verre pour Noël. Quand ma mère l'a ouvert, mon frère a dit "RadBear (en fait, il a dit mon nom) pourrait te construire une boîte à lumière!". Il a dit cela parce qu'en tant que collectionneur de verre, j'ai