, , ,,
(重慶師范大學 物理與電子工程學院,重慶 401331)
隨著科學技術的不斷發展,人工智能技術[1]與移動互聯網[2-3]的結合達到前所未有的高度。隨著無線網絡技術的發展,網絡游戲[4]的硬件將向無線信息終端大拓展,可以通過筆記本電腦或手機來進行網絡游戲。但傳統游戲方式缺乏真實體驗感。因此實現游戲的真實體驗感是目前玩家新的需求。
基于Android 平臺設計的互聯網智能小車已經越來越受到研究者的青睞,湯莉莉等人[5]把把藍牙、無線電子技術、單片機技術和Android移動終端平臺結合在一起,利用APP界面的“按鈕”、重力、語音分別控制改變小車運動狀態。但是小車控制有虛擬按鍵、重力、語音三種控制方式,導致Android手機客戶端的APP在Eclipse 開發環境中編程難度較大。董濤等人[6]以玩具小車為車體,STC89C52單片機為整個系統的控制核心,采用IRM-2638紅外一體接收頭接收控制信號實現對小車的控制,但是缺乏像APP那樣靈活的對小車進行控制。朱丹峰等人[7]用藍牙和WIFI兩種遙控方式,硬件上以STC12C5A60S2單片機為核心,其他用Android設備、WIFI模塊和小車藍牙模塊HC06、攝像頭模塊、直流電機驅動模塊等硬件平臺;軟件上用Android應用程序開發環境Eclipse進行上位機設備程序開發,從而實現了一種新型無線控制智能小車的方法,但是開發環境Eclipse中編程難度較大。
本設計采用MIT APP Inventer[8]進行手機APP界面設計及編程,開發方式采用圖形化編程,不需要開發者有JAVA編程經驗,有效減小了初學者開發APP的難度。系統以STM32F103C8T6單片機為核心,由HC06藍牙模塊、電機驅動模塊、電機電流監控模塊、舵機轉向模塊等組成。小車的控制信號通過操作手機由手機的重力傳感器[9]得到信號,再由藍牙[10]將控制信號傳給小車,最終達到利用藍牙無線通信技術讓虛擬游戲和傳統的玩具小車相結合進而控制小車,最終實現人機網絡游戲交互,體現游戲真實體驗感,為將來虛擬游戲提供設計和方案。
從整體設計來看,智能小車控制系統由電源模塊、控制器、電機驅動模塊、電機電流監控模塊、藍牙模塊、模擬舵機模塊、安卓手機APP組成。圖1為系統整體框圖。
安卓手機APP將手機的方位狀態轉化為數據幀通過藍牙發送到小車的藍牙模塊,小車的控制器接收藍牙模塊的數據幀之后,提取其中的指令來控制直流電機和模擬舵機,電流檢測模塊時刻監控電機電流。在電源模塊中,鋰電池經降壓模塊處理后為各個模塊提供所需要的電源。
本系統的設計目標如下:
1)通過控制手機的方向,來改變手機上APP畫布的小球坐標的位置,通過藍牙模塊來控制智能小車的轉向、轉速等;
2)在改變控制手機與智能小車的距離時,通過手機向智能小車發送指令,測量小車接收到指令的準確度;
3)智能小車在遇到故障時,通過電流監測模塊,能夠自動斷電,進而停止運行。
電源是整個電路的動力,其中需要供電的硬件電路模塊包括:藍牙模塊、單片機、電機驅動模塊、模擬舵機轉向模塊。如圖2所示。

圖2 系統電源電路
系統設計中采用7.2 V/2 000 mAh充電電池包作為整個系統電源。其中圖2MC7805CD2T電源芯片將7.2 V的電源電壓轉化為5 V電壓,為藍牙模塊、電機驅動模塊、模擬舵機轉向模塊供電。電路中AMS1117-3.3電源芯片將5 V電壓轉化為3.3 V電壓為單片機供電。經過對系統測試,單片機信號輸出穩定,直流電機工作正常。
在藍牙模塊設計中,采用 HC-06 無線模塊與單片機相連。HC-06 模塊采用 CSR 公司的主流藍牙芯片,遵循藍牙 V2.0協議標準,可以在 30 米范圍內實現無線通信,模塊尺寸為 3.57 cm×1.52 cm,共有 4 個引腳,即 VCC、GND、RXD、TXD,可以很方便地與手機等藍牙設備進行無線連接,在具有藍牙通信功能的設備中廣泛使用。HC-06藍牙通信模塊具有低功耗、低成本、高性能無線收發系統等特征。模塊與單片機通過串口互相通信,使用AT指令設置藍牙模塊的參數。在工作前,HC-06可以一直搜索上一次配對的從機,直到搜索完成并配對成功為止。
設計中采用智能手機APP通過藍牙模塊傳輸給單片機,根據設計要求綜合考慮,單片機采用STM公司的STM32F103C8T6芯片(STM32系列芯片特點在于高性能、低成本、低功耗,其分為3種不同作用的類型, STM32F101系列屬于基本型,其中包含了最基本的STM32芯片功能。STM32F105、STM32F107“互聯型”系列。STM32F103系列屬于增強型,增強型系列時鐘頻率達到72 MHz,是同類產品中性能最高的產品。STM32F103C8T6是F103系列單片機成本最低,封裝最小的單片機)來實現對小車的控制。單片機串口的RXD、TXD分別與藍牙串口的TXD、RXD引腳相連。單片機PA6、PA7與電機驅動模塊INTX連接,其中PA6與INT1、INT4相連,PA7與INT2、INT3相連。電機驅動芯片使能端由單片機PB12、PB13控制。
本設計所選用的電機型號RS-540RH/SH的直流微型電機。其中電機驅動模塊應用電路如圖3,采用L298N電機驅動芯片并聯擴流驅動電路的方式如圖4,增大電機驅動芯片的驅動電流,使小車可以獲得更高的速度。驅動芯片的輸出端加上四個二極管可以防止電機產生的感應電動勢損壞驅動芯片內部電路,有效的保護電路。電源旁邊加上一個大容量的電容是為了在電機啟動瞬間,提供瞬時電壓,避免系統電壓被拉低時,影響系統正常工作。

圖3 電機驅動電路

圖4 并聯擴流電路
在電機驅動模塊中,當驅動芯片的PB12、PB13為高電平時,使能驅動芯片;當PB12、PB13端口輸入低電平時,驅動芯片停止工作。PA5端口輸入高電平,PA7端口輸入低電平時,OUT1、OUT4端口輸出高電平,OUT2、OUT3端口輸出低電平,電機正轉;當驅動芯片的PA5端口輸入低電平,PA7端口輸入高電平時,OUT2、OUT3端口輸出高電平,OUT1、OUT4端口輸出低電平,電機反轉。
在電流監測模塊中,電機電流監控方案是基于驅動芯片L298N所設計,通過查閱L298N芯片手冊得知,流過電機的電流最終都會從ISEN A和ISENB兩個端口流出到地。在電流輸出端串聯一個采樣電阻,通過獲取采樣電阻的電壓進而計算出電機的電流值。采樣電阻的電壓采樣端接電壓跟隨器,再通過二階RC無源濾波濾除干擾信號,最后通過單片機內部模數轉換器(ADC)讀取電壓值。

圖5 電流監測電路
當小車行進過程中,因故障電機無法轉動,流過電機的電流將會迅速增大,控制器通過電機電流監控電路判斷電流過大立即使圖5中的PB12、PB13端口輸入低電平,使驅動芯片停止工作。
智能小車的轉向是由舵機控制的。本設計選用FutabaS3010舵機作為其控制器,其舵機能輸出力矩來驅動智能小車。圖6為舵機模塊電路,舵機共有三接口,分別為電源接口、信號接口PB7(圖6)以及地線。控制器 STM32F103的端口PB7直接與舵機的信號端口PB7(圖6)相連,由控制器端口PB7輸出的PWM波來控制舵機的轉向。該舵機為模擬電路控制舵機,信號處于高電平時長來控制舵機的轉向角度,進而改變前輪的朝向,從而實現小車的轉向。舵機的轉角只與高電平脈沖寬度有關,與占空比無關。

