Inhaltsverzeichnis:

Infrarot-Laser-Tag mit Raspberry Pi Zero - Gunook
Infrarot-Laser-Tag mit Raspberry Pi Zero - Gunook

Video: Infrarot-Laser-Tag mit Raspberry Pi Zero - Gunook

Video: Infrarot-Laser-Tag mit Raspberry Pi Zero - Gunook
Video: 🔶 Flipper Zero Fake Videos | everywhere... #shorts 2024, Juli
Anonim
Infrarot-Laser-Tag mit Raspberry Pi Zero
Infrarot-Laser-Tag mit Raspberry Pi Zero

Dieses Instructable führt durch den Prozess zum Erstellen eines Infrarot-Laser-Tag-Spiels mit einem Basisservercomputer und einem Raspberry Pi Zero für jeden Spieler. Das Projekt ist stark auf eine Wifi-Verbindung angewiesen, um mit dem Server zu kommunizieren, was den Pi zu einem großartigen Kandidaten macht.

Der in diesem Projekt verwendete Server war ein alter Desktop-Computer mit Linux. Der Computer muss nichts besonderes sein und könnte wahrscheinlich sogar von einem Raspberry Pi 3 betrieben werden. Der Server und jeder der Pi Zeros muss während des Spiels mit demselben Netzwerk verbunden sein.

Schritt 1: Materialien

Materialien
Materialien
Materialien
Materialien

Die Beschreibung und einige Links für die benötigten Materialien sind unten aufgeführt. Die folgende Materialliste gilt für 3 Pistolen.

  • Server-Computer (1)
  • Raspberry Pi Zero W (3) Adafruit
  • Mindestens 4 GB SD-Karte (3) Amazon
  • IR-LED-Sender (3)
  • IR-Empfänger (6) Amazon
  • Rote LED (3)
  • Blaue LED (3)
  • Grüne LED (3)
  • Passiver Summer (3) Amazon
  • Druckknopf (6)
  • 16x2-LCD-Bildschirm mit I2C-Adapter (3) Amazon
  • Tragbarer Akku (3) Amazon
  • Micro-zu-Normal-USB-Kabel (3) Amazon
  • PN2222-Transistor (3)
  • 100Ω Widerstand (3)
  • 1kΩ Widerstand (9)

Extras:

  • Weste (3) Amazon
  • Flachbandkabelverlängerung (3) Amazon

In diesem Projekt haben wir den IR-LED-Sender aus einem alten Satz Laser-Tag-Pistolen genommen, die einen schwarzen Kegel um den Sender hatten, um den Schuss jeder Waffe einzuschränken. Jeder allgemeine Sender sollte jedoch funktionieren.

Zusätzlich zu den oben aufgeführten Artikeln wurden die Laserpistolen selbst 3D-gedruckt. Dieses Projekt würde daher auch den Zugang zu einem 3D-Drucker und Filament erfordern. Insgesamt belief sich die Summe für drei Geschütze auf etwa 350 US-Dollar.

Schritt 2: Server-Setup

Server-Setup
Server-Setup
Server-Setup
Server-Setup
Server-Setup
Server-Setup

Das erste, was zum Einrichten des Servers erforderlich ist, ist die Installation des Mosquitto MQTT Broker Service. Mosquitto ist der Dienst, der einen Rahmen für die Kommunikation zwischen den einzelnen Geräten im Spiel bereitstellt. Dies ermöglicht dem Server, Nachrichten an jeden der mit dem Dienst verbundenen Pis zu senden. Führen Sie im Terminal die folgenden Befehle aus.

sudo apt-get update

sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt

Einige der GUIs für den Server wurden mit einem GUI-Designer namens Pygubu erstellt. Dies kann installiert werden, indem Sie Folgendes ausführen:

pip3 installieren pygubu

Weitere Informationen zu Pygubu finden Sie unter

Sobald MQTT und Pygubu installiert sind, erstellen Sie ein neues Verzeichnis und kopieren Sie die angehängten Dateien. Das Verzeichnis sollte enthalten:

  • ltag.py
  • pregame.py
  • game_statistics.py
  • gvars.py
  • pygubu.ui
  • pygubu_limited.ui
  • home.png
  • selbst.png
  • Feinde.png
  • laser.jpg

