朱丹峰 ,葛主冉,林曉雷
(溫州醫(yī)學(xué)院生物醫(yī)學(xué)工程系,浙江 溫州325035)
目前,藍(lán)牙和WiFi 技術(shù)得到了空前廣泛的應(yīng)用,使用藍(lán)牙和WiFi 的產(chǎn)品非常多,如手機(jī)、電腦、汽車(chē)、游戲設(shè)備和醫(yī)療設(shè)備等。在中國(guó),手機(jī)的普及率已經(jīng)很高,通過(guò)移動(dòng)設(shè)備實(shí)現(xiàn)遠(yuǎn)程控制已成為人們需求的方向[1]。Android 是一種以L(fǎng)inux 為基礎(chǔ)的開(kāi)放源碼操作系統(tǒng),基于此平臺(tái)的應(yīng)用程序開(kāi)發(fā),越來(lái)越熱門(mén)[2]?;贏ndroid 平臺(tái)的藍(lán)牙遙控小車(chē)具有遠(yuǎn)程控制(藍(lán)牙,WiFi)、自動(dòng)循跡、自動(dòng)避障、尋找電光源等功能,有一定的新穎度,能夠運(yùn)用到實(shí)際生產(chǎn),有一定的社會(huì)需求,可以進(jìn)一步開(kāi)發(fā)用來(lái)完成一些目前人類(lèi)無(wú)法完成的任務(wù),具有一定的實(shí)際意義。
智能小車(chē)硬件以STC12C5A60S2 單片機(jī)為控制核心,用光電傳感器獲取外界信號(hào),使用電機(jī)驅(qū)動(dòng)電路驅(qū)動(dòng)直流電機(jī)。整個(gè)系統(tǒng)分為以下幾個(gè)模塊:Android 設(shè)備、穩(wěn)壓電源模塊、控制器模塊、直流電機(jī)驅(qū)動(dòng)模塊、循跡模塊、避障模塊、尋光模塊、藍(lán)牙模塊、WiFi 模塊及攝像頭模塊組成??傮w硬件框圖如圖1 所示。
圖1 總體硬件框圖
1.2.1 智能小車(chē)控制器模塊
控制器是智能小車(chē)的核心,本系統(tǒng)采用51 系列單片機(jī),具體型號(hào)為STC12C5A60S2。STC12C5A60S2系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度比8051 快8 倍~12 倍,片上集成1 280 byte RAM,針對(duì)電機(jī)控制,強(qiáng)干擾場(chǎng)合,內(nèi)部結(jié)構(gòu)包括中央處理器(CPU)、程序處理器(Flash)、數(shù)據(jù)存儲(chǔ)器(SRAM)、定時(shí)/計(jì)數(shù)器、UART 接口、串口2、I/O 口、高速A/D 轉(zhuǎn)換、SPI 接口、PCA、MAX810 專(zhuān)用復(fù)位電路、看門(mén)狗及片內(nèi)R/C 振蕩器和外部晶體振蕩電路等模塊。本系統(tǒng)需要單片機(jī)實(shí)現(xiàn)復(fù)位,I/O 口控制,PWM 調(diào)速等功能[3]。
1.2.2 直流電機(jī)驅(qū)動(dòng)模塊
目前大多采用開(kāi)關(guān)型驅(qū)動(dòng)方式驅(qū)動(dòng)直流電機(jī),最常見(jiàn)的驅(qū)動(dòng)方式是脈沖寬度調(diào)制(PWM)[4]。本系統(tǒng)電機(jī)驅(qū)動(dòng)芯片采用L298N,采用單片機(jī)PWM調(diào)速,L298N 可以驅(qū)動(dòng)兩組直流電機(jī),其單組驅(qū)動(dòng)電流可達(dá)2 A。電機(jī)驅(qū)動(dòng)模塊原理如圖2 所示。
圖2 電機(jī)驅(qū)動(dòng)模塊原理圖
1.2.3 循跡、避障、尋光模塊
循跡模塊采用發(fā)射接收一體式紅外傳感器TCRT5000,體積小、靈敏度高、光電轉(zhuǎn)換速度快、能防止其他光線(xiàn)干擾。TCRT5000 輸出信號(hào)經(jīng)門(mén)電路整形后可以給單片機(jī)提供穩(wěn)定的TTL 信號(hào),使尋線(xiàn)更加準(zhǔn)確穩(wěn)定。
避障模塊采用發(fā)射接收一體化反射式光電傳感器,用紅外接收頭和紅外發(fā)光二極管進(jìn)行避障,紅外接收頭接收已調(diào)制好的信號(hào),受其他光源的影響很小。避障傳感器感應(yīng)距離在3 cm ~80 cm。
尋光模塊采用光敏二極管的光電效應(yīng)對(duì)周?chē)h(huán)境光的強(qiáng)度進(jìn)行檢測(cè)。光敏二極管靈敏度高,線(xiàn)性好,方向性好,可感知固定方向的可見(jiàn)光,能將光信號(hào)轉(zhuǎn)變成電信號(hào),便于單片機(jī)判斷。
循跡、尋光模塊原理如圖3 所示。
圖3 循跡、尋光模塊原理圖
1.2.4 藍(lán)牙模塊
藍(lán)牙設(shè)備體積小、功耗低,廣泛地應(yīng)用在嵌入式平臺(tái)上。本系統(tǒng)采用HC-06 藍(lán)牙模塊,HC-06 藍(lán)牙模塊可以通過(guò)AT 指令修改參數(shù),可以掉電保存參數(shù),給藍(lán)牙模塊上電,不配對(duì)的情況下就是進(jìn)入AT 模式了,指令間隔1 s 左右。
1.2.5 WiFi 模塊
Openwrt 是一個(gè)小型Linux 系統(tǒng),DB120-WG 路由器安裝上Openwrt 后,其功能將變?yōu)楫惓?qiáng)大,可做為一臺(tái)小型服務(wù)器,安裝好數(shù)據(jù)轉(zhuǎn)發(fā)和監(jiān)控軟件后,可以實(shí)現(xiàn)與單片機(jī)的串口通信,并用WiFi 傳輸視頻信號(hào),實(shí)現(xiàn)視頻監(jiān)控功能[5]。本系統(tǒng)安裝的視頻監(jiān)控軟件為MJPG-streamer,安裝好后通過(guò)命令啟動(dòng)該軟件,mjpg_streamer -i "input_uvc. so -y -d/dev/video0" -o "output_http. so -p 8080 -w/www/camweb"。mjpg_streamer 啟動(dòng)成功后,則可以通過(guò)瀏覽器訪(fǎng)問(wèn)http://路由IP:8080/?action=stream查看視頻。
DB120-WG 需要安裝Ser2net 實(shí)現(xiàn)網(wǎng)絡(luò)轉(zhuǎn)串口[6],并設(shè)置波特率為9600 bit/s,8 bit 數(shù)據(jù)位,1 bit停止位。DB120-WG 通過(guò)WiFi 接收上位機(jī)Android設(shè)備的命令,然后通過(guò)Ser2net 轉(zhuǎn)發(fā)給單片機(jī)串口,用來(lái)控制小車(chē)運(yùn)動(dòng)。
1.2.6 攝像頭模塊
雖然Linux 系統(tǒng)對(duì)芯片為ZC301 的攝像頭驅(qū)動(dòng)支持更好,但是現(xiàn)在市場(chǎng)上攝像頭多為UVC 攝像頭,且攝像頭像素更高,所以本系統(tǒng)采用UVC 攝像頭,攝像頭通過(guò)USB 接口與DB120 路由器相連接,安裝好驅(qū)動(dòng)和視頻監(jiān)控軟件后即可通過(guò)DB120-WG 的WiFi 功能傳輸視頻信號(hào)。
本系統(tǒng)的軟件需完成以下功能:
(1)檢測(cè)小車(chē)所處的環(huán)境狀態(tài),如黑白線(xiàn),障礙物,光照強(qiáng)度等;
(2)控制電機(jī)的運(yùn)轉(zhuǎn)方向與速度;
(3)接收上位機(jī)Android 設(shè)備的控制命令。
下位機(jī)軟件流程如圖4 所示。
圖4 下位機(jī)軟件流程圖
單片機(jī)上電后,首先執(zhí)行初始化動(dòng)作,包括I/O口工作模式、中斷、串口、PWM 初始化等。
單片機(jī)與藍(lán)牙模塊、WiFi 模塊的無(wú)線(xiàn)通信是利用單片機(jī)的UART 接口。STC12C5A60S2 單片機(jī)具有2 個(gè)采用UART 工作方式的全雙工串行通信接口。每個(gè)串行口由2 個(gè)數(shù)據(jù)緩沖器、一個(gè)移位寄存器、一個(gè)串行控制寄存器和一個(gè)波特率發(fā)生器等組成。
單片機(jī)通過(guò)傳感器,檢測(cè)外界環(huán)境狀態(tài),作出判斷,從而改變小車(chē)行駛狀態(tài)。由于單片機(jī)資源利用率不高,所以小車(chē)的循跡、避障、尋光都采用輪詢(xún)方式。傳感器檢測(cè)到的信號(hào)與環(huán)境狀態(tài)關(guān)系如表1所示。
表1 傳感器信號(hào)與環(huán)境狀態(tài)關(guān)系表
STC12C5A60S2 單片機(jī)集成了兩路可編程計(jì)數(shù)器陣列(PCA)模塊,可用于軟件定時(shí)器、外部脈沖的捕捉、高速輸出以及脈寬調(diào)制(PWM)輸出。PWM 初始化代碼如下:
P1M1=0x00;
P1M0 |=0x18;//設(shè)置P1.3,P1.4 口為強(qiáng)推挽輸出,輸出PWM 信號(hào)
CMOD |=0x04;//選擇定時(shí)器T0 的溢出率為PWM 時(shí)鐘源,控制PWM 波的頻率
CCAPM0 |=0x42;//允許比較器功能,開(kāi)啟PWM0
CCAPM1 |=0x42;//允許比較器功能,開(kāi)啟PWM1
CL=0x00;//計(jì)數(shù)器清零
CH=0x00;
CR=1;//啟動(dòng)PWM
可以通過(guò)改變寄存器CCAP0L、CCAP0H、CCAP1L、CCAP1H 的值來(lái)分別改變兩路PWM 占空比。通過(guò)示波器測(cè)得的PWM 波形如表2 所示。
Android 系統(tǒng)架構(gòu)由5 部分組成,分別是Linux內(nèi)核(Linux Kernel)、運(yùn)行環(huán)境(Android Runtime)、開(kāi)發(fā)庫(kù)(Libraries)、應(yīng)用框架(Application Framework)、應(yīng)用程序(Applications)[7]。Android 系統(tǒng)架構(gòu)如圖5所示。
Android應(yīng)用程序開(kāi)發(fā)支持Windows、Linux、Mac OS 等操作系統(tǒng),當(dāng)前中國(guó)主流的操作系統(tǒng)是微軟的Windows 系統(tǒng),在Windows 下大多采用Eclipse搭建Android 開(kāi)發(fā)環(huán)境。Eclipse(Integrated Development Environment)是一個(gè)集成開(kāi)發(fā)環(huán)境,通過(guò)插件來(lái)構(gòu)建開(kāi)發(fā)環(huán)境,主要由Eclipse 項(xiàng)目、Eclipse 工具項(xiàng)目和Eclipse 技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,具體包括四個(gè)部分組成——Eclipse Platform、JDT、CDT 和PDE[8]。Eclipse 具有以下特點(diǎn):
(1)開(kāi)放源代碼,能接受由Java 開(kāi)發(fā)者自己編寫(xiě)的插件;
(2)附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java 開(kāi)發(fā)工具JDT(Java Development Tools);
(3)對(duì)內(nèi)存控制很好,Eclipse 對(duì)插件的調(diào)用是動(dòng)態(tài)的,Eclipse 會(huì)在適當(dāng)?shù)臅r(shí)候?qū)㈤L(zhǎng)時(shí)間不用的插件清理出內(nèi)存,程序員不用擔(dān)心內(nèi)存不足的問(wèn)題。
表2 PWM 波形表
圖5 Android 系統(tǒng)架構(gòu)
基于Android 平臺(tái)的無(wú)線(xiàn)遙控智能小車(chē),通過(guò)單片機(jī)、Android 設(shè)備及軟件設(shè)計(jì)實(shí)現(xiàn)了無(wú)線(xiàn)遙控、循跡、避障、尋光、視頻監(jiān)控等功能。在該控制系統(tǒng)下,無(wú)線(xiàn)遙控小車(chē)具有良好的操控性、擴(kuò)展性、實(shí)用性。經(jīng)過(guò)測(cè)試,得出智能小車(chē)技術(shù)參數(shù),如表3 所示。
表3 智能小車(chē)技術(shù)參數(shù)表
由于客觀(guān)條件不足和本人能力有限,還存在以下不足之處需要改善:
(1)單片機(jī)控制算法較簡(jiǎn)單,應(yīng)對(duì)循跡、避障、尋光的算法做進(jìn)一步優(yōu)化;
(2)視頻傳輸速度不夠快,有延遲。
(3)本系統(tǒng)只考慮了點(diǎn)對(duì)點(diǎn)的控制,下一步可以開(kāi)發(fā)實(shí)現(xiàn)點(diǎn)對(duì)多點(diǎn)的控制。
[1] 林志翔,肖寶森.新型多功能智能小車(chē)的設(shè)計(jì)與應(yīng)用[J].現(xiàn)代電子技術(shù),2011,34(6):134-136.
[2] 楊豐盛. Android 應(yīng)用開(kāi)發(fā)揭秘[M]. 北京:機(jī)械工業(yè)出版社,2010:1-4.
[3] 劉泉,李成.基于CC2500 的無(wú)線(xiàn)信息家電節(jié)點(diǎn)設(shè)計(jì)[J]. 電子器件,2009,32(1):153-157
[4] 陳德益.基于嵌入式單片機(jī)的電機(jī)控制系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)仿真,2010,27(1):359-362.
[5] Fu Zhiquan. Design of Digital Video Capture System Based on USB2.0[J].Zhuangjiabing Gongcheng Xueyuan Xuebao,2005,5(15):23-27.
[6] 李佐彬.Android 開(kāi)發(fā)入門(mén)與實(shí)戰(zhàn)體驗(yàn)[M].北京:機(jī)械工業(yè)出版社,2011:32-35.
[7] DiMarzio J F. Android A Programmer’s Guide[M]. McGraw-Hill Osborne Media,2008.
[8] 強(qiáng)鋒科技,陳剛.Eclipse 從入門(mén)到精通[M].北京:清華大學(xué)出版社,2005:5-6.