Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Einrichten des Raspberry Pi
- Schritt 2: Auslegen der Elektronik
- Schritt 3: Entwerfen der Datenbank
- Schritt 4: Einrichten eines Kontos auf TTN
- Schritt 5: Einrichten des Arduino
- Schritt 6: Einrichten des Backends
- Schritt 7: Einrichten des Frontends
- Schritt 8: Hinzufügen eines Gehäuses
Video: Capture the Box - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Capture The Box ist ein Teambuilding-Spiel, das Sie mit Freunden in Ihrer Nachbarschaft spielen können.
Das Ziel ist es, die Kiste zu erobern und so lange wie möglich in deinem Besitz zu halten, während andere Spieler versuchen, sie von deiner Veranda oder deinem Vorgarten wegzuschleichen.
Dieses Spiel verwendet GPS, um die Box zu lokalisieren, und RFID-Tags, um die Spieler zu identifizieren. Ein optionaler LDR kann hinzugefügt werden, um die Intensität der Punktmatrixanzeige an den Lichtanteil im Bereich anzupassen.
Lieferungen
Mikrocontroller und Computer
- Himbeer-Pi
- Arduino (Mega) Ich habe mich für ein Arduino Mega gegenüber einem normalen Uno entschieden, da es viel mehr Pins hat. Dies ist notwendig, da wir ein Dragino LoRa-Schild verwenden, was uns bei Verwendung einer UNO zu wenig digitale Pins belassen würde. TIPP: Verwenden Sie am besten einen echten, da die chinesischen Klone nicht immer wie erwartet funktionieren.
Sensoren und Module
- 4 MAX7219 Punktmatrix-ModuleConnect DOUT to DIN, CS to CS, CLK to CLK…
- Lichtabhängiger Widerstand (10K) + Widerstand (10K)
- NEO-7M (oder ähnlich) GPS-ModulIch verwende das VMA430 von Velleman
- RC522 RFID Modul+ einige RFID Ausweise/Karten
Für die Nutzung von LoRa (Wireless-Technologie)
Dragino Lora Schild
Optionale Sensoren und Module
Ein LCD-DisplayZur Anzeige der IP-Adresse des Raspberry Pi
Zum Erstellen eines Testaufbaus
Ein Steckbrett und Dupont-Kabel (männlich-männlich)
Optional (Gehäuse)
- Lötkolben
- Ein alter Werkzeugkoffer
- Materialien für den 3D-Druck
- Einige dünne Holzbretter
- Einige Schrauben und Muttern (die in Arduino-Löcher passen). Meine Schrauben haben einen Durchmesser von etwa 3 mm.
Einen geschätzten Preis finden Sie in der unten aufgeführten Stückliste (Bill of Materials).
Schritt 1: Einrichten des Raspberry Pi
Der Raspberry Pi ist das Herzstück des Projekts.
Es wird das Frontend, das Backend und die Datenbank ausführen. Es wird auch für die Kommunikation zwischen dem Backend und dem Arduino verantwortlich sein.
Damit wir den Raspberry Pi verwenden können, müssen wir Folgendes tun:
Teil 1: Raspbian auf einem Raspberry Pi installieren
Eine Anleitung dazu finden Sie hier:
Teil 2: Raspbian auf einem Raspberry Pi installierenEinrichten Ihres Heim-WLANs.
Dies kann mit wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf. erfolgen
Starten Sie den Pi neu und Sie sollten eine IP-Adresse sehen, wenn Sie ifconfig eingeben
Teil 3: Webserver und Datenbank installieren
Sobald Sie Ihren Pi zum Laufen gebracht haben, ändern Sie am besten Ihr Passwort. Dies kann mit dem Befehl passwd erfolgen.
Sobald dies erledigt ist, installieren Sie Apache, PHP, MariaDB und 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
Vergessen Sie nicht, ein sicheres MySQL-Passwort festzulegen.
Teil 4: Installieren der erforderlichen Python-Bibliotheken
Für das Backend benötigen wir einige Bibliotheken. Diese können mit dem Befehl pip3 installiert werden.
pip3 installiere mysql-connector-python
pip3 installflakon-socketio
pip3 install Flask-Cors
pip3 install geventpip3 install gevent-websocket
pip3 installieren ttn
Schritt 2: Auslegen der Elektronik
Damit dieses Projekt funktioniert, müssen wir die gesamte Elektronik anschließen.
Der LoRa-Schild lässt sich einfach aufsetzen. Richten Sie die Pins einfach an den Pins Ihres Arduino aus.
Die anderen Anschlüsse sind in meinem Fritzing-Schema beschrieben. Was hier heruntergeladen werden kann:
Schritt 3: Entwerfen der Datenbank
Um alle Spiel- und Sensordaten speichern zu können, habe ich ein paar Tabellen erstellt:
Messung und SensorDie Messwerte der Sensoren, die in den Sensortabellen zu finden sind. Es enthält einen Verweis auf den Sensor, den Wert der Messung (zB Koordinaten: 51.123456; 3.123456) und eine optionale Spiel-ID (wenn während der Messung ein Spiel aktiv war).
spelerDie Spielernamen und die UID ihres RFID-Ausweises. Ein optionaler Feldmoderator wird hinzugefügt, diese Person kann das Spiel ändern (z. B. vorzeitig beenden).
spelDie Spielinformationen (Start- und Endzeit).
spel_has_spelerDie Beziehung zwischen Spel und Speler. Hier werden Spieler einem Spiel zugeordnet.
bezitIn dieser Tabelle wird die Punktzahl gespeichert. Es enthält die Spiel-ID, die Spieler-ID, den Zeitpunkt, zu dem er die Box gestohlen hat und den Zeitpunkt, zu dem er sie verloren hat (wenn jemand anderes sie stiehlt oder das Spiel endet). Indem Sie die Anfangszeit von der Endzeit subtrahieren, können Sie die Punktzahl berechnen, die er aus dieser Aufnahme erhalten hat.
Einen Export der Datenbank finden Sie auf meinem GitHub (https://github.com/BoussonKarel/CaptureTheBox)
Öffnen Sie das SQL in PHPMyAdmin / MySQL Workbench und führen Sie es aus. Die Datenbank sollte nun importiert werden.
Schritt 4: Einrichten eines Kontos auf TTN
Schritt 1: Registrieren Sie sich für ein Konto bei TTN und erstellen Sie eine Anwendung
Melden Sie sich für ein Konto bei TheThingsNetwork an und gehen Sie dann zu Konsole > Anwendung hinzufügen.
Wählen Sie einen Namen für Ihre Anwendung und klicken Sie auf Anwendung hinzufügen.
Schritt 2: Registrieren Sie ein Gerät
Wenn Sie Ihren Antrag gestellt haben, gehen Sie zu Gerät registrieren.
Wählen Sie eine Geräte-ID aus. Dies kann beliebig sein (sofern es sich um eine Schlangenhülle handelt) und klicken Sie auf Registrieren.
Klicken Sie auf das Generieren-Symbol unter Geräte-EUI, damit TTN eine für Sie generiert.
Schritt 3: Notieren Sie Ihre Anmeldeinformationen
Gehen Sie nun zu Ihrem Gerät und klicken Sie auf das Code-Symbol neben Geräte-EUI, App-EUI und App-Schlüssel. Es sollte jetzt als Array von Bytes erscheinen.
Klicken Sie vor dem Kopieren auf die Schaltfläche Switch und stellen Sie sicher, dass Ihre Dev-EUI und App-EUI ZUERST LSB sind.
Ihr App-Schlüssel sollte ZUERST MSB bleiben (ändern Sie das nicht).
Diese Schlüssel benötigen Sie im nächsten Schritt: Einrichten des Arduino.
Schritt 4: Notieren Sie Ihren Anwendungszugriffsschlüssel
Jetzt benötigen wir noch einen weiteren Schlüssel, um MQTT auf unserem Raspberry Pi einzurichten.
Gehen Sie zu Ihrer Anwendung und scrollen Sie nach unten zu Zugriffstasten.
Sie benötigen dies im Schritt Back-End.
Schritt 5: Einrichten des Arduino
Arduino-Code finden Sie auch auf meinem GitHub unter Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Dieser Code ist in mehrere Registerkarten unterteilt, um ihn zu organisieren.
main.inoDer Hauptcode: Pin-Deklarationen, setup() und loop()
0_LoRa.inoDieser Code wickelt die Kommunikation mit LoRa ab.
Es legt die Daten der LDR-, GPS- und RFID-Tags in einem Array von 13 Bytes ab und sendet diese an TheThingsNetwork.
1_LDR.inoMit analogRead() misst es die Spannung über dem lichtabhängigen Widerstand.
Dies wird dann in einen Prozentsatz des Lichts umgewandelt (0 ist nichts, 100 ist eine Handy-Taschenlampe).
2_GPS.inoDies verwendet die serielle Kommunikation mit TX1 und RX1 (Serial1).
Es verwendet NMEA-Nachrichten (die $GPRMC-Nachrichten, um genau zu sein), um den Breiten- und Längengrad der Box zu finden.
3_RFID.inoMit der MFRC522-Bibliothek scannt dieser Code nach neuen RFID-Tags. Immer wenn einer vorhanden ist, wird er als RFID_lastUID gespeichert.
4_DotMatrix.inoDieser Code wird verwendet, um die Punktmatrixanzeige zu initialisieren und einzustellen. Er enthält Definitionen für die Ladeanimation usw.
Einrichten
Bevor Sie diesen Code auf Ihr Arduino hochladen können, müssen Sie einige Bibliotheken installieren.
Die Arduino-LMIC-Bibliothek von matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
Die MFRC522-Bibliothek für den RFID-Reader (https://github.com/miguelbalboa/rfid)
Gehen Sie nun zu main.ino und ändern Sie DEVEUI, APPEUI und APPKEY in die, die Sie im letzten Schritt kopiert haben.
Schritt 6: Einrichten des Backends
Das Backend für dieses Projekt finden Sie auf meinem GitHub unter RPI > Backend(https://github.com/BoussonKarel/CaptureTheBox).
Wie funktioniert es?
- Alle 10 Sekunden sucht der Code nach einem aktiven Spiel. Wenn eines gefunden wird, wird es in einer Variablen namens huidigSpel (currentGame) gespeichert.
- Wenn der Modus auf Seriell eingestellt ist, wird ein Kabel zwischen dem Arduino und dem Pi verwendet. Der Pi fragt die Werte von LDR und GPS ab. Der Arduino antwortet mit einem JSON-Format. RFID-Tags werden gesendet, wenn sie präsentiert werden. Dieser Modus wurde ausschließlich für Entwicklungszwecke verwendet und ist nicht mehr wirklich notwendig.
- Wenn der Modus auf LoRa eingestellt ist, wird ein MQTT-Client erstellt, der immer dann einen Callback auslöst, wenn LoRa-Daten von TTN empfangen werden. Diese enthält LDR-, GPS- und RFID-Daten.
- Das Frontend kann Daten mithilfe der API-Endpunkte abrufen. Die meisten Daten werden mit huidigSpel.id abgerufen. Die Daten werden mit jsonify() im JSON-Format zurückgegeben.
Ändern Sie die EinstellungenGehen Sie zu secrets.py und geben Sie den Namen Ihrer LoRa-Anwendung und Ihren Zugangsschlüssel ein (Sie haben sich zuvor notiert).
Gehen Sie zu config.py und geben Sie Ihre Datenbank-Anmeldeinformationen ein (wie Passwort, Benutzer…)
Einrichten als DienstVersuchen Sie, app.py auszuführen. Sobald Sie bestätigt haben, dass dies funktioniert, können wir es als Dienst verwenden. Dadurch wird der Code automatisch im Hintergrund gestartet, wenn Sie Ihren Pi starten.
Kopieren Sie dazu ctb_service.service nach /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Aktivieren Sie es jetzt mit systemctl enable ctb_service.service
Wenn Sie einige Änderungen am Code vornehmen müssen, können Sie ihn einfach mit systemctl stop stoppen (wird beim Neustart wieder gestartet) oder mit systemctl disable is deaktivieren (automatischen Start stoppen).
Wenn Sie die Protokolle (aufgrund von Fehlern) einsehen müssen, können Sie journalctl -u ctb_service.service verwenden.
Weitere Informationen zu den Diensten finden Sie hier:
Schritt 7: Einrichten des Frontends
Frontend ist wie gewohnt auf meinem GitHub zu finden, unter RPI > Frontend(https://github.com/BoussonKarel/CaptureTheBox)
Fügen Sie diese in den Ordner /var/html Ihres Raspberry Pi ein.
Diese enthält alle notwendigen Webseiten für das Spiel.
Es enthält auch ein Skript zur Kommunikation mit dem Backend (sowohl in Echtzeit als auch über die API-Endpunkte).
Schritt 8: Hinzufügen eines Gehäuses
Für den Koffer habe ich einen alten Werkzeugkoffer verwendet, zusammen mit folgenden Materialien/Techniken:
- 3d Drucken
- Schaumstoff, um die Batterie in Position zu halten
- Recycelte Holzbretter
- Heißkleber
- Schrauben und Muttern
Was Sie mit Ihrem Fall tun, ist Ihre Entscheidung! Ich gebe dir künstlerische Freiheit.
Zur Inspiration habe ich einige Fotos von meinem (fertigen) Fall hinzugefügt.
Empfohlen:
Imbucare Box 2: 12 Schritte
Imbucare Box 2: Realizar un juguete para niños con edades entre 3 y 4 años, que allowa ayudar en el desarrollo de las habilidades cognitivas y motoras, enfocándonos Principalmente en el reconocimienciento de
Bauanleitung für die Bounce-Box: 11 Schritte
Bauanleitung für die Bounce-Box: Dies ist ein grundlegender Überblick darüber, wie ich den Prototyp der Bounce-Box gebaut habe. Das Design ist noch nicht abgeschlossen, und diese Anweisungen beschönigen einige Details. Allerdings gibt es hier keine Techniken oder Ideen auf Expertenniveau
PHOTO LIGHT BOX bauen: 7 Schritte (mit Bildern)
So bauen Sie eine PHOTO LIGHT BOX: Lightboxen sind eine großartige Möglichkeit, erstklassige Fotos aufzunehmen. Diese können aus nahezu jedem Material hergestellt werden. Sie können sogar eine mit Pappe erstellen. Für mich brauche ich etwas Robustes und Langlebiges. Obwohl es großartig wäre, es aufzuschlüsseln, habe ich keine
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter - Daumen Roboter - Servomotor - Quellcode: 26 Schritte (mit Bildern)
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter | Daumen Roboter | Servomotor | Quellcode: Thumbs Robot. Verwendet ein Potentiometer des Servomotors MG90S. Es macht sehr viel Spaß und ist einfach! Der Code ist sehr einfach. Es sind nur etwa 30 Zeilen. Es sieht aus wie ein Motion-Capture.Bitte hinterlassen Sie Fragen oder Feedback![Anleitung] Quellcode https://github.c
Eine Glasfaser-Subwoofer-Box herstellen – wikiHow
So bauen Sie eine Glasfaser-Subwoofer-Box: Glasfaser-Subwoofer-Gehäuse bieten einige echte Vorteile für ein benutzerdefiniertes Auto-Audio-Setup. Erstens können sie so geformt werden, dass sie in ein bestimmtes Fahrzeug oder einen bestimmten Raum innerhalb eines Fahrzeugs passen, wobei der Raum genutzt wird, der mit einem normalen rechteckigen Subwoofer nicht genutzt werden könnte