Hinweis: Die in diesem Projekt verwendeten angehängten Bilder wurden nicht vom Entwicklerteam erstellt und erheben daher keinen Anspruch auf Urheberschaft.

Schritt 3: Raspberry Pi-Setup

Raspberry Pi-Setup
Raspberry Pi-Setup

Dieser Schritt muss auf jedem der Raspberry Pis wiederholt werden.

1. Betriebssystem installieren

Beginnen Sie zunächst mit einer Neuinstallation von Raspbian. Wir würden empfehlen, die Lite-Version zu verwenden, da sie für den Pi weniger zu handhaben ist, aber beide Versionen sollten gut funktionieren. Den Download finden Sie unter

2. MQTT installieren

Als nächstes müssen wir den MQTT-Broker-Dienst installieren. Dafür verwenden wir Mosquitto. Führen Sie im Terminal die folgenden Befehle aus.

sudo apt-get update

sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt

Mosquitto ist der Dienst, der einen Rahmen für die Kommunikation zwischen den einzelnen Geräten im Spiel bereitstellt. Dies ermöglicht dem Server, Nachrichten an jeden der mit dem Dienst verbundenen Pis zu senden.

3. I2C-Tools installieren

Der folgende Befehl installiert Bibliotheken, die für den LCD-Bildschirm verwendet werden.

sudo apt-get install -y python3-smbus i2c-tools

sudo apt-get install rpi.gpio -y

Die i2c-Adresse muss möglicherweise in der Datei lcddriver.py geändert werden. Die Adresse kann durch Eingabe des folgenden Befehls ermittelt werden.

i2cdetect -y 1

4. Installieren und konfigurieren Sie LIRC

Erstellen Sie ein neues Verzeichnis und laden Sie die angehängten Dateien an diesen Speicherort herunter.

Die meisten Internetbrowser laden keine Dateien ohne Erweiterungen herunter. Um dies zu umgehen, wurden zwei der Dateien mit temporären Erweiterungen hochgeladen. Sowohl "lircrc.deleteExtension" als auch "modules.deleteExtension" sollten eigentlich ohne Erweiterungen sein und die Dateien sollten nach erfolgreichem Download in "lircrc" und "modules" umbenannt werden.

In diesem Schritt werden die Abhängigkeiten für das Linux Infrared Remote Control (LIRC)-Paket installiert und konfiguriert. Weitere Informationen finden Sie im Tutorial zum Einrichten von LIRC unter:

Installieren Sie zuerst die Bibliothek und kopieren Sie dann die enthaltenen Dateien in die entsprechenden Verzeichnisse, wie in den folgenden Befehlen gezeigt. Starten Sie abschließend den lircd-Dienst neu.

sudo apt-get install python3-lirc -y

Führen Sie im neu erstellten Verzeichnis die folgenden Befehle aus, um die Konfigurationsdateien an die richtigen Speicherorte zu verschieben.

sudo mv lircd.conf hardware.conf lircrc lirc_options.conf /etc/lirc/

sudo mv-Module /etc/

Starten Sie dann den lircd-Dienst neu, indem Sie Folgendes ausführen:

sudo /etc/init.d/lircd restart

Bearbeiten Sie als Nächstes die Datei /boot/config.txt und fügen Sie die folgende Zeile hinzu

dtoverlay=lirc-rpi, gpio_in_pin=18, gpio_out_pin=25

Starten Sie Ihr Pi neu, damit die Änderungen wirksam werden.

sudo neu starten

5. Aktivieren Sie I2C und bearbeiten Sie CLIENT für jeden Spieler

Als nächstes werden wir die I2C-Schnittstelle aktivieren. Dies kann mit

sudo raspi-config

und Aktivieren des I2C im Menü "Schnittstellenoptionen".

6. Player CLIENT und LTSERVER bearbeiten

Das Spielverzeichnis sollte nun die vier verbleibenden Dateien enthalten.

  • i2c_lib.py
  • lcddriver.py
  • ltsounds.py
  • spieler.py

Der letzte Schritt bei der Konfiguration des Pi besteht darin, jedem Pi eine CLIENT-Nummer zuzuweisen und den Standort des Servers hinzuzufügen. Dies geschieht durch Bearbeiten der mitgelieferten Datei "player.py" für jeden Pi, sodass sie alle eine andere CLIENT-Nummer haben. Die CLIENT-Nummer wird in Zeile 3 von player.py zugewiesen. Weisen Sie dem ersten Pi Client "1" zu, dem zweiten "2" und dem dritten Client "3".

Die Zeile LTSERVER sollte auf die IP-Adresse des Servers geändert werden. Dies wird durch Eingabe von 'ifconfig |. gefunden grep "inet addr" ' im Terminal des Servercomputers.

Schritt 4: Pistolenmontage

Pistolenmontage
Pistolenmontage
Pistolenmontage
Pistolenmontage

Fahren Sie mit der Verdrahtung jeder der Pistolen gemäß dem obigen Schaltplan und Schaltplan fort.

Jedes der Peripheriegeräte ist mit den folgenden GPIO-Pins des Pi Zero verbunden:

  • Summer: GPIO5
  • Auslöser: GPIO26
  • Nachladen: GPIO12
  • IR-Sender: GPIO25
  • IR-Empfänger: GPIO18
  • ROTE LED: GPIO17
  • GRÜNE LED: GPIO27
  • BLAUE LED: GPIO22
  • I2C_SDA: GPIO2
  • I2C_SCL: GPIO3

Weitere Informationen finden Sie im Schaltplan.

Auf Wunsch können die Laserpistolen mit den mitgelieferten Schrittmodelldateien in 3D gedruckt werden. Beachten Sie, dass zwei der Dateien "front1STL. STL" gedruckt werden müssen.

Schritt 5: Spiel spielen

Spielweise
Spielweise
Spielweise
Spielweise
Spielweise
Spielweise

Das Spiel wird durch Ausführen der Datei "ltag.py" auf dem Server gestartet. Sobald dies erledigt ist, kann sich jeder der Spieler mit dem Server verbinden, indem er seine jeweilige Datei "player.py" ausführt.

Hinweis: Nach dem Einstecken des Akkus kann es bis zu einer Minute dauern, bis der Pi hochfährt.

Es kann auch nützlich sein, einen Cron-Job hinzuzufügen, der die Datei player.py automatisch ausführt, sobald das Pi startet. Es fiel uns schwer, dies zum Laufen zu bringen, und am Ende fügten wir der Datei "/etc/rc.local" auf jedem der Pis eine Zeile hinzu, um die Datei "player.py" auszuführen. Dadurch kann das Spiel gestartet werden, ohne dass eine SSH-Verbindung zu den Pis erforderlich ist, um das Player-Skript auszuführen.

Sobald das Spiel mit den bereiten Spielern gestartet wurde, erscheint eine GUI, die es ermöglicht, einige der Spieleinstellungen zu konfigurieren. Das Spiel beginnt, nachdem die Start-Taste gedrückt wurde.

Nach jedem Spiel erscheint eine abschließende GUI mit Statistiken über das vorherige Spiel, einschließlich Tags, globaler Prozentsätze und Spieldauer.

Hinweis: Aufgrund von Einschränkungen in den Softwarebibliotheken sind die Positionen der Tags im Genauigkeitsbericht nicht repräsentativ für die tatsächlichen Laser-Tags. In der aktuellen Version dient das Bild des Player Accuracy Reports nur der Ästhetik in der Hoffnung auf eine zukünftige Version mit tatsächlicher Tag-Location-Implementierung.

Schritt 6: Zukünftige Verbesserungen

Zukünftige Verbesserungen
Zukünftige Verbesserungen
Zukünftige Verbesserungen
Zukünftige Verbesserungen

Insgesamt war das Projekt ein großer Erfolg. Auf dem Weg dorthin haben wir an einige zusätzliche Funktionen gedacht, die einer zukünftigen Edition hinzugefügt werden könnten.

  • Robusteres Abzugsdesign für die 3D-gedruckten Waffen
  • Beenden des GUI-Dropdown-Menüs, um Statistiken aus vergangenen Spielen anzuzeigen
  • Weitere Infrarot-Empfänger, die an den Westen der Spieler befestigt werden könnten
  • Zusätzliche Spielmodi, die in der Pregame-GUI ausgewählt werden können
  • Genauerer Algorithmus für die Tag-Position auf der Seite mit den Spielerstatistiken

Empfohlen: