2019-10-25 14:49:09 [显示全部楼层]
32388浏览
查看: 32388|回复: 4

[项目] 树莓派DIY真人CS装备:红外线激光枪

[复制链接]
树莓派DIY真人CS装备:红外线激光枪图1

宅太久人都要废了,拉上小伙伴、小朋友来玩一把真人 CS 游戏吧!

什么?没有装备?好吧,下面来一份自制红外线激光枪和红外背心的教程,并且提供一套基于 Python 开发的基础游戏框架。DIY 好了现场就能玩上一把过过瘾!

首先简单说明一下原理,游戏需要有一台电脑作为服务器,用来同步每个玩家(手上的红外线激光枪)的数据。红外线枪发射的红外线能触发被命中的背心上的红外线接收装置,记录游戏中的命中数据。

而玩家所用的红外线激光枪也就是客户端,是基于树莓派 Zero 来实现的,上面还装配了一块 LCD 显示屏来显示游戏进程。枪与服务器通过 WIFI 同步数据,下面的例程中我们采用 3 套红外线激光枪来说明。

材料清单
树莓派DIY真人CS装备:红外线激光枪图2树莓派DIY真人CS装备:红外线激光枪图3

  • 电脑 × 1
  • 树莓派 Zero W × 3
  • microSD 卡 × 3
  • 红外 LED × 3
  • 红外线接收器 × 6
  • 红色 LED × 3
  • 蓝色 LED × 3
  • 绿色 LED × 3
  • 无源蜂鸣器 × 3
  • 按钮 × 6
  • 带 I2C 转接口的 LCD 屏幕 1602 × 3
  • 便携式电池组 × 3
  • micro 转 USB 电线 × 3
  • PN2222 三极管 × 3
  • 100 欧电阻 × 3
  • 1k 欧电阻 × 9
  • 背心 × 3
  • 带状电线 × 3
  • 3D 打印激光枪外壳 × 1

部署服务器

树莓派DIY真人CS装备:红外线激光枪图4

为电脑(也就是用于这个游戏的服务器)安装 Mosquitto MQTT Broker Service。Mosquitto 将为游戏中每个客户端设备提供通信框架,通俗来讲就是向每个连接到服务器的树莓派发送数据。在服务器的终端中,运行以下命令进行安装。

  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. sudo apt-get install mosquitto -y
  4. sudo apt-get install python3-pip -y
  5. sudo pip3 install paho-mqtt
复制代码


服务器的某些 GUI 是用 Pygubu 的 GUI 设计器创建的。运行以下命令进行安装:

  1. pip3 install pygubu
复制代码


更多 pygubu 信息,请参考:https://github.com/alejandroautalan/pygubu

安装好 MQTT 和 Pygubu 之后,创建一个新目录并复制以下文件:

ltag.py、pregame.py、game_statistics.py、gvars.py、pygubu.ui、pygubu_limited.ui、home.png、self.png、enemies.png、laser.jpg。
下载附件game_statistics.py.zip下载附件gvars.py.zip
下载附件ltag.py.zip
下载附件pregame.py.zip
下载附件pygubu.ui.zip
下载附件pygubu_limited.ui.zip

安装树莓派
树莓派DIY真人CS装备:红外线激光枪图5
树莓派DIY真人CS装备:红外线激光枪图6

游戏枪里面的树莓派都需要做下面的处理。

1、安装操作系统
安装最新版的 Raspbian。建议使用 Lite 版本
https://www.raspberrypi.org/downloads/raspbian/
2、安装MQTT
安装 MQTT 的 broker service。将在 Mosquitto 中使用。在终端中,运行以下命令。
  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. sudo apt-get install mosquitto -y
  4. sudo apt-get install python3-pip -y
  5. sudo pip3 install paho-mqtt
复制代码

3、安装 I2C 工具
运行以下命令,为 LCD 屏幕安装库。
  1. sudo apt-get install -y python3-smbus i2c-tools
  2. sudo apt-get install rpi.gpio -y
复制代码

I2C 地址可能需要在 lcddriver.py 文件中更改。输入以下命令可以找到该地址。
[mw_shl_code=applescript,true]i2cdetect -y 1[/mw_shl_code]
4、安装和配置 LIRC

第一步:创建一个新目录,并将附件下载到该目录中。
大多数浏览器不能下载没有扩展名的文件。因此上传了两个带有临时扩展名的文件,“ lircrc.deleteExtension”和“ modules.deleteExtension”。下载文件后请将其重命名为“ lircrc”和“ modules”。

第二步:安装并配置 Linux 红外远程控制(LIRC)软件包的依赖项。

更多有关设置 LIRC 的教程,请参考:
http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/

用下面的命令安装该库。
  1. sudo apt-get install python3-lirc -y
复制代码


在新创建的目录中,执行以下命令以将配置文件移动到正确的位置。
  1. sudo mv lircd.conf hardware.conf lircrc lirc_options.conf /etc/lirc/
  2. sudo mv modules /etc/
复制代码

运行以下命令重新启动 lircd 服务:
  1. sudo /etc/init.d/lircd restart
复制代码

编辑 /boot/config.txt 文件并添加以下行。
  1. dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=25
复制代码

重新启动树莓派,确保修改的命令正常运行。
  1. sudo reboot
复制代码

5、启用 I2C 并为每个游戏玩家配置账号。
运行以下命令,启用 I2C 接口。
  1. sudo raspi-config
复制代码

并在“界面选项”中启用 I2C。
6、配置玩家账号和 LTSERVER。
树莓派DIY真人CS装备:红外线激光枪图7

游戏目录包含四个文件。
i2c_lib.py、lcddriver.py、ltsounds.py、player.py。

最后,为每个树莓派分配一个 CLIENT 账号并添加服务器的位置。通过修改每个树莓派上的“player.py”代码文件来配置。为它们标记不同的玩家账号,CLIENT 账号是在 player.py 的第三行上分配的。将第一个树莓派标记为CLIENT “1”,将第二个树莓派标记为 CLIENT “2”,将第三个树莓派标记为 CLIENT “3”。
LTSERVER 行应更改为服务器的 IP 地址。在计算机服务器终端中输入’ifconfig | grep “inet addr” ‘。
下载附件lircd.conf.zip
下载附件ltsounds.py.zip
下载附件player.py.zip
下载附件hardware.conf.zip
下载附件i2c_lib.py.zip
下载附件lcddriver.py.zip
下载附件lirc_options.conf.zip
下载附件lircrc.deleteExtension.zip
下载附件modules.deleteExtension.zip

组装枪体
树莓派DIY真人CS装备:红外线激光枪图8
树莓派DIY真人CS装备:红外线激光枪图9


按原理图接线。
每个设备连接到树莓派 Zero上的 GPIO 引脚如下:
蜂鸣器 Buzzer:GPIO5
扳机 Trigger:GPIO26
填充子弹 Reload:GPIO12
红外发射器 IR Transmitter::GPIO25
红外接收器 IR Receivers:GPIO18
红色 LED:GPIO17
绿色 LED:GPIO27
蓝色 LED:GPIO22
I2C_SDA:GPIO2
I2C_SCL:GPIO3
下载附件BaseCaseSTL.STL.zip
下载附件BaseSTL.STL.zip
下载附件front1STL.STL.zip
下载附件TopSTL.STL.zip

运行游戏

树莓派DIY真人CS装备:红外线激光枪图10

游戏通过在服务器上运行“ltag.py”程序来启动。启动后,每个玩家都可以通过运行各自的“player.py”程序连接到服务器。
注意:插入电池组后,树莓派最多需要一分钟才能启动。

树莓派开机后,可以添加一个 cron job 来自动运行 player.py 程序,在每个树莓派上的“/etc/rc.local”文件中添加一行来运行“player.py”文件。这样就可以启动游戏,无需通过 SSH 连接到树莓派来运行玩家脚本。

在玩家准备开始游戏后,将出现一个图形界面,允许配置一些游戏设置。再按下开始按钮后,游戏开始。

每次游戏结束之后,将会再次出现一个图形界面,显示之前游戏的统计信息,包括命中数据和游戏持续时间。

树莓派DIY真人CS装备:红外线激光枪图11
树莓派DIY真人CS装备:红外线激光枪图12

注意:由于软件库的限制,报告中的标记点位置不能代表实际的激光标记。在当前版本中,玩家报告图像只是为了美观,希望以后的版本中能够实现实际的标签位置。

可改进的地方

树莓派DIY真人CS装备:红外线激光枪图13
树莓派DIY真人CS装备:红外线激光枪图14

未来还可以添加的其他功能有:
1、3D 打印更加坚固的扳机。
2、在玩家背心上安装更多的红外接收器。
3、在 Pregame GUI 选择中添加其他游戏模式。
4、玩家统计信息页面能够达到更加准确的标签定位算法。


MAKER:terrang/译:趣无尽 Cherry
https://www.instructables.com/id/Infrared-Laser-Tag-With-Raspberry-Pi-Zero/

佛系唐法官  中级技师

发表于 2020-7-2 16:05:31

学到了
回复

使用道具 举报

DF_hosthj  见习技师

发表于 2020-7-3 20:05:46

太厉害了,可以深度学习
回复

使用道具 举报

gray6666  初级技神

发表于 2020-7-16 16:45:26

Flash顶一个
回复

使用道具 举报

aaasdsdsd  学徒

发表于 2022-3-4 10:25:18

你好,能加我vx吗?
PIRANHA314
对这个项目感兴趣,可以聊一下,我现在就差这个接收器和发射器模块了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail