สารบัญ:

แท็กเลเซอร์อินฟราเรดพร้อม Raspberry Pi Zero: 6 ขั้นตอน (พร้อมรูปภาพ)
แท็กเลเซอร์อินฟราเรดพร้อม Raspberry Pi Zero: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: แท็กเลเซอร์อินฟราเรดพร้อม Raspberry Pi Zero: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: แท็กเลเซอร์อินฟราเรดพร้อม Raspberry Pi Zero: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: LunchBot 9000 (IoT, Raspberry Pi, Python, Twitter, 3D Printing, IR Motion Sensing) 2024, กรกฎาคม
Anonim
แท็กเลเซอร์อินฟราเรดพร้อม Raspberry Pi Zero
แท็กเลเซอร์อินฟราเรดพร้อม Raspberry Pi Zero

คำแนะนำนี้จะอธิบายขั้นตอนการสร้างเกม Infrared Laser Tag โดยใช้คอมพิวเตอร์เซิร์ฟเวอร์พื้นฐานและ Raspberry Pi Zero สำหรับผู้เล่นแต่ละคน โปรเจ็กต์นี้อาศัยการเชื่อมต่อ Wifi เป็นหลักในการสื่อสารกับเซิร์ฟเวอร์ ซึ่งทำให้ Pi เป็นตัวเลือกที่ยอดเยี่ยม

เซิร์ฟเวอร์ที่ใช้ในโปรเจ็กต์นี้คือคอมพิวเตอร์เดสก์ท็อปรุ่นเก่าที่ใช้ลินุกซ์ คอมพิวเตอร์ไม่จำเป็นต้องมีอะไรพิเศษและอาจเรียกใช้จาก Raspberry Pi 3 ได้ เซิร์ฟเวอร์และ pi zero แต่ละตัวจะต้องเชื่อมต่อกับเครือข่ายเดียวกันระหว่างการเล่นเกม

ขั้นตอนที่ 1: วัสดุ

วัสดุ
วัสดุ
วัสดุ
วัสดุ

คำอธิบายและลิงก์บางส่วนสำหรับวัสดุที่จำเป็นแสดงอยู่ด้านล่าง รายการวัสดุด้านล่างสำหรับปืน 3 กระบอก

  • เซิร์ฟเวอร์คอมพิวเตอร์ (1)
  • Raspberry Pi Zero W (3) Adafruit
  • การ์ด SD อย่างน้อย 4GB (3) Amazon
  • เครื่องส่งสัญญาณ IR LED (3)
  • ตัวรับสัญญาณ IR (6) Amazon
  • ไฟ LED สีแดง (3)
  • ไฟ LED สีฟ้า (3)
  • ไฟ LED สีเขียว (3)
  • Buzzer แบบพาสซีฟ (3) Amazon
  • ปุ่มกด (6)
  • หน้าจอ LCD 16x2 พร้อมอะแดปเตอร์ I2C (3) Amazon
  • ชุดแบตเตอรี่แบบพกพา (3) Amazon
  • สาย Micro เป็น USB ปกติ (3) Amazon
  • PN2222 ทรานซิสเตอร์ (3)
  • ตัวต้านทาน 100Ω (3)
  • ตัวต้านทาน 1kΩ (9)

รายการเสริม:

  • เสื้อกั๊ก (3) อเมซอน
  • สายริบบิ้นต่อ (3) Amazon

ในโครงการนี้ เราลงเอยด้วยการนำ IR LED Transmitter จากปืนเลเซอร์แท็กชุดเก่าที่มีกรวยสีดำล้อมรอบตัวส่งสัญญาณ เพื่อช่วยจำกัดขอบเขตการยิงของปืนแต่ละกระบอก อย่างไรก็ตาม เครื่องส่งทั่วไปใดๆ ควรใช้งานได้

นอกเหนือจากรายการข้างต้นแล้ว ปืนเลเซอร์ยังพิมพ์ 3 มิติอีกด้วย โครงการนี้จึงจำเป็นต้องมีการเข้าถึงเครื่องพิมพ์ 3 มิติและเส้นใย โดยรวมแล้ว สำหรับปืนสามกระบอก มูลค่ารวมอยู่ที่ประมาณ 350 ดอลลาร์

ขั้นตอนที่ 2: การตั้งค่าเซิร์ฟเวอร์

การตั้งค่าเซิร์ฟเวอร์
การตั้งค่าเซิร์ฟเวอร์
การตั้งค่าเซิร์ฟเวอร์
การตั้งค่าเซิร์ฟเวอร์
การตั้งค่าเซิร์ฟเวอร์
การตั้งค่าเซิร์ฟเวอร์

สิ่งแรกที่จำเป็นในการตั้งค่าเซิร์ฟเวอร์คือการติดตั้ง Mosquitto MQTT Broker Service Mosquitto เป็นบริการที่ให้กรอบสำหรับการสื่อสารระหว่างอุปกรณ์แต่ละตัวในเกม ซึ่งช่วยให้เซิร์ฟเวอร์สามารถส่งข้อความไปยัง Pis แต่ละตัวที่เชื่อมต่อกับบริการได้ ในเทอร์มินัล ให้รันคำสั่งต่อไปนี้

sudo apt-get update

sudo apt-get อัปเกรด sudo apt-get ติดตั้ง mosquitto -y sudo apt-get ติดตั้ง python3-pip -y sudo pip3 ติดตั้ง paho-mqtt

GUI บางส่วนสำหรับเซิร์ฟเวอร์ถูกสร้างขึ้นโดยใช้ตัวออกแบบ GUI ชื่อ Pygubu สามารถติดตั้งได้โดยเรียกใช้:

pip3 ติดตั้ง pygubu

ข้อมูลเพิ่มเติมเกี่ยวกับ pygubu สามารถพบได้ที่

เมื่อติดตั้ง MQTT และ Pygubu แล้ว ให้สร้างไดเร็กทอรีใหม่และคัดลอกไฟล์ที่แนบมา ไดเร็กทอรีควรประกอบด้วย:

  • ltag.py
  • pregame.py
  • game_statistics.py
  • gvars.py
  • pygubu.ui
  • pygubu_limited.ui
  • home.png
  • self.png
  • ศัตรู.png
  • laser.jpg

หมายเหตุ: ภาพที่แนบมาที่ใช้ในโครงการนี้ไม่ได้ถูกสร้างขึ้นโดยทีมพัฒนา ดังนั้นจึงไม่อ้างสิทธิ์ในผลงาน

ขั้นตอนที่ 3: การตั้งค่า Raspberry Pi

การติดตั้ง Raspberry Pi
การติดตั้ง Raspberry Pi

ขั้นตอนนี้จะต้องทำซ้ำในแต่ละ Raspberry Pis

1. ติดตั้งระบบปฏิบัติการ

ขั้นแรก เริ่มต้นด้วยการติดตั้ง Raspbian ใหม่ เราขอแนะนำให้ใช้รุ่น Lite เนื่องจากน้อยกว่าสำหรับ Pi ที่จะจัดการ แต่ทั้งสองรุ่นควรทำงานได้ดี สามารถดาวน์โหลดได้ที่

2. ติดตั้ง MQTT

ต่อไปเราต้องติดตั้งบริการนายหน้า MQTT เราจะใช้ Mosquitto สำหรับสิ่งนี้ ในเทอร์มินัล ให้รันคำสั่งต่อไปนี้

sudo apt-get update

sudo apt-get อัปเกรด sudo apt-get ติดตั้ง mosquitto -y sudo apt-get ติดตั้ง python3-pip -y sudo pip3 ติดตั้ง paho-mqtt

Mosquitto เป็นบริการที่ให้กรอบสำหรับการสื่อสารระหว่างอุปกรณ์แต่ละตัวในเกม ซึ่งช่วยให้เซิร์ฟเวอร์สามารถส่งข้อความไปยัง Pis แต่ละตัวที่เชื่อมต่อกับบริการได้

3. ติดตั้งเครื่องมือ I2C

คำสั่งต่อไปนี้จะติดตั้งไลบรารีที่ใช้สำหรับหน้าจอ LCD

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

sudo apt-get ติดตั้ง rpi.gpio -y

อาจต้องเปลี่ยนที่อยู่ i2c ในไฟล์ lcddriver.py สามารถค้นหาที่อยู่ได้โดยป้อนคำสั่งต่อไปนี้

i2cdetect -y 1

4. ติดตั้งและกำหนดค่า LIRC

สร้างไดเร็กทอรีใหม่และดาวน์โหลดไฟล์ที่แนบมากับตำแหน่งนี้

อินเทอร์เน็ตเบราว์เซอร์ส่วนใหญ่จะไม่ดาวน์โหลดไฟล์โดยไม่มีส่วนขยาย เพื่อแก้ไขปัญหานี้ ไฟล์สองไฟล์ถูกอัปโหลดด้วยส่วนขยายชั่วคราว ทั้ง "lircrc.deleteExtension" และ "modules.deleteExtension" จริงๆ แล้วควรเป็นแบบไม่มีนามสกุล และไฟล์ควรเปลี่ยนชื่อเป็น "lircrc" และ "modules" หลังจากที่ดาวน์โหลดสำเร็จแล้ว

ขั้นตอนนี้ติดตั้งและกำหนดค่าการพึ่งพาสำหรับแพ็คเกจ Linux Infrared Remote Control (LIRC) สำหรับข้อมูลเพิ่มเติม โปรดดูบทช่วยสอนสำหรับการตั้งค่า LIRC ที่:

ขั้นแรกให้ติดตั้งไลบรารี่ จากนั้นคัดลอกไฟล์ที่รวมไปยังไดเร็กทอรีที่เกี่ยวข้องดังที่แสดงในคำสั่งด้านล่าง สุดท้าย เริ่มบริการ lircd ใหม่

sudo apt-get ติดตั้ง 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

รีบูต pi ของคุณเพื่อให้การเปลี่ยนแปลงมีผล

sudo รีบูต

5. เปิดใช้งาน I2C และแก้ไข CLIENT สำหรับผู้เล่นแต่ละคน

ต่อไป เราจะเปิดใช้งานอินเทอร์เฟซ I2C สามารถทำได้โดยใช้

sudo raspi-config

และเปิดใช้งาน I2C ในเมนู "ตัวเลือกอินเทอร์เฟซ"

6. แก้ไข Player CLIENT และ LTSERVER

ไดเร็กทอรีเกมควรรวมไฟล์ที่เหลืออีกสี่ไฟล์

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

ขั้นตอนสุดท้ายในการกำหนดค่า pi คือการกำหนดหมายเลข CLIENT ให้แต่ละ pi และเพิ่มตำแหน่งของเซิร์ฟเวอร์ ทำได้โดยการแก้ไขไฟล์ "player.py" ที่รวมไว้สำหรับแต่ละ pi เพื่อให้ทั้งหมดมีหมายเลข CLIENT ที่แตกต่างกัน หมายเลขลูกค้าถูกกำหนดในบรรทัดที่ 3 ของ player.py กำหนด pi แรกให้เป็นไคลเอนต์ "1" ตัวที่สองเป็น "2" และตัวที่สามเป็นไคลเอนต์ "3"

ควรเปลี่ยนบรรทัด LTSERVER เป็นที่อยู่ IP ของเซิร์ฟเวอร์ พบได้โดยการพิมพ์ 'ifconfig | grep "inet addr" ' ในเทอร์มินัลของคอมพิวเตอร์เซิร์ฟเวอร์

ขั้นตอนที่ 4: การประกอบปืน

ปืนประกอบ
ปืนประกอบ
ปืนประกอบ
ปืนประกอบ

ดำเนินการต่อสายปืนแต่ละกระบอกตามแผนผังการเดินสายและแผนผังด้านบน

อุปกรณ์ต่อพ่วงแต่ละตัวเชื่อมต่อกับพิน GPIO ต่อไปนี้บน Pi Zero:

  • ออด: GPIO5
  • ทริกเกอร์: GPIO26
  • รีโหลด: GPIO12
  • เครื่องส่งสัญญาณ IR: GPIO25
  • ตัวรับ IR: GPIO18
  • ไฟ LED สีแดง: GPIO17
  • ไฟ LED สีเขียว: GPIO27
  • ไฟ LED สีฟ้า: GPIO22
  • I2C_SDA: GPIO2
  • I2C_SCL: GPIO3

