Satura rādītājs:

Infrasarkanais lāzera tags ar Raspberry Pi Zero: 6 soļi (ar attēliem)
Infrasarkanais lāzera tags ar Raspberry Pi Zero: 6 soļi (ar attēliem)

Video: Infrasarkanais lāzera tags ar Raspberry Pi Zero: 6 soļi (ar attēliem)

Video: Infrasarkanais lāzera tags ar Raspberry Pi Zero: 6 soļi (ar attēliem)
Video: Leap Motion SDK 2024, Jūlijs
Anonim
Infrasarkanais lāzera tags ar Raspberry Pi Zero
Infrasarkanais lāzera tags ar Raspberry Pi Zero

Šajā pamācībā tiks aprakstīts infrasarkanā lāzera tagu spēles izveides process, izmantojot bāzes servera datoru un Raspberry Pi nulli katram spēlētājam. Projekts lielā mērā balstās uz Wifi savienojumu, lai sazinātos ar serveri, kas padara Pi par lielisku kandidātu.

Šajā projektā izmantotais serveris bija vecs galddators ar Linux. Datoram nav jābūt kaut kam īpašam, un to, iespējams, pat varētu palaist no Raspberry Pi 3. Spēles laikā serverim un katram no pi nullēm jābūt savienotam ar to pašu tīklu.

1. solis: materiāli

Materiāli
Materiāli
Materiāli
Materiāli

Apraksts un dažas saites uz nepieciešamajiem materiāliem ir parādītas zemāk. Materiālu saraksts ir paredzēts 3 ieročiem.

  • Servera dators (1)
  • Raspberry Pi Zero W (3) Adafruit
  • Vismaz 4 GB SD karte (3) Amazon
  • IR LED raidītājs (3)
  • IR uztvērējs (6) Amazon
  • Sarkana gaismas diode (3)
  • Zils LED (3)
  • Zaļā gaismas diode (3)
  • Pasīvais zvana signāls (3) Amazon
  • Spiedpoga (6)
  • 16x2 LCD ekrāns ar I2C adapteri (3) Amazon
  • Pārnēsājams akumulators (3) Amazon
  • Mikro līdz parasts USB kabelis (3) Amazon
  • PN2222 tranzistors (3)
  • 100Ω rezistors (3)
  • 1kΩ rezistors (9)

Pēc izvēles:

  • Veste (3) Amazon
  • Lentes kabeļa pagarinājums (3) Amazon

Šajā projektā mēs paņēmām IR LED raidītāju no vecā lāzera marķieru pistoles komplekta, kuram ap raidītāju bija melns konuss, lai palīdzētu sašaurināt katra lielgabala šāvienu. Tomēr jebkuram vispārējam raidītājam vajadzētu strādāt.

Papildus iepriekš uzskaitītajiem priekšmetiem paši lāzera lielgabali tika izdrukāti 3D formātā. Tāpēc šim projektam būtu nepieciešama arī piekļuve 3D printerim un kvēldiegam. Kopumā trīs ieroči kopā sasniedza aptuveni 350 USD.

2. darbība: servera iestatīšana

Servera iestatīšana
Servera iestatīšana
Servera iestatīšana
Servera iestatīšana
Servera iestatīšana
Servera iestatīšana

Pirmā lieta, kas nepieciešama servera iestatīšanai, ir Mosquitto MQTT Broker Service instalēšana. Mosquitto ir pakalpojums, kas nodrošina sistēmu saziņai starp katru spēles ierīci. Tas ļauj serverim nosūtīt ziņas uz katru no pakalpojumam pievienotajiem Pis. Terminālī palaidiet šādas komandas.

sudo apt-get update

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

Dažas servera GUI tika izveidotas, izmantojot GUI dizaineru Pygubu. To var instalēt, palaižot:

pip3 instalējiet pygubu

Plašāku informāciju par pygubu var atrast vietnē

Kad MQTT un Pygubu ir instalēti, izveidojiet jaunu direktoriju un nokopējiet pievienotos failus. Katalogā jāiekļauj:

  • ltag.py
  • pregame.py
  • game_statistics.py
  • gvars.py
  • pygubu.ui
  • pygubu_limited.ui
  • mājas.png
  • self.png
  • ienaidnieki.png
  • lāzers.jpg

Piezīme. Šajā projektā izmantotie pievienotie attēli nav izstrādes komandas radīti, un tāpēc tie nepretendē uz autortiesībām.

3. darbība: Raspberry Pi iestatīšana

Raspberry Pi iestatīšana
Raspberry Pi iestatīšana

Šis solis būs jāatkārto ar katru no aveņu zivīm.

1. Instalējiet operētājsistēmu

Vispirms sāciet ar jaunu Raspbian instalēšanu. Mēs iesakām izmantot Lite versiju, jo Pi ir mazāk apstrādājams, taču jebkurai versijai vajadzētu darboties labi. Lejupielādi var atrast vietnē

2. Instalējiet MQTT

Tālāk mums jāinstalē MQTT brokera pakalpojums. Šim nolūkam mēs izmantosim Mosquitto. Terminālī palaidiet šādas komandas.

sudo apt-get update

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

Mosquitto ir pakalpojums, kas nodrošina sistēmu saziņai starp katru spēles ierīci. Tas ļauj serverim nosūtīt ziņas uz katru no pakalpojumam pievienotajiem Pis.

3. Instalējiet I2C Tools

Šī komanda instalēs bibliotēkas, kas tiek izmantotas LCD ekrānam.

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

sudo apt -get install rpi.gpio -y

Failā lcddriver.py, iespējams, būs jāmaina i2c adrese. Adresi var atrast, ievadot šādu komandu.

i2cdetect -y 1

4. Instalējiet un konfigurējiet LIRC

Izveidojiet jaunu direktoriju un lejupielādējiet pievienotos failus šajā vietā.

Lielākā daļa interneta pārlūkprogrammu nevar lejupielādēt failus bez paplašinājumiem. Lai to novērstu, divi faili tika augšupielādēti ar pagaidu paplašinājumiem. Gan "lircrc.deleteExtension", gan "modules.deleteExtension" faktiski vajadzētu būt bez paplašinājuma, un pēc veiksmīgas lejupielādes faili jāpārdēvē par "lircrc" un "moduļi".

Šis solis instalē un konfigurē pakotnes Linux infrasarkanās tālvadības pults (LIRC) atkarības. Lai iegūtu vairāk informācijas, skatiet LIRC iestatīšanas apmācību vietnē:

Vispirms instalējiet bibliotēku, pēc tam nokopējiet iekļautos failus attiecīgajos direktorijos, kā parādīts zemāk esošajās komandās. Visbeidzot, restartējiet lircd pakalpojumu.

sudo apt-get install python3-lirc -y

No jaunizveidotā direktorija izpildiet šādas komandas, lai pārvietotu konfigurācijas failus uz pareizajām vietām.

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

sudo mv moduļi /etc /

Pēc tam restartējiet lircd pakalpojumu, palaižot:

restartējiet sudo /etc/init.d/lircd

Pēc tam rediģējiet failu /boot/config.txt un pievienojiet šādu rindu

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

Pārstartējiet pi, lai izmaiņas stātos spēkā.

sudo atsāknēšana

5. Iespējojiet I2C un rediģējiet CLIENT katram spēlētājam

Tālāk mēs iespējosim I2C saskarni. To var izdarīt, izmantojot

sudo raspi-config

un I2C iespējošana izvēlnē "interfeisa opcijas".

6. Rediģēt Player CLIENT un LTSERVER

Spēļu direktorijā tagad jāiekļauj četri atlikušie faili.

  • i2c_lib.py
  • lcddriver.py
  • ltsounds.py
  • player.py

