İçindekiler:
- Adım 1: Malzemeler
- Adım 2: Sunucu Kurulumu
- Adım 3: Raspberry Pi Kurulumu
- Adım 4: Tabanca Montajı
- Adım 5: Oyun Oyna
- Adım 6: Gelecekteki İyileştirmeler
Video: Raspberry Pi Zero ile Kızılötesi Lazer Etiketi: 6 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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
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
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
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ı
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
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
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:
Arduino Lazer Kızılötesi Termometre: 7 Adım (Resimli)
Arduino Lazer Kızılötesi Termometre: Bu projede size özel bir 3D baskılı muhafaza ile bir dijital lazer kızılötesi termometrenin nasıl oluşturulacağını göstereceğim
Arduino ile Canne Blanche Lazer / Lazer Beyaz Baston: 6 Adım
Arduino'lu Canne Blanche Lazer / Lazer Beyaz Baston: Uzaklık noktası düzeyinde lazer titreşimli canlı bir frekans ters çevirme. Görsel yetersizliklere yardım. Lazerli telemetre, sivri mesafeyle ters orantılı bir frekansta titrer.Görsel kusura yardım
Sahte Dinamik Fiyat Etiketi: 6 Adım (Resimlerle)
Sahte Dinamik Fiyat Etiketi: Amazon'un fiyatları sürekli değişiyor. Öğeleri alışveriş sepetinizde birkaç saatten uzun süre bırakırsanız, büyük olasılıkla dakika dalgalanmaları hakkında uyarı alırsınız - Burada 0,10 dolar, orada 2,04 dolar. Amazon ve tüccarları belli ki bir çeşit
Windows Bluetooth Sistem Analizi – Bir Sensör Etiketi Yaklaşımı: 7 Adım (Resimlerle)
Windows Bluetooth Sistem Analizi – Bir Sensör Etiketi Yaklaşımı: Aşağıda, Bluetooth Düşük Enerji cihazlarıyla iletişim açısından Windows işletim sisteminin (OS) bir analizini yapacağım - bizim durumumuzda farklı SensorTag türleri ile: Thunderboard React, Thunderboard Sense (b
Arduino Lazer Etiketi - Duino Etiketi: 11 Adım (Resimlerle)
Arduino Lazer Etiketi - Duino Etiketi: Duino etiketleyici- Genel tanıtım Duino etiketi, arduino tabanlı bir lazer etiket sistemidir. Sonunda, ofis mühimmat, ormanlık savaşlar ve banliyö için mükemmel lazer etiket sistemine sahip olana kadar ince ayar yapılabilen ve modifiye edilebilen ve hacklenebilen bir lazer etiket sistemi