Spisu treści:

Znacznik laserowy na podczerwień z Raspberry Pi Zero: 6 kroków (ze zdjęciami)
Znacznik laserowy na podczerwień z Raspberry Pi Zero: 6 kroków (ze zdjęciami)

Wideo: Znacznik laserowy na podczerwień z Raspberry Pi Zero: 6 kroków (ze zdjęciami)

Wideo: Znacznik laserowy na podczerwień z Raspberry Pi Zero: 6 kroków (ze zdjęciami)
Wideo: Skanery optyczne 2D (czujniki LiDAR) - detekcja oraz pomiar przestrzeni 2024, Lipiec
Anonim
Znacznik laserowy na podczerwień z Raspberry Pi Zero
Znacznik laserowy na podczerwień z Raspberry Pi Zero

Ten Instruktaż przejdzie przez proces tworzenia gry z tagami laserowymi na podczerwień przy użyciu podstawowego komputera serwerowego i zerowego Raspberry Pi dla każdego gracza. Projekt w dużej mierze opiera się na połączeniu Wi-Fi do komunikacji z serwerem, co czyni Pi doskonałym kandydatem.

Serwer użyty w tym projekcie był starym komputerem stacjonarnym z systemem Linux. Komputer nie musi być niczym specjalnym i prawdopodobnie mógłby być nawet uruchamiany z Raspberry Pi 3. Serwer i każdy z pi zero musi być podłączony do tej samej sieci podczas gry.

Krok 1: Materiały

Materiały
Materiały
Materiały
Materiały

Poniżej znajduje się opis i linki do potrzebnych materiałów. Poniższa lista materiałów dotyczy 3 pistoletów.

  • Komputer serwerowy (1)
  • Raspberry Pi Zero W (3) Adafruit
  • Karta SD o pojemności co najmniej 4 GB (3) Amazon
  • Nadajnik podczerwieni LED (3)
  • Odbiornik podczerwieni (6) Amazon
  • Czerwona dioda (3)
  • Niebieska dioda (3)
  • Zielona dioda (3)
  • Brzęczyk pasywny (3) Amazon
  • Przycisk (6)
  • Ekran LCD 16x2 z adapterem I2C (3) Amazon
  • Przenośny zestaw baterii (3) Amazon
  • Kabel micro-do-zwykły USB (3) Amazon
  • Tranzystor PN2222 (3)
  • Rezystor 100Ω (3)
  • Rezystor 1kΩ (9)

Przedmioty opcjonalne:

  • Kamizelka (3) Amazonka
  • Przedłużacz kabla taśmowego (3) Amazon

W tym projekcie wzięliśmy nadajnik IR LED ze starego zestawu laserowych pistoletów do znakowania, które miały czarny stożek wokół nadajnika, aby pomóc zawęzić ujęcie każdego pistoletu. Jednak każdy ogólny nadajnik powinien działać.

Oprócz wymienionych powyżej elementów, same pistolety laserowe zostały wydrukowane w 3D. Ten projekt wymagałby zatem również dostępu do drukarki 3D i filamentu. Ogólnie rzecz biorąc, za trzy pistolety suma wyniosła około 350 USD.

Krok 2: Konfiguracja serwera

Konfiguracja serwera
Konfiguracja serwera
Konfiguracja serwera
Konfiguracja serwera
Konfiguracja serwera
Konfiguracja serwera

Pierwszą rzeczą potrzebną do skonfigurowania serwera jest zainstalowanie usługi Mosquitto MQTT Broker Service. Mosquitto to usługa, która zapewnia ramy do komunikacji między każdym z urządzeń w grze. Pozwala to serwerowi na wysyłanie wiadomości do każdego z Pis podłączonych do usługi. W terminalu uruchom następujące polecenia.

aktualizacja sudo apt-get

sudo apt-get uaktualnienie sudo apt-get zainstaluj mosquitto -y sudo apt-get zainstaluj python3-pip -y sudo pip3 zainstaluj paho-mqtt

Niektóre GUI dla serwera zostały stworzone przy użyciu projektanta GUI o nazwie Pygubu. Można to zainstalować, uruchamiając:

pip3 zainstaluj pygubu

Więcej informacji na temat pygubu można znaleźć na

Po zainstalowaniu MQTT i Pygubu utwórz nowy katalog i skopiuj załączone pliki. Katalog powinien zawierać:

  • ltag.py
  • pregame.py
  • statystyki_gry.py
  • gvars.py
  • pygubu.ui
  • pygubu_limited.ui
  • strona główna.png
  • własna.png
  • wrogowie.png
  • laser.jpg

Uwaga: załączone obrazy użyte w tym projekcie nie zostały stworzone przez zespół programistów i dlatego nie roszczą sobie prawa do autorstwa.

Krok 3: Konfiguracja Raspberry Pi

Konfiguracja Raspberry Pi
Konfiguracja Raspberry Pi

Ten krok będzie musiał zostać powtórzony na każdym Raspberry Pis.

1. Zainstaluj system operacyjny

Najpierw zacznij od nowej instalacji Raspbian. Zalecamy używanie wersji Lite, ponieważ Pi jest mniej do obsługi, ale każda wersja powinna działać dobrze. Pobieranie można znaleźć na

2. Zainstaluj MQTT

Następnie musimy zainstalować usługę brokera MQTT. W tym celu użyjemy Mosquitto. W terminalu uruchom następujące polecenia.

aktualizacja sudo apt-get

sudo apt-get uaktualnienie sudo apt-get zainstaluj mosquitto -y sudo apt-get zainstaluj python3-pip -y sudo pip3 zainstaluj paho-mqtt

Mosquitto to usługa, która zapewnia ramy do komunikacji między każdym z urządzeń w grze. Pozwala to serwerowi na wysyłanie wiadomości do każdego z Pis podłączonych do usługi.

3. Zainstaluj narzędzia I2C

Następujące polecenie zainstaluje biblioteki używane na ekranie LCD.

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

sudo apt-get zainstaluj rpi.gpio -y

Adres i2c może wymagać zmiany w pliku lcddriver.py. Adres można znaleźć, wpisując następujące polecenie.

i2cdetect -y 1

4. Zainstaluj i skonfiguruj LIRC

Utwórz nowy katalog i pobierz załączone pliki do tej lokalizacji.

Większość przeglądarek internetowych nie pobiera plików bez rozszerzeń. Aby obejść ten problem, dwa pliki zostały przesłane z tymczasowymi rozszerzeniami. Zarówno "lircrc.deleteExtension" jak i "modules.deleteExtension" powinny w rzeczywistości być bez rozszerzeń, a nazwy plików powinny zostać zmienione na "lircrc" i "modules" po pomyślnym pobraniu.

Ten krok instaluje i konfiguruje zależności dla pakietu Linux Infrared Remote Control (LIRC). Aby uzyskać więcej informacji, zobacz samouczek dotyczący konfiguracji LIRC pod adresem:

Najpierw zainstaluj bibliotekę, a następnie skopiuj dołączone pliki do odpowiednich katalogów, jak pokazano w poniższych poleceniach. Na koniec uruchom ponownie usługę lircd.

sudo apt-get zainstaluj python3-lirc -y

Z nowo utworzonego katalogu wykonaj następujące polecenia, aby przenieść pliki konfiguracyjne do ich właściwych lokalizacji.

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

moduły sudo mv /etc/

Następnie uruchom ponownie usługę lircd, uruchamiając:

ponowne uruchomienie sudo /etc/init.d/lircd

Następnie edytuj plik /boot/config.txt i dodaj następującą linię

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

Zrestartuj swoje pi, aby zmiany zaczęły obowiązywać.

ponowne uruchomienie sudo

5. Włącz I2C i edytuj KLIENTA dla każdego gracza

Następnie włączymy interfejs I2C. Można to zrobić za pomocą

sudo raspi-config

i włączenie I2C w menu "opcje interfejsu".

6. Edytuj Player CLIENT i LTSERVER

Katalog gry powinien teraz zawierać cztery pozostałe pliki.

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

Ostatnim krokiem w konfiguracji pi jest przypisanie każdemu pi numeru KLIENTA i dodanie lokalizacji serwera. Odbywa się to poprzez edycję dołączonego pliku "player.py" dla każdego pi, tak aby wszystkie miały inny numer KLIENTA. Numer KLIENTA przypisany jest w linii 3 player.py. Przypisz pierwsze pi do klienta „1”, drugie do „2”, a trzecie do klienta „3”.

Wiersz LTSERVER należy zmienić na adres IP serwera. Można to znaleźć, wpisując „ifconfig | grep "inet addr" ' w terminalu komputera serwera.

Krok 4: Montaż pistoletu

Zespół pistoletu
Zespół pistoletu
Zespół pistoletu
Zespół pistoletu

Przejdź do okablowania każdego z pistoletów zgodnie ze schematem elektrycznym i schematem powyżej.

Każde z urządzeń peryferyjnych jest podłączone do następujących pinów GPIO w Pi Zero:

  • Brzęczyk: GPIO5
  • Wyzwalacz: GPIO26
  • Przeładuj: GPIO12
  • Nadajnik podczerwieni: GPIO25
  • Odbiorniki podczerwieni: GPIO18
  • CZERWONA DIODA: GPIO17
  • ZIELONA DIODA: GPIO27
  • NIEBIESKA DIODA: GPIO22
  • I2C_SDA: GPIO2
  • I2C_SCL: GPIO3

Zobacz schemat po więcej szczegółów.

W razie potrzeby pistolety laserowe można drukować w 3D za pomocą dołączonych plików modeli kroków. Należy pamiętać, że należy wydrukować dwa pliki „front1STL. STL”.

Krok 5: Rozgrywka

Rozgrywka
Rozgrywka
Rozgrywka
Rozgrywka
Rozgrywka
Rozgrywka

Grę uruchamiamy uruchamiając na serwerze plik "ltag.py". Po wykonaniu tej czynności każdy z graczy może połączyć się z serwerem, uruchamiając odpowiedni plik "player.py".

Uwaga: Po podłączeniu akumulatora, uruchomienie pi może zająć nawet minutę.

Przydatne może być również dodanie zadania cron, które automatycznie uruchamia plik player.py po uruchomieniu pi. Ciężko nam było, aby to zadziałało i skończyło się na dodaniu linii do pliku "/etc/rc.local" na każdym z Pis, aby uruchomić plik "player.py". Pozwala to na uruchomienie gry bez konieczności logowania się do Pi w celu uruchomienia skryptu gracza.

Gdy gra zostanie uruchomiona z gotowymi graczami, pojawi się GUI, które pozwala skonfigurować kilka ustawień gry. Gra rozpoczyna się po naciśnięciu przycisku Start.

Po każdej grze pojawi się kończący się GUI ze statystykami dotyczącymi poprzedniej gry, w tym tagami, globalnymi wartościami procentowymi i czasem trwania gry.

Uwaga: Ze względu na ograniczenia w bibliotekach oprogramowania lokalizacje znaczników raportu dokładności nie są reprezentatywne dla rzeczywistych znaczników laserowych. W obecnej wersji obraz raportu dokładności gracza służy wyłącznie estetyce w nadziei, że przyszła wersja z rzeczywistą implementacją lokalizacji tagów.

Krok 6: Przyszłe ulepszenia

Przyszłe ulepszenia
Przyszłe ulepszenia
Przyszłe ulepszenia
Przyszłe ulepszenia

Ogólnie rzecz biorąc, projekt odniósł duży sukces. Po drodze pomyśleliśmy o kilku dodatkowych funkcjach, które mogą zostać dodane do przyszłej edycji.

  • Solidniejsza konstrukcja spustu do pistoletów drukowanych w 3D
  • Końcowe menu rozwijane GUI do wyświetlania statystyk z poprzednich gier
  • Więcej odbiorników podczerwieni, które można przymocować do kamizelek graczy
  • Dodatkowe tryby gry, które można wybrać w GUI przed grą
  • Dokładniejszy algorytm lokalizacji tagów na stronie statystyk graczy

Zalecana: