Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Ovaj Instructable će proći kroz proces stvaranja igre sa infracrvenim laserskim oznakama koristeći osnovni serverski računar i Raspberry Pi nulu za svakog igrača. Projekt se u velikoj mjeri oslanja na Wifi vezu za komunikaciju sa serverom što Pi čini odličnim kandidatom.
Poslužitelj korišten u ovom projektu bio je stari stolni računar s Linuxom. Računar ne mora biti ništa posebno, a vjerovatno bi čak mogao biti pokrenut i sa Raspberry Pi 3. Poslužitelj i svaki od pi nula moraju biti povezani na istu mrežu tokom igranja igre.
Korak 1: Materijali
Opis i neki linkovi za potrebne materijale prikazani su u nastavku. Spisak materijala u nastavku je za 3 pištolja.
- Server računara (1)
- Malina Pi Zero W (3) Adafruit
- Najmanje 4 GB SD kartica (3) Amazon
- IC LED odašiljač (3)
- IC prijemnik (6) Amazon
- Crvena LED dioda (3)
- Plava LED dioda (3)
- Zelena LED dioda (3)
- Pasivni zujalica (3) Amazon
- Pritisnite dugme (6)
- LCD ekran 16x2 sa I2C adapterom (3) Amazon
- Prijenosna baterija (3) Amazon
- Mikro na obični USB kabel (3) Amazon
- PN2222 Tranzistor (3)
- 100Ω otpornik (3)
- 1kΩ otpornik (9)
Opcione stavke:
- Prsluk (3) Amazon
- Produžetak kabela s vrpcom (3) Amazon
U ovom smo projektu na kraju uzeli IC LED odašiljač iz starog seta laserskih pištolja koji su imali crni konus oko odašiljača kako bi se suzio hitac svakog pištolja. Međutim, svaki opći odašiljač bi trebao raditi.
Osim gore navedenih stavki, laserski pištolji su 3D štampani. Stoga bi ovaj projekt također zahtijevao pristup 3D štampaču i filamentu. Sveukupno, za tri pištolja ukupna vrijednost iznosila je oko 350 dolara.
Korak 2: Postavljanje servera
Prva stvar potrebna za postavljanje servera je instaliranje Mosquitto MQTT Broker Service. Mosquitto je usluga koja pruža okvir za komunikaciju između svakog od uređaja u igri. Ovo omogućava serveru da šalje poruke svakom od Pis povezanih sa uslugom. U terminalu pokrenite sljedeće naredbe.
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
Neki od grafičkih sučelja za poslužitelj stvoreni su pomoću dizajnera grafičkog sučelja koji se zove Pygubu. Ovo se može instalirati pokretanjem:
pip3 instalirajte pygubu
Više informacija o pygubu možete pronaći na
Nakon što su MQTT i Pygubu instalirani, kreirajte novi direktorij i kopirajte priložene datoteke. Direktorij treba sadržavati:
- ltag.py
- pregame.py
- game_statistics.py
- gvars.py
- pygubu.ui
- pygubu_limited.ui
- home.png
- self.png
- neprijatelji.png
- laser.jpg
Napomena: Priložene slike korištene u ovom projektu nije stvorio razvojni tim i stoga ne zahtijevaju autorstvo.
Korak 3: Postavljanje Raspberry Pi
Ovaj korak će se morati ponoviti na svakom od malina Pis.
1. Instalirajte operativni sistem
Prvo počnite sa novom instalacijom Raspbiana. Preporučili bismo upotrebu Lite verzije jer Pi manje rješava rukovanje, ali obje verzije bi trebale dobro funkcionirati. Preuzimanje možete pronaći na
2. Instalirajte MQTT
Zatim moramo instalirati uslugu brokera MQTT. Za to ćemo koristiti Mosquitto. U terminalu pokrenite sljedeće naredbe.
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 je usluga koja pruža okvir za komunikaciju između svakog od uređaja u igri. Ovo omogućava serveru da šalje poruke svakom od Pis povezanih sa uslugom.
3. Instalirajte I2C Tools
Sljedeća naredba će instalirati biblioteke koje se koriste za LCD ekran.
sudo apt-get install -y python3-smbus i2c-tools
sudo apt -get install rpi.gpio -y
Možda će se i2c adresa morati promijeniti u datoteci lcddriver.py. Adresa se može pronaći unošenjem sljedeće naredbe.
i2cdetect -y 1
4. Instalirajte i konfigurirajte LIRC
Kreirajte novi direktorij i preuzmite priložene datoteke na ovu lokaciju.
Većina internetskih preglednika neće preuzimati datoteke bez ekstenzija. Da biste to zaobišli, dvije datoteke su učitane s privremenim ekstenzijama. I "lircrc.deleteExtension" i "modules.deleteExtension" bi u stvari trebali biti bez proširenja, a datoteke bi trebale biti preimenovane u "lircrc" i "module" nakon što su uspješno preuzete.
Ovaj korak instalira i konfigurira zavisnosti za Linux paket infracrvenog daljinskog upravljanja (LIRC). Za više informacija pogledajte vodič za postavljanje LIRC-a na:
Prvo instalirajte biblioteku, a zatim kopirajte uključene datoteke u odgovarajuće direktorije kao što je prikazano u naredbama ispod. Na kraju, ponovo pokrenite lircd uslugu.
sudo apt-get install python3-lirc -y
Iz novostvorenog direktorija izvršite sljedeće naredbe za premještanje konfiguracijskih datoteka na njihova ispravna mjesta.
sudo mv lircd.conf hardware.conf lircrc lirc_options.conf/etc/lirc/
sudo mv moduli /etc /
Zatim ponovo pokrenite lircd uslugu pokretanjem:
sudo /etc/init.d/lircd ponovno pokretanje
Zatim uredite /boot/config.txt datoteku i dodajte sljedeći red
dtoverlay = lirc-rpi, gpio_in_pin = 18, gpio_out_pin = 25
Ponovo pokrenite svoj pi da biste omogućili da promjene stupe na snagu.
sudo reboot
5. Omogućite I2C i uredite CLIENT za svakog igrača
Zatim ćemo omogućiti I2C sučelje. To se može učiniti pomoću
sudo raspi-config
i omogućavanje I2C u meniju "opcije interfejsa".
6. Uredite Player CLIENT i LTSERVER
Direktorij igara sada bi trebao sadržavati četiri preostale datoteke.
- i2c_lib.py
- lcddriver.py
- ltsounds.py
- player.py
Posljednji korak u konfiguriranju pi -a je dodjeljivanje svakom pi -u KLIJENTSKOG broja i dodavanje lokacije servera. To se postiže uređivanjem uključene datoteke "player.py" za svako pi tako da svi imaju različit broj KLIJENTA. Broj KLIJENTA dodijeljen je u 3. redu player.py. Dodijelite prvom pi klijentu "1", drugom "2", a trećem klijentu "3".
LTSERVER liniju treba promijeniti u IP adresu servera. To možete saznati upisivanjem 'ifconfig | grep "inet addr" 'u terminalu računara servera.
Korak 4: Sklapanje pištolja
Ožičite svaki pištolj prema shemi ožičenja i gornjoj shemi.
Svaki od perifernih uređaja spojen je na sljedeće GPIO pinove na Pi Zero:
- Zvučni signal: GPIO5
- Okidač: GPIO26
- Ponovno učitavanje: GPIO12
- IC odašiljač: GPIO25
- IC prijemnici: GPIO18
- CRVENA LED: GPIO17
- ZELENA LED: GPIO27
- PLAVA LED: GPIO22
- I2C_SDA: GPIO2
- I2C_SCL: GPIO3
Za više detalja pogledajte shemu.
Po želji, laserski pištolji mogu se 3D ispisati pomoću priloženih datoteka modela koraka. Imajte na umu da se dvije datoteke "front1STL. STL" moraju odštampati.
Korak 5: Igranje igara
Igra se pokreće pokretanjem datoteke "ltag.py" na serveru. Kada se to učini, svaki od igrača može se povezati sa serverom pokretanjem svoje datoteke "player.py".
Napomena: Nakon uključivanja baterije, može proći i do minute dok se pi ne pokrene.
Također bi moglo biti korisno dodati cron posao koji automatski pokreće player.py datoteku kada pi započne. Bilo nam je teško da ovo uspije i na kraju smo dodali redak u datoteku "/etc/rc.local" na svakom Pisu za pokretanje datoteke "player.py". Ovo omogućava pokretanje igre bez potrebe za SSH -om u Pi -ima za pokretanje skripte igrača.
Nakon što je igra započeta s spremnim igračima, pojavit će se GUI koji omogućuje konfiguriranje nekoliko postavki igre. Igra počinje nakon što pritisnete dugme Start.
Nakon svake igre pojavit će se završni GUI sa statistikom o prethodnoj igri, uključujući oznake, globalne postotke i trajanje igre.
Napomena: Zbog ograničenja u softverskim bibliotekama, lokacije oznaka izvješća o točnosti nisu reprezentativne za stvarne laserske oznake. U trenutnoj verziji slika Izvještaja o točnosti playera služi isključivo za estetiku u nadi da će doći do buduće verzije sa stvarnom implementacijom lokacije oznake.
Korak 6: Buduća poboljšanja
Sve u svemu, projekat je imao veliki uspjeh. Usput smo razmišljali o nekoliko dodatnih funkcija koje bi se mogle dodati budućem izdanju.
- Čvršći dizajn okidača za 3D štampane pištolje
- Završavanje padajućeg izbornika GUI za prikaz statistike iz prošlih igara
- Više infracrvenih prijemnika koji se mogu pričvrstiti na prsluke igrača
- Dodatni načini igre koji se mogu izabrati u Pregame GUI
- Precizniji algoritam lokacije oznake na stranici sa statistikom igrača