Leap Motion 激光坦克!
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
关于这个项目
该项目的目标是创建一组机器人坦克来进行战斗,操作员在使用 Leap Motion 控制器控制车辆时获得更逼真的感觉。我想以低廉的价格制造机器人坦克,这样人们就可以尽可能轻松地复制该项目。
罐体由通用乐高积木和板材制成。电源是一个简单的 4 节 AA 可充电电池块。坦克的控制器是一个 Arduino Uno R3。 “推进”是两个简单的直流电机,后面有轮子,前面有一个脚轮,使用单个 L293D 集成电路。 “武器”是单个红外 LED 灯,“装甲”是一组红外传感器,用于检测来自对面坦克红外 LED 的命中。 “平视显示器”是一个单一的多色 LED,告诉您坦克上发生的任何动作,包括您的装甲状态。最后,坦克的“控制”通过运行 NodeJS 的 Raspberry Pi 2 无线处理,该模块通过 RF24 无线模块连接,每个坦克也配备了该模块。
使用操作员的手,Leap Motion 使用 Leap Motion Javascript SDK 控制坦克。使用 SDK 检测手部动作,javascript 与 Raspberry PI 2 上的 NodeJS 服务器通信,后者又通过 RF24 模块与坦克通信。双手向前,坦克向前移动。双手向后,坦克向后移动。左手向前,右手向后,坦克向右转。右手向前,左手向后,坦克向左转。在“中间”位置的双手将停止坦克。一只手向前(向左或向右)放下另一只手将“开火”坦克的武器。
这是坦克武器、装甲和抬头显示器的快速演示。
以全方位的高级装甲和纸箱为掩体,激光坦克变成了一场狩猎和逃避的游戏。
项目设置步骤:
1) 组装储罐并使用下面的示意图为它们接线。下载所需的Arduinolibraries(参见github存储库中的README),编译并将tank1的thearduino草图上传到一个坦克,tank2上传到另一个坦克。
2) 将 RF24 收发器连接到 Raspberry Pi。在 Pi 上安装 Raspbian OS 和 node JS。
3) 在 Pi 上下载、配置和构建(参见 github 存储库中的 README)RF24 库。
4)从github站点下载NodeJS服务器软件,配置并启动App Server/Web服务器(参见githubrepository中的README)。
5) 在您的计算机上安装 Leap Motion 和驱动程序。打开浏览器,加载 Raspberry Pi Rest/Web 服务器的 URL 加载网页(参见 github 库中的 README)来控制 tank one 或 tanktwo。
6) 单击校准按钮并将您的手放在跳跃运动上,这样它就会检测到两只手并知道您的中立位置。校准完成后,您可以用手控制油箱。
关于坦克底盘的快速说明:
坦克的主体由简单的乐高积木组装而成,这些乐高积木“粘”在坦克的零件(电机、面包板等)上,以帮助将其固定在一起。这是一张幻灯片,展示了这是如何完成的。
关于红外 LED 的快速说明:
当您想坐在沙发上、地板上或椅子上并能够从任何地方更改电视频道时,红外遥控器非常实用。红外 LED 的构建是为了让光束尽可能多地进入,以提高覆盖范围。但是,如果您想控制 LED 的光束更小以使其更难击中远程传感器(例如在坦克战游戏中),则稍微困难一些。在我的阅读中,我发现通过在管子末端使用一个非常简单的放大镜透镜,您可以聚焦红外光束。这是一张图表,显示了我在说什么:
我最终在药店买了一个非常便宜的袖珍放大镜,从里面取出镜头,在它周围建一个管子,在管子的另一端安装红外 LED,这非常适合缩小光束IR LED 更精确。
关于 360 度红外传感器的快速说明
当 LED 位于 LED 正前方或约 90 度聚焦时,红外传感器能够检测到来自该 LED 的信号。如果红外 LED 位于传感器后面,它将无法检测到发送的信号。
为了实现完整的 360 度检测角度,您需要修改红外库以检测来自 4 个不同传感器的 4 个不同引脚上的信号,或者创建一个硬件解决方案,允许 4 个传感器以菊花链方式连接以报告单个别针。我找到了一些在线文章,这些文章展示了如何使用简单的 AND 集成电路将 4 个传感器连接到单个输入引脚来实现这一点。当任何红外传感器检测到红外信号时,它会在该引脚上报告。这允许获得 360 度检测,无需修改红外库,或使用 4 个输入引脚。
代码
激光坦克 Github
Leap Motion Laser Tanks 项目的所有自定义代码文件 https://github.com/corky/LaserTanks示意图
使用红外 LED,坦克发射“代码”,其他坦克识别为命中。 使用单个红外传感器,坦克能够检测到红外信号何时来自对方坦克并将其注册为命中 使用4个红外传感器,菊花链和一个简单的AND门集成电路(74HCT21),一个坦克能够识别来自对面坦克 LED 的红外信号作为来自其周围 360 度的命中。 使用 RGB LED,坦克通过改变颜色来识别其当前状态(它已被击中多少次)的 LED。此外,坦克每次射击时都会将 LED 的颜色更改为绿色。 使用L293D集成电路和一些简单的直流电机,坦克可以前进、后退和转弯左还是右。 使用简单且廉价的 RF24 收发器,坦克能够与操作员进行通信并接收命令。 使用 Raspberry Pi2、简单且廉价的 RF24 收发器和 Node JS,运营商能够与每个坦克通过 REST API 调用。制造工艺