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