Pēdējais pi konfigurēšanas solis ir katram pi piešķirt KLIENTA numuru un pievienot servera atrašanās vietu. Tas tiek darīts, rediģējot iekļauto "player.py" failu katram pi, lai tiem visiem būtu atšķirīgs KLIENTA numurs. KLIENTA numurs ir piešķirts player.py 3. rindā. Piešķiriet pirmo pi klientam “1”, otro - “2”, bet trešo - klientam “3”.

LTSERVER līnija jāmaina uz servera IP adresi. To var atrast, ierakstot 'ifconfig | grep "inet addr" 'servera datora terminālī.

4. solis: pistoles montāža

Pistoles montāža
Pistoles montāža
Pistoles montāža
Pistoles montāža

Turpiniet savienot katru ieroci saskaņā ar iepriekš minēto shēmu un shēmu.

Katra perifērijas ierīce ir savienota ar šādām GPIO tapām Pi Zero:

  • Signāls: GPIO5
  • Aktivizētājs: GPIO26
  • Pārlādēt: GPIO12
  • IR raidītājs: GPIO25
  • IR uztvērēji: GPIO18
  • SARKANĀ LED: GPIO17
  • ZAĻA gaismas diode: GPIO27
  • ZILA gaismas diode: GPIO22
  • I2C_SDA: GPIO2
  • I2C_SCL: GPIO3

Sīkāku informāciju skatiet shēmā.

Ja vēlaties, lāzera pistoles var izdrukāt 3D formātā, izmantojot iekļautos soļu modeļu failus. Paturiet prātā, ka divi no "front1STL. STL" failiem ir jāizdrukā.

5. solis: spēle

Spēle
Spēle
Spēle
Spēle
Spēle
Spēle

Spēle tiek sākta, serverī palaižot failu "ltag.py". Kad tas ir izdarīts, katrs no spēlētājiem var izveidot savienojumu ar serveri, palaižot attiecīgo failu "player.py".

Piezīme. Pēc akumulatora bloka pievienošanas var paiet pat minūte, līdz pi tiks sāknēts.

Var būt noderīgi arī pievienot cron darbu, kas automātiski palaida failu player.py, kad pi sāk darboties. Mums bija grūti panākt, lai tas darbotos, un beigās pievienojām rindiņu "/etc/rc.local" failam katrā Pis, lai palaistu failu "player.py". Tas ļauj spēli sākt bez SSH ievadīšanas Pi's, lai palaistu atskaņotāja skriptu.

Kad spēle ir sākta, kad spēlētāji ir gatavi, parādīsies GUI, kas ļauj konfigurēt dažus spēles iestatījumus. Spēle sākas pēc pogas Sākt nospiešanas.

Pēc katras spēles parādīsies beigu GUI ar statistiku par iepriekšējo spēli, ieskaitot tagus, globālos procentus un spēles ilgumu.

Piezīme. Programmatūras bibliotēku ierobežojumu dēļ precizitātes pārskata tagu atrašanās vietas neatspoguļo faktiskos lāzera tagus. Pašreizējā versijā spēlētāja precizitātes pārskata attēls ir paredzēts tikai estētikai, cerot uz nākamo versiju ar faktisku tagu atrašanās vietas ieviešanu.

6. darbība. Turpmākie uzlabojumi

Turpmākie uzlabojumi
Turpmākie uzlabojumi
Turpmākie uzlabojumi
Turpmākie uzlabojumi

Kopumā projekts bija ļoti veiksmīgs. Pa ceļam mēs domājām par dažām papildu funkcijām, kuras varētu pievienot nākamajam izdevumam.

  • Stingrāks sprūda dizains 3D drukātajiem ieročiem
  • Tiek pabeigta nolaižamā izvēlne GUI, lai parādītu iepriekšējo spēļu statistiku
  • Vairāk infrasarkano staru uztvērēju, kurus varētu piestiprināt pie spēlētāju vestēm
  • Papildu spēles režīmi, kurus var izvēlēties Pregame GUI
  • Precīzāks tagu atrašanās vietas algoritms spēlētāju statistikas lapā

Ieteicams: