회로

적외선 레이저 태그와 라즈베리 파이 제로 : 6 단계 (그림 포함)

아폴론 징글벨락

아폴론 징글벨락

차례:

Anonim

이 Instructable은 기본 서버 컴퓨터와 각 플레이어의 라즈베리 파이 제로를 사용하여 적외선 레이저 태그 게임을 만드는 과정을 안내합니다. 이 프로젝트는 Wifi 연결에 크게 의존하여 서버와 통신하여 Pi를 훌륭한 후보로 만듭니다.

이 프로젝트에서 사용 된 서버는 Linux가있는 오래된 데스크탑 컴퓨터였습니다. 컴퓨터는 특별한 것이 필요하지 않으며, 아마도 라즈베리 파이 3 (Raspberry Pi 3)에서 실행될 수도 있습니다. 서버와 파이 제로 (pi zero)는 게임 플레이 중에 동일한 네트워크에 연결되어야합니다.

용품:

1 단계 : 자료

필요한 자료에 대한 설명과 링크가 아래에 나와 있습니다. 아래의 재료 목록은 총 3 개입니다.

  • 서버 컴퓨터 (1)
  • 라스베리 파이 제로 W (3) Adafruit
  • 적어도 4GB SD 카드 (3) 아마존
  • 적외선 LED 송신기 (3)
  • IR 수신기 (6) 아마존
  • 빨간색 LED (3)
  • 파란색 LED (3)
  • 녹색 LED (3)
  • 수동 버저 (3) 아마존
  • 푸시 버튼 (6)
  • I2C 어댑터가있는 LCD 16x2 화면 (3) Amazon
  • 휴대용 배터리 팩 (3) 아마존
  • 마이크로에서 일반 USB 케이블 (3) 아마존
  • PN2222 트랜지스터 (3)
  • 100Ω 저항기 (3)
  • 1kΩ 저항기 (9)

옵션 품목 :

  • 조끼 (3) 아마존
  • 리본 케이블 연장 (3) 아마존

이 프로젝트에서 송신기 주위에 검은 색 원뿔이있는 레이저 태그 총의 오래된 세트에서 IR LED 송신기를 가져와 각 총의 발사 범위를 좁히는 작업을 마무리했습니다. 그러나 모든 일반 송신기가 작동해야합니다.

위에 나열된 항목 외에도 레이저 총 자체가 3D로 인쇄되었습니다. 따라서이 프로젝트는 3D 프린터 및 필라멘트에 대한 액세스가 필요합니다. 전반적으로 총 3 개에 총 350 달러가 들었습니다.

2 단계 : 서버 설정

서버를 설정하는 데 필요한 첫 번째 작업은 Mosquitto MQTT Broker Service를 설치하는 것입니다. Mosquitto는 게임에서 각 장치 간의 통신을위한 프레임 워크를 제공하는 서비스입니다. 이렇게하면 서버가 서비스에 연결된 각 Pis에 메시지를 보낼 수 있습니다. 터미널에서 다음 명령을 실행하십시오.

sudo apt-get update sudo apt-get 업그레이드 sudo apt-get install 모스키토 -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt

서버용 GUI 중 일부는 Pygubu라는 GUI 디자이너를 사용하여 만들었습니다. 다음을 실행하여 설치할 수 있습니다.

pip3 설치 pygubu

pygubu에 대한 자세한 내용은 http://github.com/alejandroautalan/pygubu에서 확인할 수 있습니다.

MQTT와 Pygubu가 설치되면, 새로운 디렉토리를 작성하고 첨부 파일을 복사하십시오. 디렉토리에는 다음이 포함되어야합니다.

  • ltag.py
  • pregame.py
  • game_statistics.py
  • gvars.py
  • 피구 .ui
  • pygubu_limited.ui
  • home.png
  • self.png
  • enemies.png
  • laser.jpg

참고 :이 프로젝트에서 사용 된 첨부 된 이미지는 개발 팀이 만들지 않았으므로 저자가 아닙니다.

3 단계 : 라즈베리 파이 설정

이 단계는 각각의 Raspberry Pis에서 반복해야합니다.


1. 운영 체제 설치

먼저 Raspbian을 새로 설치하십시오. 우리는 Lite 버전을 사용하는 것이 Pi가 처리하기는 적기 때문에 권장하지만 두 버전 모두 정상적으로 작동합니다. 다운로드는 http://www.raspberrypi.org/downloads/raspbian/에서 확인할 수 있습니다.


2. MQTT 설치

다음으로 MQTT 중개인 서비스를 설치해야한다. 우리는 Mosquitto를 사용합니다. 터미널에서 다음 명령을 실행하십시오.

sudo apt-get update sudo apt-get 업그레이드 sudo apt-get install 모스키토 -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt

Mosquitto는 게임에서 각 장치 간의 통신을위한 프레임 워크를 제공하는 서비스입니다. 이렇게하면 서버가 서비스에 연결된 각 Pis에 메시지를 보낼 수 있습니다.


3. I2C 도구 설치

다음 명령은 LCD 화면에 사용되는 라이브러리를 설치합니다.

sudo apt-get install -y python3-smbus i2c-tools sudo apt-get install rpi.gpio -y

i2c 주소는 lcddriver.py 파일에서 변경해야 할 수도 있습니다. 주소는 다음 명령을 입력하여 찾을 수 있습니다.

i2cdetect -y 1


4. LIRC 설치 및 구성

새 디렉토리를 만들고이 위치에 첨부 ​​된 파일을 다운로드하십시오.

대부분의 인터넷 브라우저는 확장명없이 파일을 다운로드하지 않습니다. 이 문제를 해결하기 위해 두 개의 파일이 임시 확장자로 업로드되었습니다. "lircrc.deleteExtension"및 "modules.deleteExtension"은 실제로 확장자가 적어야하며 파일을 성공적으로 다운로드 한 후에 파일의 이름을 "lircrc"및 "modules"로 변경해야합니다.

이 단계에서는 Linux 적외선 원격 제어 (LIRC) 패키지의 종속성을 설치하고 구성합니다. 자세한 내용은 LIRC 설정에 대한 자습서를 참조하십시오. http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/

먼저 라이브러리를 설치 한 다음 아래 명령에 표시된대로 포함 된 파일을 각각의 디렉토리에 복사하십시오. 마지막으로 lircd 서비스를 다시 시작하십시오.

sudo apt-get install python3-lirc -y

새로 생성 된 디렉토리에서 다음 명령을 실행하여 구성 파일을 올바른 위치로 이동합니다.

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

그런 다음 다음을 실행하여 lircd 서비스를 다시 시작하십시오.

sudo /etc/init.d/lircd restart

다음으로 /boot/config.txt 파일을 편집하고 다음 행을 추가하십시오

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

변경 사항을 적용하려면 파이를 재부트하십시오.

sudo 재부팅


5. 각 플레이어에 대해 I2C를 활성화하고 CLIENT를 편집하십시오.

다음으로 I2C 인터페이스를 활성화 할 것입니다. 이것은 다음을 사용하여 수행 할 수 있습니다.

sudo raspi-config

"인터페이스 옵션"메뉴에서 I2C를 활성화합니다.


6. 플레이어 CLIENT 및 LTSERVER 편집

이제 게임 디렉토리에 4 개의 나머지 파일이 포함됩니다.

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

pi 구성의 마지막 단계는 각 pi에 CLIENT 번호를 지정하고 서버 위치를 추가하는 것입니다. 이 작업은 각 pi에 대해 포함 된 "player.py"파일을 편집하여 모든 클라이언트 번호를 갖도록합니다. CLIENT 번호는 player.py의 3 번 줄에 지정됩니다. 첫 번째 파이를 클라이언트 "1", 두 번째 파이를 "2", 세 번째 파이를 클라이언트 "3"으로 지정하십시오.

LTSERVER 행은 서버의 IP 주소로 변경되어야합니다. 이것은 'ifconfig | grep "inet addr"을 서버 컴퓨터의 터미널에 설치하십시오.

4 단계 : 총 어셈블리

위의 배선도 및 회로도에 따라 각 건을 계속 배선하십시오.

각 주변 장치는 Pi Zero의 다음 GPIO 핀에 연결됩니다.

  • 버저 : GPIO5
  • 방아쇠 : GPIO26
  • 다시로드 : GPIO12
  • IR 송신기 : GPIO25
  • IR 수신기 : GPIO18
  • RED LED : GPIO17
  • 녹색 LED : GPIO27
  • 파란색 LED : GPIO22
  • I2C_SDA : GPIO2
  • I2C_SCL : GPIO3

자세한 내용은 회로도를 참조하십시오.

필요한 경우 레이저 건은 포함 된 단계 모델 파일을 사용하여 3D 인쇄 할 수 있습니다. "front1STL.STL"파일 중 두 개를 인쇄해야합니다.

5 단계 : 게임 플레이

게임은 서버에서 "ltag.py"파일을 실행하여 시작됩니다. 이 작업이 끝나면 각 플레이어는 해당 "player.py"파일을 실행하여 서버에 연결할 수 있습니다.

참고 : 배터리 팩을 연결하면 파이가 부팅되는 데 최대 1 분이 걸릴 수 있습니다.

pi가 시작되면 자동으로 player.py 파일을 실행하는 cron 작업을 추가하는 것도 유용 할 수 있습니다. 이 작업을 진행하는 데 어려움을 겪었으며 각 Pis의 "/etc/rc.local"파일에 "player.py"파일을 실행하는 행을 추가했습니다. 이렇게하면 Pi를 플레이어 스크립트로 실행하기 위해 SSH를 수행하지 않고도 게임을 시작할 수 있습니다.

플레이어가 준비가 된 상태에서 게임을 시작하면 몇 가지 게임 설정을 구성 할 수있는 GUI가 나타납니다. 시작 단추를 누르면 게임이 시작됩니다.

각 게임이 끝나면 태그, 글로벌 퍼센티지 및 게임 기간을 포함하여 이전 게임에 대한 통계가있는 종료 GUI가 나타납니다.

참고 : 소프트웨어 라이브러리의 한계로 인해 정확성 보고서 태그 위치는 실제 레이저 태그를 나타내지 않습니다. 현재 버전에서 플레이어 정확성 보고서 이미지는 실제 태그 위치 구현을 사용하여 향후 버전을 기대하는 순수한 미학을위한 이미지입니다.

6 단계 : 향후 개선 사항

전반적으로이 프로젝트는 큰 성공을 거두었습니다. 그 과정에서 우리는 향후 버전에 추가 될 수있는 몇 가지 추가 기능을 고려했습니다.

  • 3D 인쇄 건을위한보다 견고한 방아쇠 디자인
  • 과거 게임의 통계를 표시하는 GUI 드롭 다운 메뉴 종료
  • 플레이어의 조끼에 부착 될 수있는 적외선 수신기가 많음
  • Pregame GUI에서 선택할 수있는 추가 게임 모드
  • 선수 통계 페이지에서보다 정확한 태그 위치 알고리즘