İçindekiler:

Raspberry Pi Zero ile Kızılötesi Lazer Etiketi: 6 Adım (Resimlerle)
Raspberry Pi Zero ile Kızılötesi Lazer Etiketi: 6 Adım (Resimlerle)

Video: Raspberry Pi Zero ile Kızılötesi Lazer Etiketi: 6 Adım (Resimlerle)

Video: Raspberry Pi Zero ile Kızılötesi Lazer Etiketi: 6 Adım (Resimlerle)
Video: ROS and SONARS for OBSTACLE AVOIDANCE | Tutorial #6 | ROS and Raspberry Pi 2024, Kasım
Anonim
Raspberry Pi Zero ile Kızılötesi Lazer Etiketi
Raspberry Pi Zero ile Kızılötesi Lazer Etiketi

Bu Eğitilebilir Tablo, bir temel sunucu bilgisayarı ve her oyuncu için bir Raspberry Pi sıfır kullanarak bir Kızılötesi Lazer Etiketi oyunu oluşturma sürecini anlatacaktır. Proje, Pi'yi harika bir aday yapan sunucuyla iletişim kurmak için büyük ölçüde bir Wifi bağlantısına güveniyor.

Bu projede kullanılan sunucu, Linux'lu eski bir masaüstü bilgisayardı. Bilgisayarın özel bir şey olması gerekmez ve muhtemelen bir Raspberry Pi 3'ten çalıştırılabilir. Sunucu ve pi sıfırlarının her biri oyun sırasında aynı ağa bağlı olmalıdır.

Adım 1: Malzemeler

Malzemeler
Malzemeler
Malzemeler
Malzemeler

Gerekli malzemeler için açıklama ve bazı bağlantılar aşağıda gösterilmiştir. Aşağıdaki malzeme listesi 3 tabanca içindir.

  • Sunucu Bilgisayar (1)
  • Raspberry Pi Zero W (3) Adafruit
  • En az 4 GB SD Kart (3) Amazon
  • IR LED Verici (3)
  • IR Alıcı (6) Amazon
  • Kırmızı LED (3)
  • Mavi LED (3)
  • Yeşil LED (3)
  • Pasif Buzzer (3) Amazon
  • Basma Düğmesi (6)
  • I2C Adaptörlü LCD 16x2 Ekran (3) Amazon
  • Taşınabilir Pil Paketi (3) Amazon
  • Mikro - Normal USB Kablosu (3) Amazon
  • PN2222 Transistör (3)
  • 100Ω Direnç (3)
  • 1kΩ Direnç (9)

Isteğe bağlı öğeler:

  • Yelek (3) Amazon
  • Şerit Kablo uzatması (3) Amazon

Bu projede, her bir silahın atış alanını daraltmaya yardımcı olmak için vericinin etrafında siyah bir koni bulunan eski bir lazer etiket tabancası setinden IR LED Vericiyi aldık. Ancak, herhangi bir genel verici çalışmalıdır.

Yukarıda listelenen öğelere ek olarak, lazer silahlarının kendileri de 3D olarak basıldı. Dolayısıyla bu proje ayrıca bir 3D yazıcıya ve filamana erişim gerektirecektir. Genel olarak, üç silah için toplam yaklaşık 350 $ 'a ulaştı.

Adım 2: Sunucu Kurulumu

Sunucu Kurulumu
Sunucu Kurulumu
Sunucu Kurulumu
Sunucu Kurulumu
Sunucu Kurulumu
Sunucu Kurulumu

Sunucuyu kurmak için gereken ilk şey Mosquitto MQTT Broker Hizmetini kurmaktır. Mosquitto, oyundaki cihazların her biri arasında iletişim için bir çerçeve sağlayan hizmettir. Bu, sunucunun hizmete bağlı Pis'lerin her birine mesaj göndermesini sağlar. Terminalde aşağıdaki komutları çalıştırın.

sudo apt-get güncellemesi

sudo apt-get yükseltmesi sudo apt-get kurulumu mosquitto -y sudo apt-get kurulumu python3-pip -y sudo pip3 kurulumu paho-mqtt

Sunucu için bazı GUI'ler, Pygubu adlı bir GUI tasarımcısı kullanılarak oluşturulmuştur. Bu çalıştırılarak yüklenebilir:

pip3 pygubu'yu kurun

Pygubu hakkında daha fazla bilgiyi https://github.com/alejandroautalan/pygubu adresinde bulabilirsiniz.

MQTT ve Pygubu kurulduktan sonra yeni bir dizin oluşturun ve ekli dosyaları kopyalayın. Dizin şunları içermelidir:

  • ltag.py
  • oyun öncesi.py
  • game_statistics.py
  • gvars.py
  • pygubu.ui
  • pygubu_limited.ui
  • ev.png
  • self.png
  • düşmanlar.png
  • lazer.jpg

Not: Bu projede kullanılan ekli resimler geliştirme ekibi tarafından oluşturulmamıştır ve bu nedenle yazarlık iddiasında bulunmaz.

Adım 3: Raspberry Pi Kurulumu

Raspberry Pi Kurulumu
Raspberry Pi Kurulumu

Bu adımın Raspberry Pis'in her birinde tekrarlanması gerekecektir.

1. İşletim Sistemini Kurun

İlk olarak, yeni bir Raspbian kurulumuyla başlayın. Pi'nin kullanması daha az olduğu için Lite sürümünü kullanmanızı öneririz, ancak her iki sürüm de iyi çalışmalıdır. İndirme https://www.raspberrypi.org/downloads/raspbian/ adresinde bulunabilir.

2. MQTT'yi yükleyin

Daha sonra MQTT broker hizmetini kurmamız gerekiyor. Bunun için Mosquitto'yu kullanacağız. Terminalde aşağıdaki komutları çalıştırın.

sudo apt-get güncellemesi

sudo apt-get yükseltmesi sudo apt-get kurulumu mosquitto -y sudo apt-get kurulumu python3-pip -y sudo pip3 kurulumu paho-mqtt

Sivrisinek, oyundaki cihazların her biri arasında iletişim için bir çerçeve sağlayan hizmettir. Bu, sunucunun hizmete bağlı Pis'lerin her birine mesaj göndermesini sağlar.

3. I2C Araçlarını Kurun

Aşağıdaki komut, LCD ekran için kullanılan kitaplıkları kuracaktır.

sudo apt-get install -y python3-smbus i2c araçları

sudo apt-get install rpi.gpio -y

i2c adresinin lcddriver.py dosyasında değiştirilmesi gerekebilir. Adres, aşağıdaki komutu girerek bulunabilir.

i2cdetect -y 1

4. LIRC'yi kurun ve yapılandırın

Yeni bir dizin oluşturun ve ekli dosyaları bu konuma indirin.

Çoğu İnternet tarayıcısı, uzantıları olmayan dosyaları indirmez. Bunu aşmak için, dosyalardan ikisi geçici uzantılarla yüklendi. Hem "lircrc.deleteExtension" hem de "modules.deleteExtension" aslında uzantısız olmalıdır ve dosyalar başarıyla indirildikten sonra "lircrc" ve "modules" olarak yeniden adlandırılmalıdır.

Bu adım, Linux Kızılötesi Uzaktan Kumanda (LIRC) paketinin bağımlılıklarını kurar ve yapılandırır. Daha fazla bilgi için şu adresteki LIRC kurulumuna ilişkin eğiticiye bakın:

Önce kütüphaneyi kurun, ardından dahil edilen dosyaları aşağıdaki komutlarda gösterildiği gibi ilgili dizinlerine kopyalayın. Son olarak, lircd hizmetini yeniden başlatın.

sudo apt-get install python3-lirc -y

Yeni oluşturulan dizinden, yapılandırma dosyalarını doğru konumlarına taşımak için aşağıdaki komutları yürütün.

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

sudo mv modülleri /etc/

Ardından, aşağıdakileri çalıştırarak lircd hizmetini yeniden başlatın:

sudo /etc/init.d/lircd yeniden başlatma

Ardından, /boot/config.txt dosyasını düzenleyin ve aşağıdaki satırı ekleyin

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

Değişikliklerin etkili olmasına izin vermek için pi'nizi yeniden başlatın.

sudo yeniden başlatma

5. Her oyuncu için I2C'yi etkinleştirin ve MÜŞTERİ'yi düzenleyin

Ardından, I2C arayüzünü etkinleştireceğiz. Bu kullanılarak yapılabilir

sudo raspi yapılandırması

ve "arayüz seçenekleri" menüsünde I2C'nin etkinleştirilmesi.

6. Player CLIENT ve LTSERVER'ı düzenleyin

Oyun dizini artık kalan dört dosyayı içermelidir.

  • i2c_lib.py
  • lcddriver.py
  • ltsounds.py
  • oyuncu.py

Pi'yi yapılandırmanın son adımı, her bir pi'ye bir MÜŞTERİ numarası atamak ve sunucunun konumunu eklemektir. Bu, her bir pi için dahil edilen "player.py" dosyasını düzenleyerek, hepsinin farklı bir MÜŞTERİ numarasına sahip olmasıyla yapılır. MÜŞTERİ numarası player.py'nin 3. satırında atanır. İlk pi'yi istemci "1", ikincisini "2" ve üçüncü pi'yi istemci "3" olarak atayın.

LTSERVER satırı, sunucunun IP adresi olarak değiştirilmelidir. Bu, 'ifconfig | grep "inet addr" ' sunucu bilgisayarın terminalinde.

Adım 4: Tabanca Montajı

Silah Meclisi
Silah Meclisi
Silah Meclisi
Silah Meclisi

Tabancaların her birini yukarıdaki bağlantı şemasına ve şemaya göre kablolamaya devam edin.

Çevre birimlerinin her biri Pi Zero üzerindeki aşağıdaki GPIO pinlerine bağlıdır:

  • Zil: GPIO5
  • Tetikleyici: GPIO26
  • Yeniden Yükle: GPIO12
  • IR Verici: GPIO25
  • IR Alıcıları: GPIO18
  • KIRMIZI LED: GPIO17
  • YEŞİL LED: GPIO27
  • MAVİ LED: GPIO22
  • I2C_SDA: GPIO2
  • I2C_SCL: GPIO3

Daha fazla ayrıntı için şemaya bakın.

İstenirse lazer tabancaları, dahil edilen adım model dosyaları kullanılarak 3D yazdırılabilir. "front1STL. STL" dosyalarından ikisinin yazdırılması gerektiğini unutmayın.

Adım 5: Oyun Oyna

Oynanış
Oynanış
Oynanış
Oynanış
Oynanış
Oynanış

Sunucuda "ltag.py" dosyası çalıştırılarak oyun başlatılır. Bu yapıldıktan sonra, oyuncuların her biri kendi "player.py" dosyasını çalıştırarak sunucuya bağlanabilir.

Not: Pil takımını taktıktan sonra pi'nin açılması bir dakika kadar sürebilir.

Pi başladığında player.py dosyasını otomatik olarak çalıştıran bir cron işi eklemek de faydalı olabilir. Bunu çalıştırmakta zorlandık ve "player.py" dosyasını çalıştırmak için her Pis'deki "/etc/rc.local" dosyasına bir satır ekledik. Bu, oyuncu komut dosyasını çalıştırmak için Pi'lere SSH yapmak zorunda kalmadan oyunun başlatılmasını sağlar.

Oyun, oyuncular hazır olarak başlatıldığında, oyun ayarlarından birkaçının yapılandırılmasına izin veren bir GUI görünecektir. Oyun Başlat düğmesine basıldıktan sonra başlar.

Her oyundan sonra, etiketler, genel yüzdeler ve oyun süresi dahil olmak üzere önceki oyunla ilgili istatistiklerin yer aldığı bir bitiş GUI'si görünecektir.

Not: Yazılım kitaplıklarındaki sınırlamalar nedeniyle, doğruluk raporu etiketi konumları gerçek lazer etiketlerini temsil etmez. Mevcut sürümde, Oynatıcı Doğruluk Raporu görüntüsü, gerçek etiket konumu uygulamasına sahip gelecekteki bir sürümün umuduyla tamamen estetik amaçlıdır.

Adım 6: Gelecekteki İyileştirmeler

Gelecekteki İyileştirmeler
Gelecekteki İyileştirmeler
Gelecekteki İyileştirmeler
Gelecekteki İyileştirmeler

Genel olarak, proje büyük bir başarıydı. Bu arada, gelecekteki bir sürüme eklenebilecek birkaç ek özellik düşündük.

  • 3D baskılı silahlar için daha sağlam tetik tasarımı
  • Geçmiş oyunlardan istatistikleri görüntülemek için GUI açılır menüsünü sonlandırıyor
  • Oyuncuların yeleklerine takılabilen daha fazla Kızılötesi alıcı
  • Pregame GUI'de seçilebilen ek oyun modları
  • Oyuncu istatistikleri sayfasında daha doğru etiket konumu algoritması

Önerilen: