基于DIGILENT Basys3 FPGA的RFID自動駕駛小車
引言
本日為大家?guī)淼目釀?chuàng)分享作品是一臺自動駕駛小車,它能夠通過無線射頻識別(RFID)在規(guī)劃好的路線上實現(xiàn)自動駕駛。該項目的作者是來自羅馬尼亞的兩名本科在校創(chuàng)客騷年。目前這個項目只是打造了一個雛形,但在作者眼里,這個作品的初衷更多是去探索一項技術(shù)解決方案,可以讓今后每一輛汽車通過物聯(lián)網(wǎng)(IOT)實現(xiàn)自動駕駛功能。他們相信,隨著這一技術(shù)雛形的深入與普及,最終能夠大大幫助降低當今的車禍發(fā)生率及由此所造成的人員事故傷害。
Step 1: 項目功能描述

此項目目前還在完善階段,但作者已經(jīng)制作出了一個可以用于娛樂和功能原型測試的樣品。以下是作品的項目功能描述。
電機
電機由FPGA發(fā)出的PWM信號驅(qū)動,其轉(zhuǎn)速與PWM波值成正比。它們各自都有一個由兩個成90度相位放置的傳感器組成的霍爾編碼器(光電編碼器)。每次檢測到一個完整的旋轉(zhuǎn),會發(fā)出一個二進制數(shù)值,告訴FPGA車輪已轉(zhuǎn)了完整的一圈或已走過了大概19cm(項目所用到的車輪直徑是6cm)。有興趣親手制作的童鞋也可以分別設(shè)置并讀出每個電機轉(zhuǎn)動的方向。
藍牙收發(fā)器
作品需要這部分功能來與移動應用端進行無線通信,這個通信是用來模仿物聯(lián)網(wǎng)的。VHDL模塊用以掌控當前標簽值的發(fā)送以及接收外部重要信息所需的通信協(xié)議。外部的信息采用FPGA內(nèi)置的有限狀態(tài)機進行實時處理。
RFID讀取器
首先,如果你對射頻識別技術(shù)不那么了解的話,建議可以先學習一下相關(guān)的基礎(chǔ)知識(請自行度娘)。
標簽讀取器的功能:當標簽信號到達讀取器的范圍(即它們達到同一個頻率),標簽信號會反饋一個預處理值(12位)。
一般我們會看到兩種不同類型的讀取器:
復原讀取器:它們的任務僅僅是讓小車按照軌跡行駛
位置讀取器:這些讀取器是真正接收標簽信號的
復原讀取器:
在理想情況下,這些讀取器不會讀取標簽信號;
算法會將車輛保持在由兩排標簽所組成的跑道內(nèi);
復原讀取器主要是確保小車不會沖出跑道;
當一個讀取器的確讀取到了標簽信號,這說明車輛離跑道邊緣很近了;
車輛為了避免危險會自動向讀取到的標簽信號相反的方向行駛。
位置讀取器:
與復原讀取器不同,位置讀取器要一直讀取標簽信號。用于:
實時跟蹤車輛行駛的位置,與信號地圖相比較并傳送到物聯(lián)網(wǎng)上;
將接收的信號送到FPGA上進行進一步的處理與控制;
在FPGA上我們可以為下一個要轉(zhuǎn)的彎做準備與計算;
這個算法程序是為了避免激活復位讀取器并確保車輛的平穩(wěn)行駛。
RFID標簽
RFID標簽的放置主要取決于讀取器支架臂的范圍。如果你實際所打印出的3D模型與作者所制作的一致(點擊“閱讀原文”可下載3D打印模型),支架臂應被放置在大約離底板上方5cm的位置,且兩個支架臂間距離約為2cm。
在這里,同時附上Basys3開發(fā)板、RFID讀取器、電機驅(qū)動以及藍牙模塊的連接原理圖,供有興趣的小伙伴們參考。


Step 2: 準備工具/材料



一個具有最少4個外設(shè)的FPGA開發(fā)板,作者采用的是Basys3 FPGA開發(fā)板
RFID讀取器 X 4
RFID標簽(至少40個)
PmodDHB1雙直流電機或單步進電機驅(qū)動模塊 X 2
直流電機 X 4
電機驅(qū)動器:為了節(jié)省空間,作者采用了2個雙轉(zhuǎn)子電機驅(qū)動器
由兩個基座和放置電機的平臺組成的簡易機器人平臺
藍牙通信技術(shù)來模仿物聯(lián)網(wǎng)
可充電電池 X 6(任何5號/1.2V電池皆可)
一個標準的手機充電器,需要用到它來為FPGA單獨供電
一些連接線
其它可視實際所需自行準備的材料:
在實際項目中,作者制作了幾個為讀取器準備的3D模型以及一個為Basys開發(fā)板準備的盒子。如果需要的話,可以通過點擊“閱讀原文”下載3D打印所需的.stl文件,可以幫助你節(jié)省3D打印所需的精力。
Step 3: 制作移動小車



現(xiàn)在我們有了所有的部件,我們可以開始建造小車移動平臺:
用螺絲將電機固定在電機平臺上
用螺絲將電機平臺固定在基座底板上
將輪子與移動充電器加到車上
將FPGA加上去并與驅(qū)動器連接起來
將電機連到電機驅(qū)動器上
將藍牙接收器與其中一個PmodDHB1相連
用所提供的項目代碼(點擊“閱讀原文”下載)在Vivado中創(chuàng)建一個項目
采所提供的安卓應用(點擊“閱讀原文”下載)來進行項目測試
Step 4: 測試RFID讀取器


在這一步中我們要將RFID讀取器與FPGA的Pmods模塊相連:
根據(jù)作者提供的文檔與圖示照片將線焊接起來
將支架固定到底板上
將RFID讀取器放置在3D打印出的支架上
這一步需要進行現(xiàn)場的調(diào)整。
Step 5: 最終的組裝與測試


在完成與小車運動相關(guān)的部分、RFID讀取器部分、以及藍牙接收器部分后,最后一步是來驗證并調(diào)試所設(shè)計的項目。
在這個階段,我們需要用到代碼包中的“TEST_BASYS_RECOVERY”源文件(可點擊“閱讀原文”下載),在將所有模塊連接起后進行優(yōu)化。當前作者的項目版本中只開發(fā)了復位讀取器功能,其它功能將隨著項目的推進而逐步開發(fā)出來。項目的最終測試效果已展示在本文開篇的視頻中。