謝廷船,封 碩,康 靖
(長安大學 工程機械學院,陜西 西安710064)
目前智能車能應用到傳感、汽車電子、電氣、計算機、導航、信息等多個方向,在倉庫搬運、快遞投送、軍事偵查等領域都有廣泛應用[1]。通過人為遙控智能車,能夠讓其在惡劣環境下工作,如礦井勘探、廢墟救援等。
智能車控制包括有線控制和無線控制。為了實現車子姿態控制,有線控制是控制板比較有線遙控器反饋的各個模擬值大小來控制電機,而無線控制依靠的是控制板判別無線收發模塊傳輸的字符來對電機進行控制。有線控制信號傳輸速度快且易操作上手,但是線長限制了人機操作的自由,不便于遠程操作?,F有的WIFI控制是同一路由網絡下的上位機對下位機的遠程操控,但是上位機端的軟件開發和下位機與路由的連接較為困難。目前常用的主控板有51單片機和STM32,但是51單片機程序繁雜且需要手動編寫底層,而STM32上手難度較高。針對上述問題,本文選用底層包多、開發速度快、傳感器適配簡單的Arduino作為主控板[2-3],選用容易匹配、軟件開發難度低的藍牙模塊作為無線傳輸模塊[4],進行控制系統研究,完成了無線遙控系統的硬件調試、硬件設計和軟件設計,實現了遠程無線控制小車前進、后退、左轉、左自轉等功能。
本設計主要由主控板、藍牙通信模塊、手機、電機和電機驅動板組成,系統的設計框圖如圖1。手機藍牙APP負責發出指令,藍牙模塊接收到指令后再發送給主控板,主控板根據指令符來選擇智能車形行駛方式進而控制六個電機正反轉。串口調試軟件和串口監視器分別負責設置藍牙模塊的工作參數和讀取主控板接收到的指令符。

圖1 系統設計框圖
為了實現遠程控制智能車完成前進、后退等功能,需要同時無線控制車輪上的所有電機完成相應的正反轉。選擇六輪車作為實驗平臺,該車采用六輪六驅結構,配有懸架和減震機構,具有較強的爬坡能力,能夠在復雜路段平穩運行。考慮到需要同時控制六臺電機,所需IO口較多,所以主控板選用接口較多的Arduino Mega 2560板,其工作電壓為5 V,端口最大輸出電流為50 mA,不能滿足電機供電需求,所以額外選用3個12 V鋰電池組作為電機驅動板電源。電機選用的是堵轉扭矩為47 kg·cm,堵轉電流為2.5 A,額定驅動電壓為12 V的直流減速電機。電機驅動板選用艾思控的L289N,支持兩路輸出,輸入電壓7 V~24 V,每路額定電流7 A,ENA和ENB通過接收控制板脈沖調制端口的PWM信號控制左右電機轉速,接口IN1-IN4的電平高低控制電機正反轉。
通信部分選用藍牙模塊HC-05作為信號紐帶,它是一款高性能主從一體藍牙串口模塊,通過控制模塊外部引腳輸入電平,可以實現模塊工作狀態的動態轉換。當模塊處于命令響應工作模式時,能使用USB-TTL模塊連接電腦并利用AT命令對其進行參數設置。其中USB-TTL模塊和HC-05模塊引腳接線為:3.3V-VCC,GND-GND,RX-TX,TX-RX。利用電腦端藍牙串口助手sscom33對HC-05進行參數設置,步驟如下:
a.輸入AT,反饋OK,說明進入命令響應模式;
b.輸入AT+UART=9600,0,0,即設置波特率9600,停止位1位,無校驗位;
c.輸入AT+NAME=CDMHB,AT+PSWD=“1122”,即修改藍牙名稱為“CDMHB”,密碼為“1122”,防止外人連接;
d.輸入AT+ROLE=0,即設置為從模式工作。
設置完成后檢查設置結果,如圖2。

圖2 串口調試結果
手機端藍牙串口APP界面設計如圖3,圖中顯示已經連接上了HC-05。六輪智能車總共7種行駛方式,每種方式的按鈕對應著不同的字符。當主控板接收到藍牙模塊傳輸的字符改變時,車子行駛方式就會切換對應的模式。圖中左轉是小角度轉彎,即車的左右輪轉向仍是前進方向,但是右輪轉速大于左輪。左自轉是左輪后退,右輪前進,且轉速相同。

圖3 手機端軟件設計界面
選取前輪兩電機繪制硬件電路原理圖,如圖4。其中電源端子2可以用Arduino MEGA 2560的5 V接口代替,但是當傳感器較多時,應該設置獨立供電,這樣能夠保證穩定的工作電壓。為了防止電腦上傳代碼時串口被占用,藍牙模塊不接Serial 0口(RX0和TX0),其他口均可,圖4中連接的是Serial 1口。圖中電機控制包括兩部分,分別是轉速和轉向,Arduino板22和23引腳電平控制電機1轉向,2引腳輸出的PWM值控制其轉速。

圖4 硬件電路原理圖
系統程序設計主要包括電機驅動程序設計和切換模式程序設計。電機驅動程序主要是定義不同行駛方式下電機輸出狀態的,需要保證主控板接收到確切指令時,電機能夠及時切換狀態并且能夠持續工作。為了方便調用程序,在配置完主控板輸出口的高低電平后,設計了7種可調用的電機驅動函數,分別有前進函數forward()、后退函數back()、停止函數pause()、右轉函數right()、左轉函數left()、右自轉函數 right_rotation_h()、左自轉函數 left_rotation_h()。
手機端藍牙串口每個按鈕對應一個字符,點擊按鈕就會發送該字符,HC-05收到后傳給Arduino,此時Arduino會通過以下程序來調用電機驅動函數[5]。
將手機APP和藍牙模塊相連,藍牙模塊的燈閃爍頻率變慢證明連接成功。打開Arduino IDE監控窗口,再分別點擊手機APP界面的前進、后退、左自轉、右自轉、停、左轉、右轉按鈕,可以看到Arduino IDE串口監視器顯示 8、2、4、6、5、7、9,如圖 5,表明代碼和藍牙連接測試成功。圖6是搭建的六輪獨立驅動智能車實驗平臺,配置了太陽能充電板、電壓顯示器、GPS等設備。根據提出的設計方案,對實驗平臺進行代碼傳輸和藍牙匹配后,通過手機端的無線遙控,智能車實現了實時藍牙無線遙控,證明了本設計的可行性。