, , ,,
(重慶師范大學(xué) 物理與電子工程學(xué)院,重慶 401331)
隨著科學(xué)技術(shù)的不斷發(fā)展,人工智能技術(shù)[1]與移動互聯(lián)網(wǎng)[2-3]的結(jié)合達(dá)到前所未有的高度。隨著無線網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)游戲[4]的硬件將向無線信息終端大拓展,可以通過筆記本電腦或手機(jī)來進(jìn)行網(wǎng)絡(luò)游戲。但傳統(tǒng)游戲方式缺乏真實(shí)體驗(yàn)感。因此實(shí)現(xiàn)游戲的真實(shí)體驗(yàn)感是目前玩家新的需求。
基于Android 平臺設(shè)計(jì)的互聯(lián)網(wǎng)智能小車已經(jīng)越來越受到研究者的青睞,湯莉莉等人[5]把把藍(lán)牙、無線電子技術(shù)、單片機(jī)技術(shù)和Android移動終端平臺結(jié)合在一起,利用APP界面的“按鈕”、重力、語音分別控制改變小車運(yùn)動狀態(tài)。但是小車控制有虛擬按鍵、重力、語音三種控制方式,導(dǎo)致Android手機(jī)客戶端的APP在Eclipse 開發(fā)環(huán)境中編程難度較大。董濤等人[6]以玩具小車為車體,STC89C52單片機(jī)為整個系統(tǒng)的控制核心,采用IRM-2638紅外一體接收頭接收控制信號實(shí)現(xiàn)對小車的控制,但是缺乏像APP那樣靈活的對小車進(jìn)行控制。朱丹峰等人[7]用藍(lán)牙和WIFI兩種遙控方式,硬件上以STC12C5A60S2單片機(jī)為核心,其他用Android設(shè)備、WIFI模塊和小車藍(lán)牙模塊HC06、攝像頭模塊、直流電機(jī)驅(qū)動模塊等硬件平臺;軟件上用Android應(yīng)用程序開發(fā)環(huán)境Eclipse進(jìn)行上位機(jī)設(shè)備程序開發(fā),從而實(shí)現(xiàn)了一種新型無線控制智能小車的方法,但是開發(fā)環(huán)境Eclipse中編程難度較大。
本設(shè)計(jì)采用MIT APP Inventer[8]進(jìn)行手機(jī)APP界面設(shè)計(jì)及編程,開發(fā)方式采用圖形化編程,不需要開發(fā)者有JAVA編程經(jīng)驗(yàn),有效減小了初學(xué)者開發(fā)APP的難度。系統(tǒng)以STM32F103C8T6單片機(jī)為核心,由HC06藍(lán)牙模塊、電機(jī)驅(qū)動模塊、電機(jī)電流監(jiān)控模塊、舵機(jī)轉(zhuǎn)向模塊等組成。小車的控制信號通過操作手機(jī)由手機(jī)的重力傳感器[9]得到信號,再由藍(lán)牙[10]將控制信號傳給小車,最終達(dá)到利用藍(lán)牙無線通信技術(shù)讓虛擬游戲和傳統(tǒng)的玩具小車相結(jié)合進(jìn)而控制小車,最終實(shí)現(xiàn)人機(jī)網(wǎng)絡(luò)游戲交互,體現(xiàn)游戲真實(shí)體驗(yàn)感,為將來虛擬游戲提供設(shè)計(jì)和方案。
從整體設(shè)計(jì)來看,智能小車控制系統(tǒng)由電源模塊、控制器、電機(jī)驅(qū)動模塊、電機(jī)電流監(jiān)控模塊、藍(lán)牙模塊、模擬舵機(jī)模塊、安卓手機(jī)APP組成。圖1為系統(tǒng)整體框圖。
安卓手機(jī)APP將手機(jī)的方位狀態(tài)轉(zhuǎn)化為數(shù)據(jù)幀通過藍(lán)牙發(fā)送到小車的藍(lán)牙模塊,小車的控制器接收藍(lán)牙模塊的數(shù)據(jù)幀之后,提取其中的指令來控制直流電機(jī)和模擬舵機(jī),電流檢測模塊時刻監(jiān)控電機(jī)電流。在電源模塊中,鋰電池經(jīng)降壓模塊處理后為各個模塊提供所需要的電源。
本系統(tǒng)的設(shè)計(jì)目標(biāo)如下:
1)通過控制手機(jī)的方向,來改變手機(jī)上APP畫布的小球坐標(biāo)的位置,通過藍(lán)牙模塊來控制智能小車的轉(zhuǎn)向、轉(zhuǎn)速等;
2)在改變控制手機(jī)與智能小車的距離時,通過手機(jī)向智能小車發(fā)送指令,測量小車接收到指令的準(zhǔn)確度;
3)智能小車在遇到故障時,通過電流監(jiān)測模塊,能夠自動斷電,進(jìn)而停止運(yùn)行。
電源是整個電路的動力,其中需要供電的硬件電路模塊包括:藍(lán)牙模塊、單片機(jī)、電機(jī)驅(qū)動模塊、模擬舵機(jī)轉(zhuǎn)向模塊。如圖2所示。
圖2 系統(tǒng)電源電路
系統(tǒng)設(shè)計(jì)中采用7.2 V/2 000 mAh充電電池包作為整個系統(tǒng)電源。其中圖2MC7805CD2T電源芯片將7.2 V的電源電壓轉(zhuǎn)化為5 V電壓,為藍(lán)牙模塊、電機(jī)驅(qū)動模塊、模擬舵機(jī)轉(zhuǎn)向模塊供電。電路中AMS1117-3.3電源芯片將5 V電壓轉(zhuǎn)化為3.3 V電壓為單片機(jī)供電。經(jīng)過對系統(tǒng)測試,單片機(jī)信號輸出穩(wěn)定,直流電機(jī)工作正常。
在藍(lán)牙模塊設(shè)計(jì)中,采用 HC-06 無線模塊與單片機(jī)相連。HC-06 模塊采用 CSR 公司的主流藍(lán)牙芯片,遵循藍(lán)牙 V2.0協(xié)議標(biāo)準(zhǔn),可以在 30 米范圍內(nèi)實(shí)現(xiàn)無線通信,模塊尺寸為 3.57 cm×1.52 cm,共有 4 個引腳,即 VCC、GND、RXD、TXD,可以很方便地與手機(jī)等藍(lán)牙設(shè)備進(jìn)行無線連接,在具有藍(lán)牙通信功能的設(shè)備中廣泛使用。HC-06藍(lán)牙通信模塊具有低功耗、低成本、高性能無線收發(fā)系統(tǒng)等特征。模塊與單片機(jī)通過串口互相通信,使用AT指令設(shè)置藍(lán)牙模塊的參數(shù)。在工作前,HC-06可以一直搜索上一次配對的從機(jī),直到搜索完成并配對成功為止。
設(shè)計(jì)中采用智能手機(jī)APP通過藍(lán)牙模塊傳輸給單片機(jī),根據(jù)設(shè)計(jì)要求綜合考慮,單片機(jī)采用STM公司的STM32F103C8T6芯片(STM32系列芯片特點(diǎn)在于高性能、低成本、低功耗,其分為3種不同作用的類型, STM32F101系列屬于基本型,其中包含了最基本的STM32芯片功能。STM32F105、STM32F107“互聯(lián)型”系列。STM32F103系列屬于增強(qiáng)型,增強(qiáng)型系列時鐘頻率達(dá)到72 MHz,是同類產(chǎn)品中性能最高的產(chǎn)品。STM32F103C8T6是F103系列單片機(jī)成本最低,封裝最小的單片機(jī))來實(shí)現(xiàn)對小車的控制。單片機(jī)串口的RXD、TXD分別與藍(lán)牙串口的TXD、RXD引腳相連。單片機(jī)PA6、PA7與電機(jī)驅(qū)動模塊INTX連接,其中PA6與INT1、INT4相連,PA7與INT2、INT3相連。電機(jī)驅(qū)動芯片使能端由單片機(jī)PB12、PB13控制。
本設(shè)計(jì)所選用的電機(jī)型號RS-540RH/SH的直流微型電機(jī)。其中電機(jī)驅(qū)動模塊應(yīng)用電路如圖3,采用L298N電機(jī)驅(qū)動芯片并聯(lián)擴(kuò)流驅(qū)動電路的方式如圖4,增大電機(jī)驅(qū)動芯片的驅(qū)動電流,使小車可以獲得更高的速度。驅(qū)動芯片的輸出端加上四個二極管可以防止電機(jī)產(chǎn)生的感應(yīng)電動勢損壞驅(qū)動芯片內(nèi)部電路,有效的保護(hù)電路。電源旁邊加上一個大容量的電容是為了在電機(jī)啟動瞬間,提供瞬時電壓,避免系統(tǒng)電壓被拉低時,影響系統(tǒng)正常工作。
圖3 電機(jī)驅(qū)動電路
圖4 并聯(lián)擴(kuò)流電路
在電機(jī)驅(qū)動模塊中,當(dāng)驅(qū)動芯片的PB12、PB13為高電平時,使能驅(qū)動芯片;當(dāng)PB12、PB13端口輸入低電平時,驅(qū)動芯片停止工作。PA5端口輸入高電平,PA7端口輸入低電平時,OUT1、OUT4端口輸出高電平,OUT2、OUT3端口輸出低電平,電機(jī)正轉(zhuǎn);當(dāng)驅(qū)動芯片的PA5端口輸入低電平,PA7端口輸入高電平時,OUT2、OUT3端口輸出高電平,OUT1、OUT4端口輸出低電平,電機(jī)反轉(zhuǎn)。
在電流監(jiān)測模塊中,電機(jī)電流監(jiān)控方案是基于驅(qū)動芯片L298N所設(shè)計(jì),通過查閱L298N芯片手冊得知,流過電機(jī)的電流最終都會從ISEN A和ISENB兩個端口流出到地。在電流輸出端串聯(lián)一個采樣電阻,通過獲取采樣電阻的電壓進(jìn)而計(jì)算出電機(jī)的電流值。采樣電阻的電壓采樣端接電壓跟隨器,再通過二階RC無源濾波濾除干擾信號,最后通過單片機(jī)內(nèi)部模數(shù)轉(zhuǎn)換器(ADC)讀取電壓值。
圖5 電流監(jiān)測電路
當(dāng)小車行進(jìn)過程中,因故障電機(jī)無法轉(zhuǎn)動,流過電機(jī)的電流將會迅速增大,控制器通過電機(jī)電流監(jiān)控電路判斷電流過大立即使圖5中的PB12、PB13端口輸入低電平,使驅(qū)動芯片停止工作。
智能小車的轉(zhuǎn)向是由舵機(jī)控制的。本設(shè)計(jì)選用FutabaS3010舵機(jī)作為其控制器,其舵機(jī)能輸出力矩來驅(qū)動智能小車。圖6為舵機(jī)模塊電路,舵機(jī)共有三接口,分別為電源接口、信號接口PB7(圖6)以及地線??刂破?STM32F103的端口PB7直接與舵機(jī)的信號端口PB7(圖6)相連,由控制器端口PB7輸出的PWM波來控制舵機(jī)的轉(zhuǎn)向。該舵機(jī)為模擬電路控制舵機(jī),信號處于高電平時長來控制舵機(jī)的轉(zhuǎn)向角度,進(jìn)而改變前輪的朝向,從而實(shí)現(xiàn)小車的轉(zhuǎn)向。舵機(jī)的轉(zhuǎn)角只與高電平脈沖寬度有關(guān),與占空比無關(guān)。
圖6 舵機(jī)模塊電路
本設(shè)計(jì)中的手機(jī)APP是谷歌公司致力于完全在線的可視化編程而打造的一項(xiàng)Andruino手機(jī)應(yīng)用程序開發(fā)工具。該APP具有以下幾個特點(diǎn):(1) 能夠在線開發(fā);(2)可視化界面設(shè)計(jì);(3)積木式編程界面;(4)MIT AppInventor平臺提供了在線模擬功能[11]。
基于上述優(yōu)勢,本設(shè)計(jì)選用該APP,APP的設(shè)計(jì)分為兩個過程如圖7:界面的設(shè)計(jì)和功能的設(shè)計(jì)。其中界面的設(shè)計(jì)包括開機(jī)動畫如圖8和演示動畫9,首先在MIT APP Inventer2中添加一個項(xiàng)目,添加兩個屏幕,在開機(jī)動畫屏幕中拖兩個“水平布局”的組件放置在屏幕的上下方,并且使兩個組件寬度剛好充滿整個屏幕,高度適中。將視頻播放器拖進(jìn)屏幕上方的水平布局中,使高度、寬度充滿水平布局,然后在視頻播放器的源文件中插入選好的視頻。在屏幕下方的水平布局中拖進(jìn)去按鈕,按鈕的背景插入圖像,文本輸入“start”。再拖一個計(jì)時器,用來控制視頻的起始和終止。
圖7 邏輯設(shè)計(jì)圖
圖8 小車APP啟動界面
圖9 演示屏幕
在演示動畫屏幕中拖一個畫布組件,放在屏幕左上角并占整個屏幕的80%,再分別把方向傳感器、藍(lán)牙服務(wù)器拖在屏幕中,將球形精靈組件拖到畫布中,球形精靈的X、Y坐標(biāo)分別設(shè)置為方向傳感器的傾斜角和翻轉(zhuǎn)角。在屏幕下方放“靈動小車……”按鈕,在按鈕下方并列放置兩個文本,其中左邊文本顯示傾斜角轉(zhuǎn)化為X方向數(shù)據(jù),右邊文本顯示翻轉(zhuǎn)角轉(zhuǎn)化為Y方向數(shù)據(jù)。在屏幕右側(cè)拖4個按鍵,按鍵的文本分別為“Blue”、“Exit”、“Done”、“ CCD”,其中“Blue”表示APP與藍(lán)牙建立連接,“Exit”表示退出軟件界面。
主控器的設(shè)計(jì)軟件的開發(fā)環(huán)境是RealView MDK,本控制系統(tǒng)采用Keil MDK uVision keil5進(jìn)行軟件設(shè)計(jì),它不僅支持C語言,而且還支持在線仿真調(diào)試。這些功能都是經(jīng)過uVision集成在一起,對于初學(xué)者來說是很容易入門的。
以下設(shè)計(jì)是基于上述特點(diǎn)所選擇的開發(fā)環(huán)境,藍(lán)牙模塊與控制器采用串口方式通信,程序配置為串口中斷模式。當(dāng)串口接收到數(shù)據(jù)時,將串口接收到的數(shù)據(jù)從第一位開始依次存在一個數(shù)組中。當(dāng)串口接收到的字符為換行符’ ’時,表示指令已經(jīng)接收完畢,下一個數(shù)據(jù)又從數(shù)組的第一位開始存。指令接收完成之后,程序提取數(shù)組中的指令執(zhí)行對應(yīng)的操作。指令數(shù)據(jù)據(jù)幀格式及其含義如表1所示。
表1 數(shù)據(jù)幀格式及其含義
上述表1中從左到右看到各個藍(lán)牙指令碼的含義,“AB01”表示用戶密碼,“CQNU0001”表示用戶名,“A”表示動作命令,“090”表示轉(zhuǎn)向角度值,“50”表示速度值。
對于普通直流電機(jī),其控制方法比較簡單,可采用PWM調(diào)速方法。PWM調(diào)速就是使加在直流電機(jī)兩端的電壓為方波形式,加在電機(jī)兩端的電壓就在VLoad和0 V之間不停的跳變,加在電機(jī)兩端的平均電壓Uo=Th/(Th+Tl)VLoad,可以通過調(diào)整PWM的占空比來改變Th和Tl的比值。這樣就可以通過PWM調(diào)節(jié)加在電機(jī)兩端的平均電壓,從而改變電機(jī)的轉(zhuǎn)速。
當(dāng)驅(qū)動芯片輸入端PA5(圖3)輸入PWM信號,輸入端PA7(圖3)為低電平,電機(jī)正轉(zhuǎn);當(dāng)驅(qū)動芯片輸入端PA7(圖3)輸入PWM信號,輸入端PA5(圖3)為低電平,電機(jī)反轉(zhuǎn)。電機(jī)的轉(zhuǎn)速由PWM信號的占空比決定,也就是指令中的速度值。當(dāng)指令速度值為50時,程序?qū)WM信號占空比設(shè)置為50%,電機(jī)轉(zhuǎn)速為最大速度的50%。PWM信號的頻率不能過高,過高會因?yàn)殡姍C(jī)驅(qū)動芯片內(nèi)部開關(guān)響應(yīng)延遲而不能改變電機(jī)轉(zhuǎn)速。本設(shè)計(jì)中PWM脈沖信號的頻率為50 Hz。
舵機(jī)的控制信號是一個脈寬調(diào)制(PWM)信號,所以很方便的和數(shù)字系統(tǒng)進(jìn)行接口,只要能產(chǎn)生標(biāo)準(zhǔn)的控制信號的數(shù)字設(shè)備都可以用來控制舵機(jī)。
本設(shè)計(jì)采用的核心控制器是STM32F103單片機(jī),通過單片機(jī)的輸出端PB7(圖6)與舵機(jī)控制接口直接相連接。在端口PB7(圖6)為高電平(通過延時函數(shù)來控制)期間時,舵機(jī)的轉(zhuǎn)向就從0°~180°之間變化。根據(jù)舵機(jī)(Futaba S3010)數(shù)據(jù)手冊,舵機(jī)接口的高電平持續(xù)時間與轉(zhuǎn)向角有如下關(guān)系:當(dāng)高電平的持續(xù)時間為1 520 μs時,舵機(jī)的轉(zhuǎn)向一定處于最中間的位置;當(dāng)高電平的持續(xù)時間為920 μs時,舵機(jī)的轉(zhuǎn)向一定處于最左的位置;當(dāng)高電平的持續(xù)時間為2 120 μs時,舵機(jī)的轉(zhuǎn)向一定處于最右的位置。隨著PB7(圖6)端口的高電平的持續(xù)時間從920 μs~2 120 μs變化時,舵機(jī)的轉(zhuǎn)向也從0°到180°之間相應(yīng)變化,進(jìn)而達(dá)到控制舵機(jī)的轉(zhuǎn)向。
如圖10所示為APP控制智能小車正面與側(cè)面的實(shí)物圖,該實(shí)物圖以STM32F103C8T6單片機(jī)為控制核心,由HC06藍(lán)牙模塊、電機(jī)驅(qū)動模塊、電機(jī)電流監(jiān)控模塊、舵機(jī)轉(zhuǎn)向模塊等硬件模塊組合而成。
圖10 小車實(shí)物圖
在搭建好如圖10所示硬件平臺的條件下,接著就是在Android手機(jī)上啟動MIT App Inventor應(yīng)用程序,軟件的控制界面如圖11所示。從圖11的(a)、(b)、(c)、(d)界面圖中均可以看到一個小球,當(dāng)小球處于界面不同位置時,相應(yīng)的手機(jī)APP的重力感應(yīng)方向不一樣,進(jìn)而控制智能小車的不同運(yùn)動狀態(tài)。同時也可以從圖11中看到標(biāo)有坐標(biāo)數(shù)值的標(biāo)志,取圖11(a)中的坐標(biāo)數(shù)值(75 80)為例,其中“75”表示小球前輪轉(zhuǎn)向角度為75°,這個轉(zhuǎn)向角度是由舵機(jī)控制的,控制著智能小車的轉(zhuǎn)向,“80”表示小車后輪速度占最大的百分比為80%。結(jié)合圖11界面中的紅色小球和坐標(biāo)數(shù)值的標(biāo)志,就可以控制智能小車所需要達(dá)到速度和轉(zhuǎn)向。在控制小車之前,需要觸摸圖11(a)中的“BLU”按鈕,智能小車與手機(jī)APP之間建立連接(“BLU”的功能在3.1、3.2中已詳細(xì)表述)。當(dāng)手機(jī)的傾斜方向?yàn)橛仪胺綍r,APP畫布中的小球在畫布的左上角,此時智能小車向右前方行駛。根據(jù)圖10中的四種界面情況,智能小車的運(yùn)動狀態(tài)詳細(xì)總結(jié)在表2中。智能小車運(yùn)動狀態(tài)的控制基本已實(shí)現(xiàn)。
圖11 小車運(yùn)動方向及坐標(biāo)數(shù)值監(jiān)控
表2 手機(jī)傾斜方向與小車運(yùn)動狀態(tài)關(guān)系
以下是在空曠的足球場上改變手機(jī)APP和智能小車的距離時,測試智能小車從手機(jī)APP發(fā)送指令數(shù)與智能小車接收到指令數(shù)的準(zhǔn)確性,測試的結(jié)果如表3,其中在20(20)中,“20”表示手機(jī)APP發(fā)出的指令數(shù),“(20)”表示智能小車在手機(jī)APP發(fā)送指令數(shù)為20時,接收到指令正確數(shù)為20。從表3分析可以看出,在手機(jī)APP與智能小車相距為0~30 m范圍內(nèi),智能小車接收指令碼基本無誤。但在距離為36 m及以上時,智能小車出現(xiàn)接收指令碼錯誤現(xiàn)象。但從表3整體來看,在距離為40 m范圍內(nèi),智能小車接收到手機(jī)APP指令的準(zhǔn)確率高達(dá)97.1%,隨著距離的增加,在距離為48 m時,在手機(jī)APP手機(jī)發(fā)送20個指令的條件下,智能小車只能接收到2個正確指令,可見控制范圍明顯受限。但由于軟件設(shè)計(jì)存在延時,設(shè)計(jì)的算法未能很好地實(shí)現(xiàn)對數(shù)據(jù)的處理和發(fā)送,因此本設(shè)計(jì)還可進(jìn)一步優(yōu)化,但不會影響小車的運(yùn)動狀態(tài),最終能達(dá)到預(yù)期的要求。
表3 不同距離控制指令準(zhǔn)確性測試
本設(shè)計(jì)采用MIT APP Inventer進(jìn)行手機(jī)APP界面設(shè)計(jì)及編程,論述了整個設(shè)計(jì)軟硬件的實(shí)現(xiàn)過程,經(jīng)過測試,設(shè)計(jì)的上位機(jī)軟件能夠通過手機(jī)終端順利安裝并流暢運(yùn)行,實(shí)時、無錯的控制小車的運(yùn)動狀態(tài),用手機(jī)和軟件的形式代替玩具業(yè)的遙控器,最終實(shí)現(xiàn)人機(jī)網(wǎng)絡(luò)游戲交互,實(shí)現(xiàn)游戲真實(shí)體驗(yàn)感,為將來虛擬游戲提供設(shè)計(jì)和方案。