陳維剛 ,朱天航 ,吝 毅
(長安大學(xué)工程機械學(xué)院,陜西 西安 710064)
近年來,人們的生活正在逐漸向智能化轉(zhuǎn)變,嵌入式技術(shù)及其他新技術(shù)的快速發(fā)展,使人們的生活和工作變得越來越智能化[1]。智能小車也叫作輪式機器人,以四足和六足最為常見。其以汽車電子技術(shù)為背景,綜合計算機、機械、控制以及傳感技術(shù)等多學(xué)科技術(shù),屬機器人的一個分支[2]。目前,智能小車能應(yīng)用于傳感、汽車電子、電氣、計算機、導(dǎo)航、信息等多個領(lǐng)域,在倉庫搬運、快遞投送、軍事偵察等方面都有廣泛應(yīng)用[3]。此外,通過人為的控制,智能小車可進入如礦井、廢墟等人們不易進入的地方工作。
智能小車控制包括有線控制和無線控制[4]。有線控制即通過有線通信技術(shù)來控制小車狀態(tài),這種方法安全穩(wěn)定,但設(shè)計要求較高且控制效果容易受到線長的制約;無線控制就是利用無線遙測遙控終端設(shè)備取代現(xiàn)場總線。目前,藍牙技術(shù)得到了空前廣泛的應(yīng)用,使用藍牙的產(chǎn)品非常多,如手機、電腦、汽車、游戲設(shè)備和醫(yī)療設(shè)備等[5]。在我國,手機的普及率已經(jīng)很高,通過移動設(shè)備實現(xiàn)遠程控制已成為滿足人們需求的一大方向[6]。通過Android平臺控制的小車具有遠程無線遙控、測距、自主避障等功能,能夠應(yīng)用于軍事偵察、排爆、救災(zāi)搶險探測、工程勘探、工農(nóng)業(yè)生產(chǎn)等領(lǐng)域,完成一些僅靠人力無法完成的任務(wù),因而具有一定的實際應(yīng)用意義。
智能小車由硬件部分和應(yīng)用軟件層組成,無線遙控小車的系統(tǒng)框圖如圖1所示。設(shè)計中硬件部分以Arduino Mega 2560單片機為控制核心,結(jié)合藍牙模塊、超聲波測距模塊、電機驅(qū)動模塊等進行硬件電路設(shè)計。軟件部分則由單片機軟件和Android手機平臺軟件構(gòu)成,Arduino控制板通過藍牙串口與上位機Android平臺通信,接收來自上位機的指令,控制板根據(jù)接收到的指令信息選擇執(zhí)行自主避障功能或手動控制功能,從而控制電機驅(qū)動板工作,進而控制電機的轉(zhuǎn)動,帶動車輪轉(zhuǎn)動,實現(xiàn)智能小車的前進、后退及轉(zhuǎn)向等功能。
圖1 總體設(shè)計框圖
本研究選擇六輪車作為實驗平臺,該車采用分布式六輪驅(qū)動結(jié)構(gòu),每個電機屬于獨立模塊,電機驅(qū)動板可以對每個電機進行單獨控制。這種方法既能實現(xiàn)對小車的靈活控制,又可以避免電機運轉(zhuǎn)相互之間的影響。智能小車硬件部分的設(shè)計主要包括電源、電機、舵機以及避障功能模塊等。Arduino Mega 2560控制板是整個系統(tǒng)的核心,控制電機驅(qū)動板和避障模塊工作;電機驅(qū)動板接收來自控制板的指令驅(qū)動直流減速電機,從而帶動車子運動;藍牙模塊作為Android手機平臺與Arduino之間通信的橋梁,負責(zé)將指令從上位機發(fā)送給下位機;避障模塊主要由超聲波測距傳感器、舵機以及蜂鳴器組成,共同完成主動避障及報警等功能;電源模塊是整個系統(tǒng)的動力來源,為整個系統(tǒng)供電。為了保證足夠的電源動力以及考慮到安全性,本次設(shè)計采用兩組18650充電鋰電池組分別給Arduino控制板和電機驅(qū)動模塊供電。
設(shè)計首先要實現(xiàn)遠程遙控小車運動,因此整個系統(tǒng)能夠正常工作需要單片機實現(xiàn)對電機驅(qū)動模塊的控制,同時還要實現(xiàn)單片機與Android平臺的通信功能。
考慮到單片機要實現(xiàn)以上功能,本研究采用Arduino開發(fā)板作為主控板。Arduino作為一款開源的單片機開發(fā)平臺,能夠通過C語言編程實現(xiàn)簡單的開發(fā)工作和項目工程,上手較容易,操作較簡單。本次設(shè)計選用性價比較高的Arduino Mega 2560控制板,該控制板只需要通過USB數(shù)據(jù)線連接電腦就能實現(xiàn)供電、程序下載和數(shù)據(jù)通信,用AC-DC適配器或者電池就可以驅(qū)動,還可以通過接口在外部連接不同的傳感器,從而豐富設(shè)計和開發(fā)功能。
電機作為智能小車的驅(qū)動裝置,其選擇合適與否對系統(tǒng)電路的正常運行起著重要作用[7]。L298N電機驅(qū)動板是一款接受高電壓的電機驅(qū)動器,工作電流大,啟動性能好,啟動轉(zhuǎn)矩大,可以驅(qū)動大功率的直流電機和步進電機等。L298N可以通過輸入端接口對電機進行直接控制,通過主控芯片的I/O輸入對其控制電平進行設(shè)定,就可為電機進行正轉(zhuǎn)反轉(zhuǎn)驅(qū)動,通過控制ENABLE引腳的電平高低可以實現(xiàn)PWM調(diào)速,滿足小車運行的速度快慢要求。L298N模塊操作簡單、穩(wěn)定性好、驅(qū)動能力強、可靠性高,可以滿足本次設(shè)計的要求。
通信模塊選用HC-05藍牙模塊。HC-05是一款性能較好的主從一體藍牙串口模塊,能夠?qū)崿F(xiàn)透明傳輸。當模塊處于命令響應(yīng)模式,即AT模式時,用戶可以向模塊發(fā)送各種AT指令,為模塊設(shè)定控制參數(shù)或發(fā)布控制命令,實現(xiàn)本設(shè)計通過藍牙通信手動控制小車的效果。
避障模塊主要由超聲波測距傳感器、舵機以及蜂鳴器組成。超聲波測距的原理是通過測量超聲波從發(fā)射出去到反射回來之間的時間差,結(jié)合超聲波的傳播速度來計算發(fā)射點與障礙物的實際距離。本次設(shè)計選用的是HC-SR04超聲波測距傳感器,它由超聲波發(fā)射器、超聲波接收器以及控制電路組成,該模塊可提供2 cm~400 cm的非接觸式距離感測功能,測距精度可達3 mm[8],測量角度為15°,檢測范圍大、測距距離精確、盲區(qū)小、性能穩(wěn)定,常用于機器人避障、公共安防及停車場監(jiān)測等場景,能夠滿足設(shè)計要求。舵機根據(jù)控制板的指令帶動超聲波傳感器進行0~180°范圍內(nèi)的重復(fù)搖擺運動,可以擴大超聲波傳感器的監(jiān)測范圍,提高避障的精準度。蜂鳴器模塊則是起到報警作用,當超聲波傳感器監(jiān)測到前方障礙物距離小于30 cm時,便將其信號引腳置于低電平狀態(tài),蜂鳴器就會發(fā)出警報聲,直到小車與障礙物之間處于安全距離。
在系統(tǒng)核心模塊的控制過程中,藍牙模塊接收Android平臺發(fā)送的控制命令,并將控制命令通過串口傳輸給單片機,單片機對收到的指令進行分析并作出響應(yīng)。
下位機工作流程如圖2所示。手機通過藍牙發(fā)送自主避障指令給下位機時,自主避障程序開始執(zhí)行,避障模塊開始工作,完成測距功能并通過單片機控制實現(xiàn)報警和避障功能;收到手動控制指令時,單片機控制電機的運行方向與速度,從而控制小車實現(xiàn)前進、后退、轉(zhuǎn)向及調(diào)速等功能。
圖2 下位機流程圖
避障功能主要由超聲波測距傳感器實現(xiàn)。超聲波是指頻率高于20 kHz的聲波,因其在介質(zhì)中傳播時遇到不同的界面將產(chǎn)生反射、繞射、折射的原理而被廣泛應(yīng)用于各行各業(yè)。超聲波測距模塊HC-SR04的兩個引腳觸發(fā)控制端Trig和接收端Echo能夠?qū)崿F(xiàn)測距功能??刂贫薚rig用來控制發(fā)出的超聲波信號,接收端Echo用來接收反射回來的超聲波信號。接收到返回信號后I/O口就會輸出一個高電平,模塊與前方障礙物的距離 =(高電平時間*聲速(340 m/s))/2。
避障程序流程如下所述:系統(tǒng)上電后,調(diào)用初始化函數(shù)對各個部件進行初始化設(shè)置,然后進入一個循環(huán)。首先調(diào)用超聲波測距函數(shù)對前方的障礙物進行測距,當檢測到小車與前方障礙物小于安全距離(即前文提到的30 cm)時,蜂鳴器發(fā)出警報。小車通過電機的速度調(diào)節(jié)及轉(zhuǎn)向避過障礙物,當前方開闊后繼續(xù)按照之前的速度前進。為了實現(xiàn)更加精準的避障功能,本研究使用一個舵機將HC-SR04模塊安裝在小車的車頭,舵機可以左右搖頭帶動超聲波模塊運動,以此實現(xiàn)更大范圍的測距,從而實現(xiàn)小車更加精確的避障功能??刂瓢迨盏缴衔粰C自主避障的指令后,舵機、超聲波傳感器和蜂鳴器分別執(zhí)行各自的程序,共同完成避障任務(wù)。
Arduino控制板與藍牙模塊之間通過串口通信[9],故串口通信在Arduino系統(tǒng)中具有十分重要的地位。Arduino單片機與藍牙模塊之間的通信是通過單片機的UART端口來實現(xiàn)的。首次使用藍牙模塊時,要將其初始化,然后使其處于命令響應(yīng)工作模式,使用USB-TTL模塊將藍牙模塊與電腦連接并利用AT命令對其進行參數(shù)設(shè)置。利用電腦端藍牙串口助手對HC-05進行參數(shù)設(shè)置,步驟如下。
1)發(fā)送AT,返回OK,表示執(zhí)行AT指令正常,進入命令響應(yīng)模式;
2)發(fā)送AT+UART=9600,設(shè)置波特率為9 600,停止位1位,無校驗位;
3)發(fā)送AT+NAME=HAHAHA,配置藍牙模塊名稱為HAHAHA;
4)發(fā)送AT+PSWD=1234,設(shè)置藍牙連接密碼為1234,防止被其他人誤連。
手機端藍牙APP操作界面如圖3所示。圖中下方顯示已經(jīng)連接HAHAHA,也就是HC-05藍牙模塊。從手機界面中可以看出智能小車總共設(shè)計了5種運行模式,包括自主避障和手動控制的四種運動方式,每種模式的按鈕對應(yīng)Arduino程序中不同的字符。當主控板接收到藍牙模塊傳輸?shù)淖址淖儠r,車子的行駛方式就會切換對應(yīng)的模式。
圖3 手機端藍牙APP操作界面
智能汽車系統(tǒng)中的電機是動力源,直流電機運行電流較大、干擾較多,小車采用調(diào)壓控制電機運行速度,因此選擇高效、可靠、可控的驅(qū)動電路及方式至關(guān)重要[10]。與當前常用的直流電機控制方式類似,本研究采用L298N電機驅(qū)動板和PWM調(diào)速來控制直流減速電機。當使能端ENA/ENB處于高電平時,可以通過改變輸入引腳IN1~IN4的電平來控制電機的運動狀態(tài),調(diào)速就是改變PWM脈沖高電平的占空比,電機的轉(zhuǎn)速就會改變,小車運行速度也會隨之改變;占空比越大,小車運行速度越快,反之越慢。
完成所有模塊的設(shè)計與調(diào)試后,將所有硬件搭建起來組裝成一個六輪車實驗平臺,如圖4所示。接著完成整個系統(tǒng)電路的連接以及單片機程序的上傳。將系統(tǒng)上電,各模塊初始化,打開手機端APP,與藍牙模塊連接。依次點擊手機藍牙APP操作界面上的前進、后退、左轉(zhuǎn)、右轉(zhuǎn)等按鍵,六輪車可以完成相應(yīng)的動作,點擊“自主”按鍵,小車開始自主運行并在遇到障礙物時通過蜂鳴器發(fā)出警報,小車改變運行方向及速度直到完全避開障礙物。實驗表明,本方案可以通過手機端的無線遙控對智能小車進行控制并且能夠?qū)崿F(xiàn)自主避障,證明了本設(shè)計的可行性。
圖4 智能車實驗平臺
本研究基于Arduino智能小車系統(tǒng)實現(xiàn)了Android手機端遙控行駛功能及自主避障功能,實現(xiàn)小車根據(jù)遠程指令,執(zhí)行前進、后退和轉(zhuǎn)向等動作。此種智能小車還可用于環(huán)境探測等多種用途,降低人們的工作危險系數(shù),解決惡劣環(huán)境下的勘探需求,具有一定的實用價值。本設(shè)計還存在許多不足之處,例如藍牙模塊通信距離有限、小車對環(huán)境感知不夠全面以及避障功能不夠完善等,日后還需不斷改進和完善,以在更廣闊的地方發(fā)揮其更大的作用。