王明鑫
(無錫太湖學院 智能裝備工程學院,江蘇 無錫 214064)
無線控制技術的基礎來自無線技術。無線技術是一種運用人們看不見的頻段的波形來進行無線傳輸的技術。在日常生活中,無線波是無線傳輸的媒介或者說是無線傳輸的通道,并通常處于2.4 GHz。2.4 GHz是全世界公開通用使用的無線波頻段,藍牙技術的頻段也在此段,在此頻段下進行工作可獲得更大的使用范圍和更強的抗干擾能力[1]。
隨著科技的不斷進步,無線控制技術也在不斷地更新,起初無線技術運用于電報、電話等設施。無線技術剛剛被發掘時給人們帶來了巨大的“信息革命”。利用單片機技術實現無線遙控小車這一項研究其實早在時間長河中已經出現,而無人車被發明后不僅使得人們在危險的環境中大幅度減少工作時間,而且減少了接觸危險的次數,如在軍事偵察、勘測礦石、防病毒感染等巨大風險的環境。所以,無人車在這些環境中的調查能力有著非常快速的發展。在這股發展的熱潮中,無人車也從模型車發展到大型無人車,但國內的無線控制技術發展滯后,在很多方面比歐美一些國家落后,且國內公司在無線控制小車方向發展甚少,因此引出本文所設計的無線控制無人車控制系統。
本設計目的是利用單片機實現小車無線控制的功能,無線遙控技術是對被控制對象進行遠距離控制的技術[2]。無人車的無線控制有不同的模式,例如藍牙和Ps2手柄控制等,上述兩種無線控制模式的原理如圖1所示。

圖1 無線控制原理方框
本設計的無人車主要由STM32單片機電路模塊、直流電機模塊、無人車車模模塊、電機驅動模塊、無線控制模塊、電源模塊等組成。
(1)單片機電路模塊:采用了STM32芯片作為控制單元。STM32單片機具有成本較低、高性能、抗干擾能力強、資源豐富、低功耗和低電磁干擾的優點。在調試方面,可在軟件上修改程序。其硬件電路無需改變且支持在系統上直接編程調試,非常快捷方便。
(2)無線控制模塊:此課題主要使用手機App和Ps2手柄控制無人車,Ps2使用類似WiFi的功能實現無線控制,由Ps2手柄對WiFi接收器發出指令,經由接收器把指令信號傳輸給單片機。單片機通過接收指令在程序中運行,單片機識別指令對無人車的電機及舵機發送運行指令。手機App藍牙技術是使用藍牙模塊,以單片機為控制核心,下位機與Android手機終端通過藍牙無線傳輸技術實時通信[2]。使用手機App和藍牙模塊頻率對接,藍牙接收App發送的指令在轉串口操作后傳輸給STM32單片機,經由單片機實現App對無人車的指令控制。
(3)電機驅動電路模塊設計:直流電機由電刷、換向片、繞組線圈、一對主磁極組成。改變電機上方的直流電壓的極性可改變電機的轉向,控制電機的電壓大小則控制直流電機的轉速。單片機引腳輸出功率小不能實現上述功能,而電機驅動模塊可實現上述功能。
本文無人車結構由于車模構建復雜整體效果由平面二維圖展示,其余部件組建使用實物講解。無人車總體結構如圖2所示。本課題中無人車采用單直流電機驅動方式,取一個齒輪定位安裝在后輪連桿上與電機齒輪嚙合,使用一根連桿連接兩個后輪。電機運行時電機上的齒輪帶動連軸齒輪轉動,借助齒輪的轉動帶動連桿轉動,如圖3所示。將后輪裝在聯軸器上,如圖4所示,后輪帶動前輪轉動,控制小車前后運動(安裝后輪時先在連軸左右兩端安裝上軸承和聯軸器)。無人車轉向由前輪與舵機完成,先組裝兩個前輪,兩個軸承放入轉向杯中,大小軸承里外都放一個,并使軸承完全卡進轉向杯里。使用M4自鎖螺母將轉向杯和前輪安裝在一起,如圖5所示。將圖5的前輪安裝配件與前輪組裝完成,使用M2自鎖螺母安裝底盤前面的三角支架中,如圖6所示。另一前輪也與圖6的前輪安裝方式相同,安裝在三角支架中,隨后使用長桿將兩前輪連接,使用一根短桿把前輪與舵機連接,前輪的轉向組裝安裝完畢,如圖7所示。

圖2 小車車模二維

圖3 連軸組成

圖4 后輪與聯軸器安裝完成

圖5 前輪安裝配件

圖6 前輪安裝完成

圖7 無人車整體安裝
無人車實現的功能為無線遙控功能,對單片機主芯片的選型只需滿足無線控制模塊的接口的資源要求以及所用到的定時器的要基本資源要求即可,盡量降低成本,也可實現本文所需最低要求。經對比查找發現,STM32F103RCT6款芯片可滿足所需無線控制功能要求。STM32F103RCT6的特點是內部資源分配豐富,高性能、低成本、低功耗,因此在嵌入式領域具有廣泛的應用[1]。STM32F103RCT6芯片是一種嵌入式-微控制器的集成電路(IC)。該芯片為32位的微處理器,頻率速度有72 MHz,256 KB大小的程序存儲器容量,FLASH的存儲器類型,48 KB大小的RAM。此單片機的硬件資源除了這兩個存儲器外,還有2個基本定時器、4個通用定時器、2個高級定時器、2個DMA控制器(總共12個通道)、3個SPI、2個IIC、5個串口、1個USB、1個CAN、3個12位DAC、1個SDIO接口及51個通用I/O口(該芯片有64個接口其中有5對電源,51個I/O口和VBAT接口、BOOT0接口、NRST接口),對應本設計所需I/O口足夠[3]。
本設計實現無人車的無線控制,可使用紅外線遙控、無線電傳輸這兩種方式。紅外線這種無線控制方式基本成熟,且有弊端,為向新領域進發。本文使用無線控制的方式為無線電傳輸。本文的無線控制傳輸使用DX-BT18型號的藍牙傳輸模塊。DX-BT18是一款高性價比的無線藍牙串口模塊,工作2.4 GHz的工作頻率中,使用了Bluetooth 4.2 BR/EDG+BLE+2.4 GHz-Proprietary的藍牙協議。這個藍牙協議的傳輸速率很高,而且對功耗的需求極低。DX-BT18還可以通過UART實現模塊與手機之間的數據傳輸,從而實現使用手機無線控制無人車。這款藍牙模塊傳輸的信號也十分的穩定,有效范圍有40 m之遠,也就是說在40 m以內的藍牙傳輸文件和信號都不會有所丟失或者失真。DX-BT18藍牙模塊還有著很好的系統容錯性,它支持Windows、Linux、Android、iOS等系統。自帶屏蔽罩,防塵、防靜電,強大的保護模塊使得DX-BT18有更長使用壽命。如圖8所示,無人車上的藍牙模塊與手機配對,經由手機發出指令信息被藍牙模塊接收后再將接收到的指令串口傳輸給STM32單片機。單片機得到藍牙傳輸的信號做出相應動作,這是無人車使用藍牙技術進行無線控制的原理。

圖8 藍牙App通信過程
在無線控制的方式眾多,包括紅外線、無線電和藍牙等控制方式。此處選擇無線電控制方式,利用Ps2手柄及其接收器完成小車的無線控制。手柄控制是實現無線控制的接收發裝置。要想使此接收器正常工作,接收器至少具有6個端口,分別為:DI/DAT端口、DO/CMD端口、GND端口、VDD端口、CS/SEL端口和CLK端口。在CLK時鐘下,降沿完成數據的讀取和發送,通信過程如表1所示。

表1 數據讀取與發送過程
一般來說,單片機的引腳無法直接使用驅動電機,若直接使用單片機引腳與電機連接并進行驅動,電機一般會因為電流不夠大而無法被驅動,若加大單片機上的引腳輸出則會導致單片機被燒毀,所以需要電機驅動電路來進行電機的驅動。
本次選擇的電機驅動芯片為RZ7886芯片,由于此芯片成本低、功耗低,選此芯片。這次無人車設計使用單直流電機后輪驅動,前輪由舵機實現左右的轉向,而調節施加給直流電機的直流電壓大小就可以實現電機的轉速調節,而改變給電機的直流電機的極性,即可實現電機轉向的換向。
本課題采用直流電機驅動,電機功率需滿足無人車可驅動功率,無人車控制信號不連續,電機會有多次啟動的情況,故電機選型時需考慮電機過載和啟動能力。根據整體設計要求,電源供電為7.4 V,所選電機額定電壓也為7.4 V。
經查閱輪胎與地面摩擦效率為η=0.98。
經測量無人車運行時阻力約為F=3 N,一般電機運行轉速為1 000 r/min。由下公式(1)
P1=FV=1×3=3 W
(1)
其中,P1為無人車運行所需功率。
所以可求出電機所需功率:
(2)
所以選擇電機額定電壓為7.4 V,額定功率4 W,空載轉速1 000 r/min的電機。
此次使用舵機為TBS2701金屬數字舵機,該舵機可實現舵機兩用功能,且成本低、精確度高、功耗低。改舵機共引3條引線,分別為電源線、地線和信號線。本舵機采用的控制方式為PWM脈沖信號控制方式,大部分舵機轉動控制由程序的脈沖控制來控制舵機的轉動角度。本設計選用的舵機由直流電機、減速齒輪組、傳感器和控制電路組成的一套自動控制系統。發射信號,以指定輸出的旋轉角度。一般性來說,舵機都有最大旋轉角度(如180°)。舵機與普通直流電機的區別主要在于直流電機持續轉動,而舵機旋轉一個角度,對精確度要求高(數字舵機可切換模式,既可當直流電機使用也可當普通舵機使用)。直流電機無法傳達旋轉的角度,舵機可以。直流電機和舵機的用法不同,直流電機一般當動力的發生源,舵機用于控制某物體轉動精確角度(例如機器人關節轉動)。
基于上述硬件選型,做出可連接上述硬件和實現上述硬件功能的主控板電路,如圖9所示。

圖9 硬件電路原理
在編寫主程序時,需要先理清主程序的控制邏輯順序,畫出程序控制流程圖。這樣可以在編程的時候減少邏輯上的錯誤。
在圖11 Ps2程序控制流程圖中,了解Ps2控制無人車的運行順序流程,這對接下來的Ps2控制主程序編程有巨大的幫助。若Ps2手柄上的START按鍵被按下,那么不管現在的無人車的控制方式為無線電還是藍牙App控制,此時無人車的控制方式會轉化成藍牙模塊App手機控制的藍牙控制方式。下面判斷參考值,參考值為0時,此時為ps2手柄控制方式,接下來由switch語句讀取手柄的各個按鈕的實時狀況。上述4條語句為ps2手柄的方向按鍵控制。接下來4條語句為手柄搖桿上的方向控制。PSB_L1和PSB_L2則為小車前進與后退的速度調節。R1和R2則沒有進行設置。判斷左邊搖桿的y軸方向,使得左邊搖桿的y軸方向不對小車起作用,再判斷左邊搖桿的x方向的模擬量是否在0到110之間。如果小車的舵機左轉45°(45°),那么判斷左邊搖桿的x方向的模擬量是否在146到225之間。如果小車的角度會右轉45°(135°),那么隨著左邊搖桿回到中間時舵機的角度會回到90°。

圖10 Ps2程序控制流程
WiFi控制。通過使用WiFi通信模塊,智能終端與硬件開發板建立數據通信連接。在編寫藍牙App無線控制無人車的主程序時,需要先清理主程序的控制邏輯順序,畫出程序控制流程圖。在藍牙模塊的主程序編程的時候,減少邏輯上的錯誤。藍牙App無線控制無人車的程序流程如圖11所示。
在藍牙App控制程序流程圖中,可清楚看到,手機App和藍牙模塊的通信過程。這對藍牙App無線控制無人車,程序編程給出邏輯思路。
在App的無線控制需要了解藍牙的指令協議下,表2列出了在此次課題中所用使用的藍牙指令協議。

表2 藍牙指令協議
由上表2可知,當用戶使用手機App按下按鈕時,用戶的手機會發送藍牙能識別的指令,以此為基礎開始App主程序控制編程。
小車實現轉動需要使得舵機進行一個角度轉動,實現舵機的轉動需要編程一個PWM波,通過定時器完成。對舵機周期運行時間的配置,舵機運行周期20 ms,隨后將舵機的運行時間利用定時器分成8份,每2.5 ms為一份,隨后將舵機中一個周期的正脈沖設定數值給予定時器的一個周期,此時的脈沖為高電平。程序結束后,運行Servol函數,此時count1為2。運行Flip_GPIO_One函數使舵機運行20 ms以外電平為低電平。舵機PWM周期脈沖時間設定完成,count1又置為0,重新開始運行Servol函數。只需改變S_PWM的數值,就可以完成舵機轉動的角度。
電機的PWM控制編程基本與舵機的PWM編程原理相同。本課題直接使用了定時器的PWM通道來實現電機的PWM調速。電機轉速調節的設定值是PWM通道的脈沖正信號,此時反轉的信號電平設置為0(低電平),使得電機旋轉時不沖突。同理,當這個值為負時,電機反轉。此時,正轉的信號電平設置為0(低電平)。
本文研究的無線控制無人車設計中使用STM32單片機作為主芯片,利用STM32單片機及外圍引出的接口進行初始化配置并接入硬件外設,接著使用Ps2及手機藍牙App等信號發出設備,與小車上的接收設備進行無線連接,從而實現無人車的無線控制功能。本設計使用了單片機的掃描識別技術,通過硬件電路的具體應用方式以及無線接收設備的通信原理,對各個模塊進行了編程,然后在主程序編程中直接調用,完成了無人車無線控制設計的編程任務。經過實物測試可得出,本設計不僅安裝簡單、成本低,更重要的是使用2.4 GHz的無線通信頻率使得工作性能穩定,是實用的工程設計,但其他功能方面設計不足,后續改進可以升級其他功能。