Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Ta Instructable bo predstavil postopek ustvarjanja igre z infrardečo lasersko oznako z uporabo osnovnega strežniškega računalnika in ničle Raspberry Pi za vsakega igralca. Pri komunikaciji s strežnikom se projekt močno opira na povezavo Wifi, zaradi česar je Pi odličen kandidat.
Strežnik, uporabljen v tem projektu, je bil stari namizni računalnik z Linuxom. Računalnik ne potrebuje nič posebnega in verjetno bi ga bilo mogoče zagnati tudi z Raspberry Pi 3. Strežnik in vsaka pi ničla morata biti med igranjem igre povezana z istim omrežjem.
1. korak: Materiali
Opis in nekaj povezav do potrebnih materialov so prikazani spodaj. Spodnji seznam materiala je za 3 puške.
- Strežniški računalnik (1)
- Raspberry Pi Zero W (3) Adafruit
- Najmanj 4 GB SD kartice (3) Amazon
- IR LED oddajnik (3)
- IR sprejemnik (6) Amazon
- Rdeča LED (3)
- Modra LED (3)
- Zelena LED (3)
- Pasivni zvočni signal (3) Amazon
- Potisni gumb (6)
- LCD zaslon 16x2 z vmesnikom I2C (3) Amazon
- Prenosni baterijski paket (3) Amazon
- Mikro na običajen USB kabel (3) Amazon
- PN2222 Tranzistor (3)
- 100Ω upor (3)
- 1kΩ upor (9)
Izbirni predmeti:
- Telovnik (3) Amazon
- Podaljšek trakovnega kabla (3) Amazon
V tem projektu smo na koncu vzeli IR LED oddajnik iz starega kompleta pištol za lasersko označevanje, ki so imeli okoli oddajnika črni stožec, da bi olajšali strel vsake pištole. Vendar bi moral delovati vsak splošni oddajnik.
Poleg zgoraj naštetih predmetov so bile laserske pištole 3D natisnjene. Ta projekt bi torej zahteval tudi dostop do 3D tiskalnika in žarilne nitke. Na splošno je za tri pištole skupaj prišlo približno 350 dolarjev.
2. korak: Namestitev strežnika
Prva stvar, ki je potrebna za nastavitev strežnika, je namestitev storitve posrednika Mosquitto MQTT. Mosquitto je storitev, ki ponuja okvir za komunikacijo med vsako od naprav v igri. To strežniku omogoča pošiljanje sporočil vsakemu Pisu, ki je povezan s storitvijo. V terminalu zaženite naslednje ukaze.
sudo apt-get posodobitev
sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 namestite paho-mqtt
Nekateri grafični vmesniki za strežnik so bili ustvarjeni z oblikovalcem grafičnega vmesnika, imenovanim Pygubu. To lahko namestite tako, da zaženete:
pip3 namestite pygubu
Več informacij o pygubu najdete na
Ko sta MQTT in Pygubu nameščena, ustvarite nov imenik in kopirajte priložene datoteke. Imenik mora vsebovati:
- ltag.py
- pregame.py
- game_statistics.py
- gvars.py
- pygubu.ui
- pygubu_limited.ui
- home.png
- self.png
- sovražniki.png
- laser.jpg
Opomba: Priloženih slik, uporabljenih v tem projektu, ni ustvarila razvojna ekipa in zato ne zahtevajo avtorstva.
3. korak: Nastavitev Raspberry Pi
Ta korak bo treba ponoviti na vsakem malinovem psu.
1. Namestite operacijski sistem
Najprej začnite z novo namestitvijo Raspbiana. Priporočamo uporabo različice Lite, saj Pi manj upravlja, vendar bi morala obe različici delovati v redu. Prenos najdete na
2. Namestite MQTT
Nato moramo namestiti storitev posrednika MQTT. Za to bomo uporabili Mosquitto. V terminalu zaženite naslednje ukaze.
sudo apt-get posodobitev
sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 namestite paho-mqtt
Mosquitto je storitev, ki zagotavlja okvir za komunikacijo med vsako od naprav v igri. To strežniku omogoča pošiljanje sporočil vsakemu Pisu, ki je povezan s storitvijo.
3. Namestite Orodja I2C
Naslednji ukaz bo namestil knjižnice, ki se uporabljajo za zaslon LCD.
sudo apt-get install -y python3-smbus i2c-tools
sudo apt -get install rpi.gpio -y
Naslov i2c bo morda treba spremeniti v datoteki lcddriver.py. Naslov lahko poiščete tako, da vnesete naslednji ukaz.
i2cdetect -y 1
4. Namestite in konfigurirajte LIRC
Ustvarite nov imenik in naložite priložene datoteke na to mesto.
Večina internetnih brskalnikov ne prenese datotek brez razširitev. Če želite to odpraviti, sta bili dve datoteki naloženi z začasnimi razširitvami. Tako "lircrc.deleteExtension" kot "modules.deleteExtension" bi morala biti dejansko brez razširitev, datoteke pa bi morali po uspešnem prenosu preimenovati v "lircrc" in "module".
Ta korak namesti in konfigurira odvisnosti za paket infrardečega daljinskega upravljalnika Linux (LIRC). Za več informacij glejte vadnico za nastavitev LIRC na:
Najprej namestite knjižnico, nato kopirajte vključene datoteke v ustrezne imenike, kot je prikazano v spodnjih ukazih. Na koncu znova zaženite storitev lircd.
sudo apt-get install python3-lirc -y
Iz novo ustvarjenega imenika izvedite naslednje ukaze, da premaknete konfiguracijske datoteke na njihova prava mesta.
sudo mv lircd.conf hardware.conf lircrc lirc_options.conf/etc/lirc/
moduli sudo mv /etc /
Nato znova zaženite storitev lircd tako, da zaženete:
sudo /etc/init.d/lircd ponovni zagon
Nato uredite datoteko /boot/config.txt in dodajte naslednjo vrstico
dtoverlay = lirc-rpi, gpio_in_pin = 18, gpio_out_pin = 25
Znova zaženite pi, da bodo spremembe začele veljati.
sudo ponovni zagon
5. Omogočite I2C in uredite CLIENT za vsakega igralca
Nato bomo omogočili vmesnik I2C. To je mogoče storiti z uporabo
sudo raspi-config
in omogočanje I2C v meniju "možnosti vmesnika".
6. Urejanje predvajalnika CLIENT in LTSERVER
Imenik iger mora zdaj vsebovati štiri preostale datoteke.
- i2c_lib.py
- lcddriver.py
- ltsounds.py
- player.py
Zadnji korak pri konfiguraciji pi je, da vsakemu pi dodelite številko KLIJENTE in dodate lokacijo strežnika. To naredite tako, da za vsako pi uredite priloženo datoteko "player.py", tako da imajo vsi različno številko KLIJENTA. Številka KLIJENTA je dodeljena v 3. vrstici player.py. Prvemu pi dodelite stranko "1", drugo "2" in tretjo stranko "3".
Vrstico LTSERVER je treba spremeniti v naslov IP strežnika. To ugotovite tako, da vnesete 'ifconfig | grep "inet addr" 'v terminalu strežniškega računalnika.
4. korak: Sestavljanje pištole
Priključite vsako pištolo v skladu s shemo ožičenja in zgornjo shemo.
Vsaka zunanja naprava je povezana z naslednjimi zatiči GPIO na Pi Zero:
- Zvočni signal: GPIO5
- Sprožilec: GPIO26
- Ponovno naloži: GPIO12
- IR oddajnik: GPIO25
- IR sprejemniki: GPIO18
- RDEČA LED: GPIO17
- ZELENA LED: GPIO27
- MODRA LED: GPIO22
- I2C_SDA: GPIO2
- I2C_SCL: GPIO3
Za več podrobnosti si oglejte shemo.
Po želji lahko laserske pištole 3D natisnemo z uporabo priloženih datotek s koračnimi modeli. Upoštevajte, da morata biti natisnjeni dve datoteki "front1STL. STL".
5. korak: Igranje iger
Igra se zažene z zagonom datoteke "ltag.py" na strežniku. Ko je to storjeno, se lahko vsak od igralcev poveže s strežnikom tako, da zažene svojo datoteko "player.py".
Opomba: Po priključitvi akumulatorja lahko traja do ene minute, da se pi zažene.
Morda bi bilo koristno dodati tudi opravilo cron, ki samodejno zažene datoteko player.py, ko se pi zažene. To smo težko uresničili in na koncu smo dodali vrstico v datoteko "/etc/rc.local" na vsakem pisu za zagon datoteke "player.py". To omogoča, da se igra zažene, ne da bi morali vnesti SSH v Pi za zagon predvajalnikove skripte.
Ko se igra začne, ko so igralci pripravljeni, se prikaže grafični vmesnik, ki omogoča konfiguriranje nekaterih nastavitev igre. Igra se začne po pritisku gumba Start.
Po vsaki igri se prikaže končni grafični vmesnik s statistiko o predhodni igri, vključno z oznakami, globalnimi odstotki in trajanjem igre.
Opomba: Zaradi omejitev v knjižnicah programske opreme lokacije oznak poročila o točnosti niso reprezentativne za dejanske laserske oznake. V trenutni različici je slika poročila o natančnosti predvajalnika zgolj estetska v upanju na prihodnjo različico z dejansko izvedbo lokacije oznake.
6. korak: Prihodnje izboljšave
Na splošno je bil projekt velik uspeh. Ob tem smo razmišljali o nekaj dodatnih funkcijah, ki bi jih lahko dodali prihodnji izdaji.
- Čvrstejša oblika sprožilca za 3D tiskane pištole
- Končni spustni meni GUI za prikaz statistike preteklih iger
- Več infrardečih sprejemnikov, ki bi jih lahko pritrdili na telovnike igralcev
- Dodatni načini igre, ki jih lahko izberete v grafičnem vmesniku Pregame
- Natančnejši algoritem lokacije oznake na strani s statistiko igralcev