,,,
(江陰職業(yè)技術學院 電子信息工程系,江蘇 江陰 214400)
隨著互聯(lián)網(wǎng)技術和無線通信技術的發(fā)展,WiFi技術以其傳輸速度快、有效距離較長等優(yōu)勢得到了快速發(fā)展。與藍牙技術相比,WIFI通信具有更寬的覆蓋范圍和更高的傳輸速率。無論是企業(yè)商務還是家庭娛樂都體現(xiàn)出對WIFI技術與日俱增的需求,當前使用WiFi的電子產(chǎn)品越來越多,如手機、電腦、汽車、游戲設備和醫(yī)療設備等,WIFI技術展示出了極大的應用價值和良好的發(fā)展前景[1-2]。如何將WIFI技術應用于智能小車也引起了許多愛好者的熱情。
智能小車是集環(huán)境感知、路徑?jīng)Q策與自動行駛等多功能于一體的輪式移動機器人,在倉庫貨物搬運、小區(qū)巡邏、險情排除等領域得到了廣泛應用。目前有關智能小車的研究很多,其中部分論文討論了小車避障原理和避障實現(xiàn)的過程[3-4],還有部分論文討論了小車循跡方案和循跡算法[5],也有少數(shù)文章探討了基于Android設備的無線遙控小車的設計過程[6]。然而有關Android設備與單片機之間通信過程的詳細介紹,以及小車運行過程中電機運轉(zhuǎn)引入的干擾如何處理卻鮮有介紹。本文將把小車遙控、避障、循跡和跟隨這些傳統(tǒng)功能與WIFI技術結(jié)合起來,研究如何通過WIFI技術控制小車實現(xiàn)遙控運行、避障、循跡和跟隨,以及視頻拍攝和視頻回傳功能,并詳細介紹如何設計系統(tǒng)電源以防止電機運轉(zhuǎn)引入干擾,以及探討WIFI模塊的設計方案、Android設備與單片機之間的通信協(xié)議,以及通信實現(xiàn)的軟件設計具體過程。具有遠程控制 、自動循跡、自動避障、跟隨主人等功能的WIFI遙控小車目前比較新穎,能夠運用到實際生活和生產(chǎn)中,用來完成一些環(huán)境比較惡劣或者目前人類無法完成的任務,具有一定的實際意義。
系統(tǒng)總體[7]如圖1所示,系統(tǒng)采用的是51系列單片機STC11F32,這是一款1個時鐘/機器周期的單片機,比STC89C51單片機的運行速度提高了12倍,典型工作電壓為5 V。系統(tǒng)電源包括5 V和7.5 V兩種輸出電壓的電源,分別給系統(tǒng)控制電路和電機驅(qū)動電路供電。單片機通過電機驅(qū)動模塊控制直流電機的轉(zhuǎn)向和轉(zhuǎn)速,從而控制小車的行駛方向和行駛速度。
圖1 總體結(jié)構框圖
系統(tǒng)中的水平轉(zhuǎn)動舵機和垂直轉(zhuǎn)動舵機[8]組成視頻拍攝云臺,上面安裝了攝像頭和超聲波測距模塊。通過控制水平轉(zhuǎn)動舵機的轉(zhuǎn)動角度,可以帶動攝像頭和超聲波測距模塊在水平方向轉(zhuǎn)動,從而使攝像頭拍攝不同位置的圖像,以及使超聲波測距模塊檢測在不同位置的障礙物與小車的距離。通過控制垂直轉(zhuǎn)動舵機的轉(zhuǎn)動角度,可以控制攝像頭的俯仰角度。
系統(tǒng)中的攝像頭將拍攝的視頻通過WIFI模塊實時傳輸?shù)紸ndroid平臺上顯示,Android平臺也可以將控制命令實時發(fā)送給WIFI模塊,通過WIFI模塊的串口傳輸給單片機,由單片機控制小車按要求運行。
系統(tǒng)除了能夠通過Android平臺直接控制小車的運行狀態(tài)和舵機的轉(zhuǎn)動角度,還可以控制小車運行于跟隨模式、循跡模式和避障模式。
系統(tǒng)采用HC-SR04超聲波測距模塊[9]進行障礙物距離的測量,通過云臺水平方向的轉(zhuǎn)動,帶動超聲波模塊在水平方向的轉(zhuǎn)動范圍可以達到180°,從而可以測量180°范圍的障礙物距離。
系統(tǒng)循跡模塊采用的光電傳感器是帶螺紋的圓柱狀收發(fā)一體接近開關模塊,相比較裸露在外面的紅外對管,其靈敏度較高,抗干擾能力更強,而且圓柱外面的螺紋可方便其調(diào)整距離地面的高度,增加了循跡的可靠性。
小車跟隨功能是通過在小車前端安裝3個收發(fā)一體接近開關模塊實現(xiàn)的,中間的接近開關方向朝正前方,左右兩個接近開關安裝成120°角度,這樣就可檢查前方和左右方是否有人,哪個方向有人小車就往哪個方向跟進,從而實現(xiàn)跟隨功能。在跟隨的過程中,由超聲波模塊檢測小車與人之間的距離,如果大于設定距離,小車跟隨;如果小于設定距離,小車停止,以便于小車與人之間保持一定的距離。
系統(tǒng)遙控功能是采用WIFI遙控實現(xiàn)的,Android平臺向小車發(fā)送前進、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止等命令,系統(tǒng)WIFI模塊接收到命令后,通過串口將這些控制命令傳送給單片機,單片機將這些控制命令解碼后控制小車實現(xiàn)前進、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止等功能。
系統(tǒng)電源模塊、直流電機驅(qū)動模塊和WIFI模塊的設計是系統(tǒng)設計的關鍵,下面將進行詳細介紹。
系統(tǒng)輸入電壓是由兩個充電鋰電池串聯(lián)提供的,在電量充滿的情況下,鋰電池輸出電壓可達到8 V。兩片LM2576-ADJ配合外圍的阻容元件組成兩個電源轉(zhuǎn)換電路,將鋰電池輸出電壓分別轉(zhuǎn)換為5 V輸出電壓和7.5 V輸出電壓。其中的5 V電壓給系統(tǒng)控制電路提供電壓,7.5 V電壓給電機驅(qū)動電路提供電壓。
LM2576系列是3 A電流輸出降壓開關型集成穩(wěn)壓電路,它內(nèi)含固定頻率振蕩器(52 kHz)和基準穩(wěn)壓器(1.23 V),并具有完善的保護電路,包括電流限制及熱關斷電路等。LM2576產(chǎn)品提供有3.3 V(-3.3)、5 V(-5.0)、12 V(-12)、15 V(-15)及可調(diào)(-ADJ)等多個電壓檔次產(chǎn)品。系統(tǒng)使用的是LM2576-ADJ,配合不同的阻容元件得到不同的輸出電壓,如圖2所示。圖2中輸出電壓VOUT=1.23×(1+R2/R1),其中R1=1~5 kΩ,對于輸出5 V的電源轉(zhuǎn)換電路,取R1=2 kΩ,R2=6.2 kΩ;對于輸出7.5 V的電源轉(zhuǎn)換電路,取R1=2 kΩ,R2=10 kΩ。
采用雙電源供電,有效避免了電機運轉(zhuǎn)引入的干擾串入控制電源,以免影響單片機系統(tǒng)正常工作。
圖2 電源電路
系統(tǒng)直流電機驅(qū)動電路[10-11]是由4通道邏輯驅(qū)動電路的L298構成的,如圖3所示。電路中有兩路電壓,一路是L298控制電路部分工作需要的5 V電壓,另一路是驅(qū)動電機部分工作需要的7.5 V電壓。為了防止電機工作引入的干擾串入單片機控制電路部分,在單片機P0端口與L298輸入端口之間安裝了光電隔離電路,圖中只給出了P0.0與L298輸入端口IN1之間的光電隔離電路,其他引腳的光電隔離電路與之類似。電機每個輸入引腳與電源7.5 V和地之間分別反裝了一個續(xù)流二極管,主要是為了消除電機轉(zhuǎn)動時的尖峰電壓。工作時L298功率較大,溫度較高,可以適當加裝散熱片。
圖3 直流電機驅(qū)動電路
系統(tǒng)WIFI模塊的核心芯片是WiFi領域頂尖半導體公司Qualcomm Atheros推出的AR9331,這是一款高度集成、低成本的IEEE 802.11n 1*1 MIMO WiFi SoC,集成了MIPS 24Kc內(nèi)核、1個五端口百兆以太網(wǎng)交換機、高速串口和USB 2.0 Host/Device 接口。WiFi SoC AR9331和256Mb DDR SDRAM A3S56F40FTP構成了系統(tǒng)WIFI模塊。
系統(tǒng)中的WIFI模塊與Android平臺之間可以進行無線通信,攝像頭將拍攝的視頻通過USB接口實時傳輸給WIFI模塊,由于單片機處理視頻數(shù)據(jù)速度不夠,因此系統(tǒng)中WIFI模塊將視頻數(shù)據(jù)直接傳輸給Android平臺,在Android平臺上實時顯示攝像頭拍攝的視頻。Android平臺發(fā)送的控制命令也是通過WIFI信道傳輸給WIFI模塊,通過WIFI模塊的串行接口傳輸給單片機,單片機對接收到的數(shù)據(jù)進行解碼,根據(jù)解碼信息控制小車實現(xiàn)超聲波測距避障、循跡、跟隨和遙控運行等功能。
系統(tǒng)軟件組成模塊如圖4所示,在主控模塊執(zhí)行的過程中,WIFI模塊接收Android平臺發(fā)送的控制命令,并將控制命令通過串口傳輸給單片機,引起單片機串口中斷,串口接收中斷模塊接收到一條完整的串口命令后,執(zhí)行遙控命令解碼模塊,分析遙控發(fā)送的控制命令,根據(jù)分析結(jié)果給小車工作模式標志賦值。在串口接收命令的同時,在主控模塊中執(zhí)行工作模式切換模塊,根據(jù)小車工作模式標志值的不同切換到不同的工作模式,包括遙控運行、跟隨、循跡和避障等工作模式。其中電機驅(qū)動與PWM調(diào)速模塊,以及遙控命令解碼模塊是軟件設計的關鍵部分,下面將進行詳細介紹。
圖4 軟件組成模塊
系統(tǒng)采用電機驅(qū)動芯片L298進行電機驅(qū)動和PWM調(diào)速,L298的工作狀態(tài)如表1所示。由表1可知:當使能端ENA/ENB為高電平時,IN1~IN4的電平?jīng)Q定了電機工作狀態(tài)。
表1 L298工作狀態(tài)
如果使能端ENA/ENB一直為高電平,即高電平的占空比為100%時,電機的轉(zhuǎn)速最大,小車速度最快;如果施加在使能端ENA/ENB的是PWM脈沖,則改變PWM脈沖高電平的占空比,則電機的轉(zhuǎn)速就會改變,小車運行速度也會隨之改變;占空比越大,小車運行速度越快,反之越慢。施加在使能端ENA/ENB的PWM脈沖是采用定時器T0中斷實現(xiàn)的,代碼如下:
void T0_PwmInt() interrupt 1
{
static unsigned char num; //計定時次數(shù)變量
TH0=(65536-1000)/256; //重裝初值
TL0=(65536-1000)%256;
if(++num>100) num=0; //計數(shù)100次到周期T ,周期T=100ms
if(num PwmENA=1; //高電平周期T1 else PwmENA=0; //低電平周期T2 if(num PwmENB=1; //高電平周期T1 else PwmENB=0; //低電平周期T2 } 由以上程序代碼可知,定時中斷時間為1 ms,靜態(tài)變量num對中斷次數(shù)計數(shù),每中斷100次num清0,因此PWM周期為100 ms。全局變量TimeHA和TimeHB分別控制小車左右電機的PWM脈沖高電平的時間長度,TimeHA和TimeHB取值越大,電機轉(zhuǎn)速越快。 小車上的WIFI模塊接收到Android平臺發(fā)送的遙控命令后,通過串行接口將命令傳送給單片機,由單片機對遙控命令進行解碼。系統(tǒng)采用的串口通信協(xié)議如表2所示。 表2 串口通信協(xié)議 由表2可知,所有的小車控制命令都是以FFH開始和結(jié)束的,根據(jù)第一個字節(jié)的不同區(qū)分小車運動指令、舵機轉(zhuǎn)動指令和小車工作模式切換指令。對于小車運動指令,由第二個字節(jié)控制小車停止、前進、后退和左右轉(zhuǎn)等多種運動狀態(tài)。對于舵機轉(zhuǎn)動指令,由第二個字節(jié)控制水平或者垂直舵機轉(zhuǎn)動,第三個字節(jié)控制轉(zhuǎn)動的角度。對于工作模式切換指令,由第二個字節(jié)控制小車轉(zhuǎn)入不同的工作模式。遙控命令解碼模塊流程圖如圖5所示。 1)WIFI傳輸和視頻拍攝功能測試[12]:系統(tǒng)上電后,等待30 s系統(tǒng)啟動完畢,打開手機WIFI搜索功能,搜索到小車WIFI,兩者建立連接。向小車發(fā)送前進、后退、左右轉(zhuǎn)等命令,小車按照要求運行。小車在行駛的過程中,攝像頭實時拍攝,手機上實時顯示拍攝的畫面,拍攝的視頻清晰、流暢、幾乎無延遲。 2)舵機轉(zhuǎn)動功能測試:手機發(fā)送水平舵機轉(zhuǎn)動命令,水平舵機轉(zhuǎn)動,在水平方向轉(zhuǎn)動角度范圍為-90°~+90°;手機發(fā)送垂直舵機轉(zhuǎn)動命令,垂直舵機在垂直方向轉(zhuǎn)動,轉(zhuǎn)動角度范圍為0~90°。 圖5 遙控命令解碼模塊流程圖 3)跟隨功能測試:打開跟隨功能,人在前面行走,小車自動跟隨;人向左或者向右轉(zhuǎn)彎,小車也能跟隨。在跟隨的過程中,小車與人之間總是保持20 cm左右的距離。 4)循線功能測試:小車對白底上的黑線進行循跡,無論是橢圓形還是S形跑道,小車都能成功跑完全程,速度平均為35 cm/s,循跡流暢,沒有抖動。 5)避障功能測試:小車能夠?qū)崿F(xiàn)多種障礙物避障,比如方形、柱狀障礙物,以及常見的墻角、凹形障礙物都能成功避障,避障效果理想。 通過對小車的測試,結(jié)果表明:Android平臺與小車之間WIFI傳輸正常,實時拍攝視頻在手機上顯示清晰、無延遲;水平舵機轉(zhuǎn)動角度可達到-90°~+90°,垂直舵機轉(zhuǎn)動角度可達到0~90°,以方便攝像頭拍攝各個角度的視頻,以及便于超聲波模塊測量不同方向的障礙物距離;能通過Android平臺控制小車實現(xiàn)遙控運行、跟隨、循線、避障等工作模式,功能滿足設計要求,該小車在貨物搬運、小區(qū)巡邏、環(huán)境勘測等領域具有一定的實用價值。在后續(xù)的研究中可以考慮將拍攝的視頻由小車工作現(xiàn)場直接上傳到internet網(wǎng),以方便監(jiān)控中心的實時監(jiān)控和現(xiàn)場數(shù)據(jù)的進一步分析。 參考文獻: [1] 趙 津,朱三超.基于Arduino 單片機的智能避障小車設計[J].自動化與儀表, 2013(5): 1-4. [2] 張 洪,錢 勝,陳 路.多傳感器在確定智能小車安全區(qū)域中的應用[J].傳感器與微系統(tǒng), 2013,32(12):145-148. [3] 強 彥,葉文鵬,屈明月,等. 基于紅外避障的智能小車的設計[J]. 微電子學與計算機,2013,30(2):140-143. [4] 張 錚,張江寧,薛竹村,等.循跡避障滅火功能智能小車設計[J].實驗室研究與探索, 2016,35(11):141-145. [5] 趙涓涓,杜麒麟,屈明月,等. 智能小車的無支路循跡算法設計[J]. 計算機應用與軟件,2013,30(6):147-149. [6] 朱丹峰,葛主冉,林曉雷.基于Android平臺的無線遙控智能小車[J].電子器件,2013,36(3):408-412. [7] 湯莉莉,黃 偉.基于Android 手機藍牙控制的智能小車設計[J].現(xiàn)代電子技術, 2016, 39(12):132-134. [8] 黃玉水,黃 輝,周美娟,等.電磁導航式智能車的設計與實現(xiàn)[J].自動化儀表,2014,35(5):72-76. [9] 李曉娟,王雅慧,秦國慶.基于藍牙的智能小車循跡避障設計與實現(xiàn)[J].河南科技學院學報(自然科學版),2016,44(2):63-67. [10] 尚建榮,黃海燕,王福杰. 基于LPC1769 的智能小車設計[J].微電機, 2014,47(10):76-78. [11] 黨智乾.基于單片機的智能尋光避障小車的設計與實現(xiàn)[J].自動化技術與應用, 2015, 34(1):26-29. [12] 謝 檬,郭 霞.智能小車控制系統(tǒng)設計[J].傳感器與微系統(tǒng),2016,35(12):110-112.3.2 遙控命令解碼模塊
4 實驗結(jié)果
5 結(jié)束語