圖6 舵機模塊電路
本設計中的手機APP是谷歌公司致力于完全在線的可視化編程而打造的一項Andruino手機應用程序開發工具。該APP具有以下幾個特點:(1) 能夠在線開發;(2)可視化界面設計;(3)積木式編程界面;(4)MIT AppInventor平臺提供了在線模擬功能[11]。
基于上述優勢,本設計選用該APP,APP的設計分為兩個過程如圖7:界面的設計和功能的設計。其中界面的設計包括開機動畫如圖8和演示動畫9,首先在MIT APP Inventer2中添加一個項目,添加兩個屏幕,在開機動畫屏幕中拖兩個“水平布局”的組件放置在屏幕的上下方,并且使兩個組件寬度剛好充滿整個屏幕,高度適中。將視頻播放器拖進屏幕上方的水平布局中,使高度、寬度充滿水平布局,然后在視頻播放器的源文件中插入選好的視頻。在屏幕下方的水平布局中拖進去按鈕,按鈕的背景插入圖像,文本輸入“start”。再拖一個計時器,用來控制視頻的起始和終止。

圖7 邏輯設計圖

圖8 小車APP啟動界面

圖9 演示屏幕
在演示動畫屏幕中拖一個畫布組件,放在屏幕左上角并占整個屏幕的80%,再分別把方向傳感器、藍牙服務器拖在屏幕中,將球形精靈組件拖到畫布中,球形精靈的X、Y坐標分別設置為方向傳感器的傾斜角和翻轉角。在屏幕下方放“靈動小車……”按鈕,在按鈕下方并列放置兩個文本,其中左邊文本顯示傾斜角轉化為X方向數據,右邊文本顯示翻轉角轉化為Y方向數據。在屏幕右側拖4個按鍵,按鍵的文本分別為“Blue”、“Exit”、“Done”、“ CCD”,其中“Blue”表示APP與藍牙建立連接,“Exit”表示退出軟件界面。
主控器的設計軟件的開發環境是RealView MDK,本控制系統采用Keil MDK uVision keil5進行軟件設計,它不僅支持C語言,而且還支持在線仿真調試。這些功能都是經過uVision集成在一起,對于初學者來說是很容易入門的。
以下設計是基于上述特點所選擇的開發環境,藍牙模塊與控制器采用串口方式通信,程序配置為串口中斷模式。當串口接收到數據時,將串口接收到的數據從第一位開始依次存在一個數組中。當串口接收到的字符為換行符’ ’時,表示指令已經接收完畢,下一個數據又從數組的第一位開始存。指令接收完成之后,程序提取數組中的指令執行對應的操作。指令數據據幀格式及其含義如表1所示。

表1 數據幀格式及其含義
上述表1中從左到右看到各個藍牙指令碼的含義,“AB01”表示用戶密碼,“CQNU0001”表示用戶名,“A”表示動作命令,“090”表示轉向角度值,“50”表示速度值。
對于普通直流電機,其控制方法比較簡單,可采用PWM調速方法。PWM調速就是使加在直流電機兩端的電壓為方波形式,加在電機兩端的電壓就在VLoad和0 V之間不停的跳變,加在電機兩端的平均電壓Uo=Th/(Th+Tl)VLoad,可以通過調整PWM的占空比來改變Th和Tl的比值。這樣就可以通過PWM調節加在電機兩端的平均電壓,從而改變電機的轉速。
當驅動芯片輸入端PA5(圖3)輸入PWM信號,輸入端PA7(圖3)為低電平,電機正轉;當驅動芯片輸入端PA7(圖3)輸入PWM信號,輸入端PA5(圖3)為低電平,電機反轉。電機的轉速由PWM信號的占空比決定,也就是指令中的速度值。當指令速度值為50時,程序將PWM信號占空比設置為50%,電機轉速為最大速度的50%。PWM信號的頻率不能過高,過高會因為電機驅動芯片內部開關響應延遲而不能改變電機轉速。本設計中PWM脈沖信號的頻率為50 Hz。
舵機的控制信號是一個脈寬調制(PWM)信號,所以很方便的和數字系統進行接口,只要能產生標準的控制信號的數字設備都可以用來控制舵機。
本設計采用的核心控制器是STM32F103單片機,通過單片機的輸出端PB7(圖6)與舵機控制接口直接相連接。在端口PB7(圖6)為高電平(通過延時函數來控制)期間時,舵機的轉向就從0°~180°之間變化。根據舵機(Futaba S3010)數據手冊,舵機接口的高電平持續時間與轉向角有如下關系:當高電平的持續時間為1 520 μs時,舵機的轉向一定處于最中間的位置;當高電平的持續時間為920 μs時,舵機的轉向一定處于最左的位置;當高電平的持續時間為2 120 μs時,舵機的轉向一定處于最右的位置。隨著PB7(圖6)端口的高電平的持續時間從920 μs~2 120 μs變化時,舵機的轉向也從0°到180°之間相應變化,進而達到控制舵機的轉向。
如圖10所示為APP控制智能小車正面與側面的實物圖,該實物圖以STM32F103C8T6單片機為控制核心,由HC06藍牙模塊、電機驅動模塊、電機電流監控模塊、舵機轉向模塊等硬件模塊組合而成。

圖10 小車實物圖
在搭建好如圖10所示硬件平臺的條件下,接著就是在Android手機上啟動MIT App Inventor應用程序,軟件的控制界面如圖11所示。從圖11的(a)、(b)、(c)、(d)界面圖中均可以看到一個小球,當小球處于界面不同位置時,相應的手機APP的重力感應方向不一樣,進而控制智能小車的不同運動狀態。同時也可以從圖11中看到標有坐標數值的標志,取圖11(a)中的坐標數值(75 80)為例,其中“75”表示小球前輪轉向角度為75°,這個轉向角度是由舵機控制的,控制著智能小車的轉向,“80”表示小車后輪速度占最大的百分比為80%。結合圖11界面中的紅色小球和坐標數值的標志,就可以控制智能小車所需要達到速度和轉向。在控制小車之前,需要觸摸圖11(a)中的“BLU”按鈕,智能小車與手機APP之間建立連接(“BLU”的功能在3.1、3.2中已詳細表述)。當手機的傾斜方向為右前方時,APP畫布中的小球在畫布的左上角,此時智能小車向右前方行駛。根據圖10中的四種界面情況,智能小車的運動狀態詳細總結在表2中。智能小車運動狀態的控制基本已實現。

圖11 小車運動方向及坐標數值監控

表2 手機傾斜方向與小車運動狀態關系
以下是在空曠的足球場上改變手機APP和智能小車的距離時,測試智能小車從手機APP發送指令數與智能小車接收到指令數的準確性,測試的結果如表3,其中在20(20)中,“20”表示手機APP發出的指令數,“(20)”表示智能小車在手機APP發送指令數為20時,接收到指令正確數為20。從表3分析可以看出,在手機APP與智能小車相距為0~30 m范圍內,智能小車接收指令碼基本無誤。但在距離為36 m及以上時,智能小車出現接收指令碼錯誤現象。但從表3整體來看,在距離為40 m范圍內,智能小車接收到手機APP指令的準確率高達97.1%,隨著距離的增加,在距離為48 m時,在手機APP手機發送20個指令的條件下,智能小車只能接收到2個正確指令,可見控制范圍明顯受限。但由于軟件設計存在延時,設計的算法未能很好地實現對數據的處理和發送,因此本設計還可進一步優化,但不會影響小車的運動狀態,最終能達到預期的要求。

表3 不同距離控制指令準確性測試
本設計采用MIT APP Inventer進行手機APP界面設計及編程,論述了整個設計軟硬件的實現過程,經過測試,設計的上位機軟件能夠通過手機終端順利安裝并流暢運行,實時、無錯的控制小車的運動狀態,用手機和軟件的形式代替玩具業的遙控器,最終實現人機網絡游戲交互,實現游戲真實體驗感,為將來虛擬游戲提供設計和方案。