物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

基于DIGILENT Basys3 FPGA的RFID自动驾驶小车

作者:DIGILENT开源创客部落
来源:FPGA开发圈
日期:2016-09-08 11:13:58
摘要:本日为大家带来的酷创分享作品是一台自动驾驶小车,它能够通过无线射频识别(RFID)在规划好的路线上实现自动驾驶。该项目的作者是来自罗马尼亚的两名本科在校创客骚年。

  引言

  本日为大家带来的酷创分享作品是一台自动驾驶小车,它能够通过无线射频识别(RFID)在规划好的路线上实现自动驾驶。该项目的作者是来自罗马尼亚的两名本科在校创客骚年。目前这个项目只是打造了一个雏形,但在作者眼里,这个作品的初衷更多是去探索一项技术解决方案,可以让今后每一辆汽车通过物联网(IOT)实现自动驾驶功能。他们相信,随着这一技术雏形的深入与普及,最终能够大大帮助降低当今的车祸发生率及由此所造成的人员事故伤害。

基于DIGILENT Basys3 FPGA的RFID自动驾驶小车

  Step 1: 项目功能描述

基于DIGILENT Basys3 FPGA的RFID自动驾驶小车

  此项目目前还在完善阶段,但作者已经制作出了一个可以用于娱乐和功能原型测试的样品。以下是作品的项目功能描述。

  电机

  电机由FPGA发出的PWM信号驱动,其转速与PWM波值成正比。它们各自都有一个由两个成90度相位放置的传感器组成的霍尔编码器(光电编码器)。每次检测到一个完整的旋转,会发出一个二进制数值,告诉FPGA车轮已转了完整的一圈或已走过了大概19cm(项目所用到的车轮直径是6cm)。有兴趣亲手制作的童鞋也可以分别设置并读出每个电机转动的方向。

  蓝牙收发器

  作品需要这部分功能来与移动应用端进行无线通信,这个通信是用来模仿物联网的。VHDL模块用以掌控当前标签值的发送以及接收外部重要信息所需的通信协议。外部的信息采用FPGA内置的有限状态机进行实时处理。

  RFID读取器

  首先,如果你对射频识别技术不那么了解的话,建议可以先学习一下相关的基础知识(请自行度娘)。

  标签读取器的功能:当标签信号到达读取器的范围(即它们达到同一个频率),标签信号会反馈一个预处理值(12位)。

  一般我们会看到两种不同类型的读取器:

  复原读取器:它们的任务仅仅是让小车按照轨迹行驶

  位置读取器:这些读取器是真正接收标签信号的

  复原读取器:

  在理想情况下,这些读取器不会读取标签信号;

  算法会将车辆保持在由两排标签所组成的跑道内;

  复原读取器主要是确保小车不会冲出跑道;

  当一个读取器的确读取到了标签信号,这说明车辆离跑道边缘很近了;

  车辆为了避免危险会自动向读取到的标签信号相反的方向行驶。

  位置读取器:

  与复原读取器不同,位置读取器要一直读取标签信号。用于:

  实时跟踪车辆行驶的位置,与信号地图相比较并传送到物联网上;

  将接收的信号送到FPGA上进行进一步的处理与控制;

  在FPGA上我们可以为下一个要转的弯做准备与计算;

  这个算法程序是为了避免激活复位读取器并确保车辆的平稳行驶。

  RFID标签

  RFID标签的放置主要取决于读取器支架臂的范围。如果你实际所打印出的3D模型与作者所制作的一致(点击“阅读原文”可下载3D打印模型),支架臂应被放置在大约离底板上方5cm的位置,且两个支架臂间距离约为2cm。

  在这里,同时附上Basys3开发板、RFID读取器、电机驱动以及蓝牙模块的连接原理图,供有兴趣的小伙伴们参考。

基于DIGILENT Basys3 FPGA的RFID自动驾驶小车
基于DIGILENT Basys3 FPGA的RFID自动驾驶小车

  Step 2: 准备工具/材料

基于DIGILENT Basys3 FPGA的RFID自动驾驶小车
基于DIGILENT Basys3 FPGA的RFID自动驾驶小车
基于DIGILENT Basys3 FPGA的RFID自动驾驶小车

  一个具有最少4个外设的FPGA开发板,作者采用的是Basys3 FPGA开发板

  RFID读取器 X 4

  RFID标签(至少40个)

  PmodDHB1双直流电机或单步进电机驱动模块 X 2

  直流电机 X 4

  电机驱动器:为了节省空间,作者采用了2个双转子电机驱动器

  由两个基座和放置电机的平台组成的简易机器人平台

  蓝牙通信技术来模仿物联网

  可充电电池 X 6(任何5号/1.2V电池皆可)

  一个标准的手机充电器,需要用到它来为FPGA单独供电

  一些连接线

  其它可视实际所需自行准备的材料:

  在实际项目中,作者制作了几个为读取器准备的3D模型以及一个为Basys开发板准备的盒子。如果需要的话,可以通过点击“阅读原文”下载3D打印所需的.stl文件,可以帮助你节省3D打印所需的精力。

  Step 3: 制作移动小车

基于DIGILENT Basys3 FPGA的RFID自动驾驶小车
基于DIGILENT Basys3 FPGA的RFID自动驾驶小车
基于DIGILENT Basys3 FPGA的RFID自动驾驶小车

  现在我们有了所有的部件,我们可以开始建造小车移动平台:

  用螺丝将电机固定在电机平台上

  用螺丝将电机平台固定在基座底板上

  将轮子与移动充电器加到车上

  将FPGA加上去并与驱动器连接起来

  将电机连到电机驱动器上

  将蓝牙接收器与其中一个PmodDHB1相连

  用所提供的项目代码(点击“阅读原文”下载)在Vivado中创建一个项目

  采所提供的安卓应用(点击“阅读原文”下载)来进行项目测试

  Step 4: 测试RFID读取器

基于DIGILENT Basys3 FPGA的RFID自动驾驶小车
基于DIGILENT Basys3 FPGA的RFID自动驾驶小车

  在这一步中我们要将RFID读取器与FPGA的Pmods模块相连:

  根据作者提供的文档与图示照片将线焊接起来

  将支架固定到底板上

  将RFID读取器放置在3D打印出的支架上

  这一步需要进行现场的调整。

  Step 5: 最终的组装与测试

基于DIGILENT Basys3 FPGA的RFID自动驾驶小车
基于DIGILENT Basys3 FPGA的RFID自动驾驶小车

  在完成与小车运动相关的部分、RFID读取器部分、以及蓝牙接收器部分后,最后一步是来验证并调试所设计的项目。

  在这个阶段,我们需要用到代码包中的“TEST_BASYS_RECOVERY”源文件(可点击“阅读原文”下载),在将所有模块连接起后进行优化。当前作者的项目版本中只开发了复位读取器功能,其它功能将随着项目的推进而逐步开发出来。项目的最终测试效果已展示在本文开篇的视频中。