Inhoudsopgave:

Infrarood lasertag met Raspberry Pi Zero - Ajarnpa
Infrarood lasertag met Raspberry Pi Zero - Ajarnpa

Video: Infrarood lasertag met Raspberry Pi Zero - Ajarnpa

Video: Infrarood lasertag met Raspberry Pi Zero - Ajarnpa
Video: Remote Laser Tag 2024, Juli-
Anonim
Infrarood lasergame met Raspberry Pi Zero
Infrarood lasergame met Raspberry Pi Zero

Deze Instructable doorloopt het proces voor het maken van een Infrared Laser Tag-spel met behulp van een basisservercomputer en een Raspberry Pi-nul voor elke speler. Het project is sterk afhankelijk van een wifi-verbinding om met de server te communiceren, wat de Pi een geweldige kandidaat maakt.

De server die in dit project werd gebruikt, was een oude desktopcomputer met Linux. De computer hoeft niets bijzonders te zijn en zou waarschijnlijk zelfs vanaf een Raspberry Pi 3 kunnen worden bestuurd. De server en elk van de pi-nullen moeten tijdens het spelen op hetzelfde netwerk zijn aangesloten.

Stap 1: Materialen

Materialen
Materialen
Materialen
Materialen

De beschrijving en enkele links voor de benodigde materialen worden hieronder weergegeven. Onderstaande materiaallijst is voor 3 pistolen.

  • Servercomputer (1)
  • Raspberry Pi Zero W (3) Adafruit
  • Minimaal 4 GB SD-kaart (3) Amazon
  • IR LED-zender (3)
  • IR-ontvanger (6) Amazon
  • Rode LED (3)
  • Blauwe LED (3)
  • Groene LED (3)
  • Passieve zoemer (3) Amazon
  • Drukknop (6)
  • LCD 16x2 scherm met I2C-adapter (3) Amazon
  • Draagbaar batterijpakket (3) Amazon
  • Micro naar gewone USB-kabel (3) Amazon
  • PN2222 Transistor (3)
  • 100Ω weerstand (3)
  • 1kΩ Weerstand (9)

Optionele items:

  • Vest (3) Amazone
  • Lintkabelverlenging (3) Amazon

In dit project hebben we uiteindelijk de IR LED-zender genomen van een oude set lasergamepistolen met een zwarte kegel rond de zender om het schot van elk pistool te verkleinen. Elke algemene zender zou echter moeten werken.

Naast de hierboven genoemde items zijn de laserpistolen zelf 3D-geprint. Voor dit project zou daarom ook toegang nodig zijn tot een 3D-printer en filament. Over het algemeen kwam het totaal voor drie wapens op ongeveer $ 350.

Stap 2: Serverconfiguratie

Serverconfiguratie
Serverconfiguratie
Serverconfiguratie
Serverconfiguratie
Serverconfiguratie
Serverconfiguratie

Het eerste dat nodig is om de server in te stellen, is het installeren van de Mosquitto MQTT Broker Service. Mosquitto is de service die een raamwerk biedt voor communicatie tussen elk van de apparaten in het spel. Hierdoor kan de server berichten verzenden naar elk van de Pi's die met de service zijn verbonden. Voer in de terminal de volgende opdrachten uit.

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

Sommige GUI's voor de server zijn gemaakt met behulp van een GUI-ontwerper genaamd Pygubu. Dit kan worden geïnstalleerd door het uitvoeren van:

pip3 installeer pygubu

Meer informatie over pygubu is te vinden op

Nadat MQTT en Pygubu zijn geïnstalleerd, maakt u een nieuwe map en kopieert u de bijgevoegde bestanden. De map moet bevatten:

  • ltag.py
  • pregame.py
  • game_statistics.py
  • gvars.py
  • pygubu.ui
  • pygubu_limited.ui
  • home.png
  • zelf.png
  • vijanden.png
  • laser.jpg

Opmerking: de bijgevoegde afbeeldingen die in dit project worden gebruikt, zijn niet gemaakt door het ontwikkelingsteam en claimen daarom geen auteurschap.

Stap 3: Raspberry Pi-configuratie

Raspberry Pi-configuratie
Raspberry Pi-configuratie

Deze stap moet op elk van de Raspberry Pi's worden herhaald.

1. Installeer het besturingssysteem

Begin eerst met een nieuwe installatie van Raspbian. We raden aan om de Lite-versie te gebruiken, omdat deze minder voor de Pi te hanteren is, maar beide versies zouden prima moeten werken. De download is te vinden op

2. Installeer MQTT

Vervolgens moeten we de MQTT-makelaarservice installeren. Hiervoor gebruiken we Mosquito. Voer in de terminal de volgende opdrachten uit.

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 is de service die een raamwerk biedt voor communicatie tussen elk van de apparaten in het spel. Hierdoor kan de server berichten verzenden naar elk van de Pi's die op de service zijn aangesloten.

3. Installeer I2C-tools

Met de volgende opdracht worden bibliotheken geïnstalleerd die voor het LCD-scherm worden gebruikt.

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

sudo apt-get install rpi.gpio -y

Het i2c-adres moet mogelijk worden gewijzigd in het bestand lcddriver.py. Het adres kan worden gevonden door het volgende commando in te voeren.

i2cdetect -y 1

4. Installeer en configureer LIRC

Maak een nieuwe map en download de bijgevoegde bestanden naar deze locatie.

De meeste internetbrowsers zullen geen bestanden downloaden zonder extensies. Om dit te omzeilen, werden twee van de bestanden geüpload met tijdelijke extensies. Zowel de "lircrc.deleteExtension" als "modules.deleteExtension" zouden in feite geen extensies moeten hebben en de bestanden moeten worden hernoemd naar "lircrc" en "modules" nadat ze met succes zijn gedownload.

Deze stap installeert en configureert de afhankelijkheden voor het Linux Infrared Remote Control (LIRC)-pakket. Zie voor meer informatie de tutorial voor het instellen van LIRC op:

Installeer eerst de bibliotheek en kopieer vervolgens de meegeleverde bestanden naar hun respectievelijke mappen, zoals weergegeven in de onderstaande opdrachten. Start ten slotte de lircd-service opnieuw.

sudo apt-get install python3-lirc -y

Voer vanuit de nieuw aangemaakte directory de volgende opdrachten uit om de configuratiebestanden naar de juiste locaties te verplaatsen.

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

sudo mv-modules /etc/

Start vervolgens de lircd-service opnieuw door het volgende uit te voeren:

sudo /etc/init.d/lircd restart

Bewerk vervolgens het bestand /boot/config.txt en voeg de volgende regel toe:

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

Start uw pi opnieuw op om de wijzigingen door te voeren.

sudo reboot

5. Schakel I2C in en bewerk CLIENT voor elke speler

Vervolgens zullen we de I2C-interface inschakelen. Dit kan met behulp van

sudo raspi-config

en het inschakelen van de I2C in het menu "interface-opties".

6. Bewerk Player CLIENT en LTSERVER

De gamedirectory zou nu de vier resterende bestanden moeten bevatten.

  • i2c_lib.py
  • lcddriver.py
  • ltsounds.py
  • speler.py

De laatste stap bij het configureren van de pi is het toewijzen van een CLIENT-nummer aan elke pi en het toevoegen van de locatie van de server. Dit wordt gedaan door het meegeleverde "player.py"-bestand voor elke pi te bewerken, zodat ze allemaal een ander CLIENT-nummer hebben. Het CLIENT-nummer wordt toegewezen op regel 3 van player.py. Wijs de eerste pi toe als client "1", de tweede als "2" en de derde als client "3".

De LTSERVER-regel moet worden gewijzigd in het IP-adres van de server. Dit wordt gevonden door 'ifconfig |. te typen grep "inet addr" ' in de terminal van de servercomputer.

Stap 4: Pistoolmontage

Pistool montage
Pistool montage
Pistool montage
Pistool montage

Ga verder met het bedraden van elk van de pistolen volgens het bedradingsschema en het schema hierboven.

Elk van de randapparatuur is verbonden met de volgende GPIO-pinnen op de Pi Zero:

  • Zoemer: GPIO5
  • Trigger: GPIO26
  • Herladen: GPIO12
  • IR-zender: GPIO25
  • IR-ontvangers: GPIO18
  • RODE LED: GPIO17
  • GROENE LED: GPIO27
  • BLAUWE LED: GPIO22
  • I2C_SDA: GPIO2
  • I2C_SCL: GPIO3

Zie het schema voor meer details.

Indien gewenst kunnen de laserpistolen 3D worden geprint met behulp van de meegeleverde stapmodelbestanden. Houd er rekening mee dat twee van de "front1STL. STL"-bestanden moeten worden afgedrukt.

Stap 5: Gameplay

Spel spelen
Spel spelen
Spel spelen
Spel spelen
Spel spelen
Spel spelen

Het spel wordt gestart door het bestand "ltag.py" op de server uit te voeren. Zodra dit is gebeurd, kan elk van de spelers verbinding maken met de server door hun respectievelijke "player.py" -bestand uit te voeren.

Opmerking: nadat de batterij is aangesloten, kan het een minuut duren voordat de pi is opgestart.

Het kan ook handig zijn om een cron-job toe te voegen die automatisch het player.py-bestand uitvoert zodra de pi start. We hadden moeite om dit werkend te krijgen en eindigden met het toevoegen van een regel aan het "/etc/rc.local"-bestand op elk van de Pi's om het "player.py"-bestand uit te voeren. Hierdoor kan het spel worden gestart zonder dat SSH naar de Pi's hoeft te worden uitgevoerd om het spelersscript uit te voeren.

Zodra het spel is gestart met de spelers gereed, verschijnt er een GUI waarmee een aantal spelinstellingen kunnen worden geconfigureerd. Het spel begint nadat de Start-knop is ingedrukt.

Na elk spel verschijnt een eind-GUI met statistieken over het vorige spel, inclusief tags, globale percentages en spelduur.

Opmerking: vanwege beperkingen in softwarebibliotheken zijn de locaties van de nauwkeurigheidsrapporttags niet representatief voor de werkelijke lasertags. In de huidige versie is de afbeelding van het spelernauwkeurigheidsrapport puur voor esthetiek in de hoop op een toekomstige versie met daadwerkelijke taglocatie-implementatie.

Stap 6: Toekomstige verbeteringen

Toekomstige verbeteringen
Toekomstige verbeteringen
Toekomstige verbeteringen
Toekomstige verbeteringen

Al met al was het project een groot succes. Onderweg hebben we een paar extra functies bedacht die mogelijk aan een toekomstige editie worden toegevoegd.

  • Steviger triggerontwerp voor de 3D-geprinte pistolen
  • Het vervolgkeuzemenu GUI beëindigen om statistieken van eerdere games weer te geven
  • Meer infraroodontvangers die aan de vesten van de spelers kunnen worden bevestigd
  • Extra spelmodi die kunnen worden gekozen in de Pregame GUI
  • Nauwkeuriger taglocatie-algoritme op de pagina met spelersstatistieken

Aanbevolen: