謝廷船,封 碩,康 靖
(長安大學 工程機械學院,陜西 西安710064)
目前智能車能應用到傳感、汽車電子、電氣、計算機、導航、信息等多個方向,在倉庫搬運、快遞投送、軍事偵查等領(lǐng)域都有廣泛應用[1]。通過人為遙控智能車,能夠讓其在惡劣環(huán)境下工作,如礦井勘探、廢墟救援等。
智能車控制包括有線控制和無線控制。為了實現(xiàn)車子姿態(tài)控制,有線控制是控制板比較有線遙控器反饋的各個模擬值大小來控制電機,而無線控制依靠的是控制板判別無線收發(fā)模塊傳輸?shù)淖址麃韺﹄姍C進行控制。有線控制信號傳輸速度快且易操作上手,但是線長限制了人機操作的自由,不便于遠程操作。現(xiàn)有的WIFI控制是同一路由網(wǎng)絡下的上位機對下位機的遠程操控,但是上位機端的軟件開發(fā)和下位機與路由的連接較為困難。目前常用的主控板有51單片機和STM32,但是51單片機程序繁雜且需要手動編寫底層,而STM32上手難度較高。針對上述問題,本文選用底層包多、開發(fā)速度快、傳感器適配簡單的Arduino作為主控板[2-3],選用容易匹配、軟件開發(fā)難度低的藍牙模塊作為無線傳輸模塊[4],進行控制系統(tǒng)研究,完成了無線遙控系統(tǒng)的硬件調(diào)試、硬件設計和軟件設計,實現(xiàn)了遠程無線控制小車前進、后退、左轉(zhuǎn)、左自轉(zhuǎn)等功能。
本設計主要由主控板、藍牙通信模塊、手機、電機和電機驅(qū)動板組成,系統(tǒng)的設計框圖如圖1。手機藍牙APP負責發(fā)出指令,藍牙模塊接收到指令后再發(fā)送給主控板,主控板根據(jù)指令符來選擇智能車形行駛方式進而控制六個電機正反轉(zhuǎn)。串口調(diào)試軟件和串口監(jiān)視器分別負責設置藍牙模塊的工作參數(shù)和讀取主控板接收到的指令符。
圖1 系統(tǒng)設計框圖
為了實現(xiàn)遠程控制智能車完成前進、后退等功能,需要同時無線控制車輪上的所有電機完成相應的正反轉(zhuǎn)。選擇六輪車作為實驗平臺,該車采用六輪六驅(qū)結(jié)構(gòu),配有懸架和減震機構(gòu),具有較強的爬坡能力,能夠在復雜路段平穩(wěn)運行??紤]到需要同時控制六臺電機,所需IO口較多,所以主控板選用接口較多的Arduino Mega 2560板,其工作電壓為5 V,端口最大輸出電流為50 mA,不能滿足電機供電需求,所以額外選用3個12 V鋰電池組作為電機驅(qū)動板電源。電機選用的是堵轉(zhuǎn)扭矩為47 kg·cm,堵轉(zhuǎn)電流為2.5 A,額定驅(qū)動電壓為12 V的直流減速電機。電機驅(qū)動板選用艾思控的L289N,支持兩路輸出,輸入電壓7 V~24 V,每路額定電流7 A,ENA和ENB通過接收控制板脈沖調(diào)制端口的PWM信號控制左右電機轉(zhuǎn)速,接口IN1-IN4的電平高低控制電機正反轉(zhuǎn)。
通信部分選用藍牙模塊HC-05作為信號紐帶,它是一款高性能主從一體藍牙串口模塊,通過控制模塊外部引腳輸入電平,可以實現(xiàn)模塊工作狀態(tài)的動態(tài)轉(zhuǎn)換。當模塊處于命令響應工作模式時,能使用USB-TTL模塊連接電腦并利用AT命令對其進行參數(shù)設置。其中USB-TTL模塊和HC-05模塊引腳接線為:3.3V-VCC,GND-GND,RX-TX,TX-RX。利用電腦端藍牙串口助手sscom33對HC-05進行參數(shù)設置,步驟如下:
a.輸入AT,反饋OK,說明進入命令響應模式;
b.輸入AT+UART=9600,0,0,即設置波特率9600,停止位1位,無校驗位;
c.輸入AT+NAME=CDMHB,AT+PSWD=“1122”,即修改藍牙名稱為“CDMHB”,密碼為“1122”,防止外人連接;
d.輸入AT+ROLE=0,即設置為從模式工作。
設置完成后檢查設置結(jié)果,如圖2。
圖2 串口調(diào)試結(jié)果
手機端藍牙串口APP界面設計如圖3,圖中顯示已經(jīng)連接上了HC-05。六輪智能車總共7種行駛方式,每種方式的按鈕對應著不同的字符。當主控板接收到藍牙模塊傳輸?shù)淖址淖儠r,車子行駛方式就會切換對應的模式。圖中左轉(zhuǎn)是小角度轉(zhuǎn)彎,即車的左右輪轉(zhuǎn)向仍是前進方向,但是右輪轉(zhuǎn)速大于左輪。左自轉(zhuǎn)是左輪后退,右輪前進,且轉(zhuǎn)速相同。
圖3 手機端軟件設計界面
選取前輪兩電機繪制硬件電路原理圖,如圖4。其中電源端子2可以用Arduino MEGA 2560的5 V接口代替,但是當傳感器較多時,應該設置獨立供電,這樣能夠保證穩(wěn)定的工作電壓。為了防止電腦上傳代碼時串口被占用,藍牙模塊不接Serial 0口(RX0和TX0),其他口均可,圖4中連接的是Serial 1口。圖中電機控制包括兩部分,分別是轉(zhuǎn)速和轉(zhuǎn)向,Arduino板22和23引腳電平控制電機1轉(zhuǎn)向,2引腳輸出的PWM值控制其轉(zhuǎn)速。
圖4 硬件電路原理圖
系統(tǒng)程序設計主要包括電機驅(qū)動程序設計和切換模式程序設計。電機驅(qū)動程序主要是定義不同行駛方式下電機輸出狀態(tài)的,需要保證主控板接收到確切指令時,電機能夠及時切換狀態(tài)并且能夠持續(xù)工作。為了方便調(diào)用程序,在配置完主控板輸出口的高低電平后,設計了7種可調(diào)用的電機驅(qū)動函數(shù),分別有前進函數(shù)forward()、后退函數(shù)back()、停止函數(shù)pause()、右轉(zhuǎn)函數(shù)right()、左轉(zhuǎn)函數(shù)left()、右自轉(zhuǎn)函數(shù) right_rotation_h()、左自轉(zhuǎn)函數(shù) left_rotation_h()。
手機端藍牙串口每個按鈕對應一個字符,點擊按鈕就會發(fā)送該字符,HC-05收到后傳給Arduino,此時Arduino會通過以下程序來調(diào)用電機驅(qū)動函數(shù)[5]。
將手機APP和藍牙模塊相連,藍牙模塊的燈閃爍頻率變慢證明連接成功。打開Arduino IDE監(jiān)控窗口,再分別點擊手機APP界面的前進、后退、左自轉(zhuǎn)、右自轉(zhuǎn)、停、左轉(zhuǎn)、右轉(zhuǎn)按鈕,可以看到Arduino IDE串口監(jiān)視器顯示 8、2、4、6、5、7、9,如圖 5,表明代碼和藍牙連接測試成功。圖6是搭建的六輪獨立驅(qū)動智能車實驗平臺,配置了太陽能充電板、電壓顯示器、GPS等設備。根據(jù)提出的設計方案,對實驗平臺進行代碼傳輸和藍牙匹配后,通過手機端的無線遙控,智能車實現(xiàn)了實時藍牙無線遙控,證明了本設計的可行性。