ดูแผนผังสำหรับรายละเอียดเพิ่มเติม

หากต้องการ ปืนเลเซอร์สามารถพิมพ์ 3 มิติโดยใช้ไฟล์โมเดลขั้นตอนที่รวมไว้ โปรดทราบว่าต้องพิมพ์ไฟล์ "front1STL. STL" สองไฟล์

ขั้นตอนที่ 5: เล่นเกม

การเล่นเกม
การเล่นเกม
การเล่นเกม
การเล่นเกม
การเล่นเกม
การเล่นเกม

เกมเริ่มต้นด้วยการเรียกใช้ไฟล์ "ltag.py" บนเซิร์ฟเวอร์ เมื่อเสร็จแล้ว ผู้เล่นแต่ละคนสามารถเชื่อมต่อกับเซิร์ฟเวอร์โดยเรียกใช้ไฟล์ "player.py" ตามลำดับ

หมายเหตุ: หลังจากเสียบแบตเตอรี่แล้ว อาจใช้เวลาถึงหนึ่งนาทีในการเปิด pi

นอกจากนี้ยังอาจเป็นประโยชน์ในการเพิ่มงาน cron ที่เรียกใช้ไฟล์ player.py โดยอัตโนมัติเมื่อ pi เริ่มทำงาน เรามีช่วงเวลาที่ยากลำบากในการทำงานและจบลงด้วยการเพิ่มบรรทัดลงในไฟล์ "/etc/rc.local" ในแต่ละ Pis เพื่อเรียกใช้ไฟล์ "player.py" ซึ่งช่วยให้เกมเริ่มต้นได้โดยไม่ต้อง SSH เข้าไปใน Pi เพื่อเรียกใช้สคริปต์ของผู้เล่น

เมื่อเกมเริ่มต้นด้วยผู้เล่นพร้อมแล้ว GUI จะปรากฏขึ้นเพื่อให้สามารถกำหนดค่าเกมบางส่วนได้ เกมเริ่มต้นหลังจากกดปุ่มเริ่ม

หลังจากแต่ละเกม GUI สิ้นสุดจะปรากฏขึ้นพร้อมสถิติเกี่ยวกับเกมก่อนหน้า รวมถึงแท็ก เปอร์เซ็นต์ทั่วโลก และระยะเวลาของเกม

หมายเหตุ: เนื่องจากข้อจำกัดในไลบรารีซอฟต์แวร์ ตำแหน่งแท็กรายงานความถูกต้องไม่ได้เป็นตัวแทนของแท็กเลเซอร์จริง ในเวอร์ชันปัจจุบัน รูปภาพรายงานความแม่นยำของผู้เล่นมีไว้เพื่อความสวยงามเท่านั้น โดยหวังว่าจะเป็นเวอร์ชันในอนาคตที่มีการใช้งานตำแหน่งแท็กจริง

ขั้นตอนที่ 6: การปรับปรุงในอนาคต

การปรับปรุงในอนาคต
การปรับปรุงในอนาคต
การปรับปรุงในอนาคต
การปรับปรุงในอนาคต

โดยรวมแล้ว โครงการนี้ประสบความสำเร็จอย่างมาก ระหว่างทาง เราได้คิดถึงคุณลักษณะเพิ่มเติมบางประการที่อาจจะถูกเพิ่มลงในรุ่นต่อๆ ไป

  • การออกแบบไกปืนที่แข็งแกร่งขึ้นสำหรับปืนที่พิมพ์ 3 มิติ
  • สิ้นสุดเมนูแบบเลื่อนลง GUI เพื่อแสดงสถิติจากเกมที่ผ่านมา
  • ตัวรับสัญญาณอินฟราเรดเพิ่มเติมที่สามารถติดเข้ากับเสื้อของผู้เล่นได้
  • โหมดเกมเพิ่มเติมที่สามารถเลือกได้ใน Pregame GUI
  • อัลกอริธึมตำแหน่งแท็กที่แม่นยำยิ่งขึ้นในหน้าสถิติผู้เล่น

แนะนำ: