丁玲玲
摘要:本課題基于ARM嵌入式硬件平臺,以嵌入式Linux為操作系統(tǒng),實現(xiàn)了一個遠(yuǎn)程控制系統(tǒng)。該系統(tǒng)主要包括遠(yuǎn)程控制終端系統(tǒng)、控制服務(wù)器系統(tǒng)和受控終端系統(tǒng)三大模塊,實現(xiàn)了GSM短消息收發(fā)、GPRS數(shù)據(jù)傳輸、視頻圖像采集、藍(lán)牙無線通信、直流電機變速控制和遠(yuǎn)程終端人機交互等功能。該系統(tǒng)可廣泛應(yīng)用于智能家居、工礦采集和機械生產(chǎn)等遠(yuǎn)程控制方面。
關(guān)鍵詞:ARM;GSM;GPRS;藍(lán)牙;遠(yuǎn)程控制
本文將在ARM嵌入式實驗平臺上,利用GPRS模塊和藍(lán)牙模塊構(gòu)建一個基于GPRS的嵌入式遠(yuǎn)程控制系統(tǒng)。該系統(tǒng)主要包括遠(yuǎn)程控制終端系統(tǒng)、控制服務(wù)器系統(tǒng)和受控終端系統(tǒng)三大模塊。擁有GSM短消息收發(fā)、GPRS數(shù)據(jù)傳輸、視頻圖像采集、藍(lán)牙無線通信、直流電機變速控制和遠(yuǎn)程終端人機交互等功能。
本系統(tǒng)可以應(yīng)用于環(huán)境惡劣,不適于人們長期現(xiàn)場工作的場合,也可以應(yīng)用于智能家居、工礦采集和機械生產(chǎn)等遠(yuǎn)程控制方面。例如,在智能家居控制系統(tǒng)中,本系統(tǒng)可以將許多相對獨立的智能家居構(gòu)成一個統(tǒng)一的系統(tǒng),通過遠(yuǎn)程控制終端對控制服務(wù)器發(fā)送命令,由控制服務(wù)器實現(xiàn)對智能家居的綜合管理和控制。
1 系統(tǒng)工作過程
(1)移動手機終端通過GSM網(wǎng)絡(luò)得到控制服務(wù)器的IP地址。
(2)移動手機終端根據(jù)得到的服務(wù)器IP地址,通過GPRS網(wǎng)絡(luò)連接到控制服務(wù)器系統(tǒng)。
(3)如果移動手機終端進(jìn)入直流電機控制界面,并向控制服務(wù)器系統(tǒng)發(fā)送的是直流電機控制命令,控制服務(wù)器就將收到的控制命令通過藍(lán)牙通信技術(shù)進(jìn)行廣播。受控終端接收到廣播的控制命令后,判斷接收到的命令是否為自己的控制命令,如果是就做出相應(yīng)的反映,否則就丟棄接收到的命令。
(4)如果移動手機終端進(jìn)入視頻監(jiān)視控制界面,并向控制服務(wù)器系統(tǒng)發(fā)送的是啟動視頻監(jiān)視命令,控制服務(wù)器就會啟動攝像頭進(jìn)行視頻圖像采集,并將采集的圖像幀發(fā)送到遠(yuǎn)程控制手機終端上進(jìn)行顯示。
2 系統(tǒng)實現(xiàn)
在整個系統(tǒng)的具體實現(xiàn)過程中,遠(yuǎn)程控制終端的GPRS聯(lián)網(wǎng)通信主要是利用socket網(wǎng)絡(luò)連接來實現(xiàn)的;控制服務(wù)器系統(tǒng)的GPRS聯(lián)網(wǎng)通信主要是通過AT指令來完成的;而控制服務(wù)器系統(tǒng)和受控終端的藍(lán)牙聯(lián)網(wǎng)通信都是利用L2CAP協(xié)議之上的socket來完成的。
2.1 控制服務(wù)器系統(tǒng)
控制服務(wù)器的主程序主要完成系統(tǒng)初始化操作和主要線程的創(chuàng)建工作。其中系統(tǒng)初始化操作包括串口初始化、全局變量初始化和視頻采集初始化等過程。系統(tǒng)的主要線程包括串口監(jiān)聽線程、GPRS服務(wù)器線程和藍(lán)牙服務(wù)器線程。
主程序流程圖如圖1.1所示:
整個控制服務(wù)器系統(tǒng)在主程序初始化完成后,GPRS服務(wù)器線程和藍(lán)牙服務(wù)器線程會同時進(jìn)行啟動,而串口監(jiān)聽線程需要等到GPRS服務(wù)器線程將GPRS服務(wù)器啟動結(jié)束后再進(jìn)行啟動。這樣設(shè)計主要是因為GPRS服務(wù)器和藍(lán)牙服務(wù)器之間相對比較獨立,所以可以同時進(jìn)行啟動。然而,串口監(jiān)聽主要是要不斷的讀取串口中的信息,GPRS服務(wù)器啟動需要向串口發(fā)送AT指令來完成。一旦GPRS服務(wù)器啟動結(jié)束就可以不再繼續(xù)進(jìn)行啟動,直到遠(yuǎn)程控制終端發(fā)送GPRS服務(wù)器重啟的命令后再進(jìn)行重新啟動。因此,為了防止串口監(jiān)聽線程在讀取信息過程中對GPRS服務(wù)器啟動造成影響,在系統(tǒng)實現(xiàn)過程中通過一個GPRS的標(biāo)志位來實現(xiàn)串口監(jiān)聽和GPRS服務(wù)器啟動的異步性。
對于GPRS服務(wù)器線程主要是用來將GPRS模塊連接到移動服務(wù)器,得到移動服務(wù)器分配的動態(tài)IP地址實現(xiàn)GPRS模塊的上網(wǎng)功能。在啟動GPRS模塊時要將GPRS模塊設(shè)為服務(wù)器端,實現(xiàn)監(jiān)聽遠(yuǎn)程控制終端的接入要求。
藍(lán)牙服務(wù)器線程主要包括藍(lán)牙初始化和監(jiān)聽已經(jīng)連接到服務(wù)器的受控終端的行為。初始化主要實現(xiàn)了藍(lán)牙服務(wù)器的構(gòu)建。構(gòu)建結(jié)束后,藍(lán)牙服務(wù)器就可以接收藍(lán)牙客戶端的連接請求,并完成對接收的有效連接進(jìn)行管理。
GPRS模塊和應(yīng)用系統(tǒng)是通過開發(fā)平臺的2號串口進(jìn)行連接的,控制系統(tǒng)通過向GPRS模塊發(fā)送AT指令來控制模塊的行為,因此,在進(jìn)行短消息的收發(fā)和GPRS服務(wù)器的構(gòu)建之前必須要對串口進(jìn)行初始化。串口監(jiān)聽線程主要實現(xiàn)監(jiān)聽遠(yuǎn)程控制終端通過GSM網(wǎng)絡(luò)發(fā)送的短消息和通過GPRS網(wǎng)絡(luò)發(fā)送的控制命令。當(dāng)控制服務(wù)器接收到短消息或控制命令后,會根據(jù)相應(yīng)的命令來實現(xiàn)對控制服務(wù)器和受控終端的控制。
2.2 受控終端
受控終端主要實現(xiàn)了直流電機通過藍(lán)牙無線通信技術(shù)來接收控制服務(wù)器的控制。在主程序中主要創(chuàng)建了電機線程和搜索藍(lán)牙服務(wù)器的兩個線程。電機線程主要完成直流電機的變速控制。搜索藍(lán)牙服務(wù)器的線程主要完成了搜索附近所有的藍(lán)牙設(shè)備,尋找目標(biāo)藍(lán)牙服務(wù)器的地址,然后根據(jù)尋找到的目標(biāo)服務(wù)器地址構(gòu)建藍(lán)牙客戶端等功能。
2.3 遠(yuǎn)程控制終端
遠(yuǎn)程控制終端為用戶提供了一個友好的控制界面,該終端主要包括登入控制服務(wù)器界面、控制菜單界面、直流電機控制界面和視頻監(jiān)視查看等四個界面。主要用到了J2ME編程中的MIDP高級界面編程、低級用戶界面編程和無線聯(lián)網(wǎng)技術(shù)編程。
登入控制服務(wù)器界面應(yīng)用J2ME中TextField控件來接收用戶輸入的控制服務(wù)器的IP地址,點擊進(jìn)入組件后,終端將進(jìn)行與控制服務(wù)器的網(wǎng)絡(luò)連接。為了避免網(wǎng)絡(luò)連接阻塞用戶響應(yīng)線程,在此類中實現(xiàn)了Runnable接口,通過在Run()方法中調(diào)用Connector.open(serverAdd)來實現(xiàn)與控制服務(wù)器的連接,并通過openInputStream()方法來打開連接的輸入數(shù)據(jù)流,通過openOutputStream()方法打開連接的輸出數(shù)據(jù)流。連接的輸出數(shù)據(jù)流和輸入數(shù)據(jù)流分別用于遠(yuǎn)程控制終端向控制服務(wù)器發(fā)送控制命令和接受控制服務(wù)器采集的現(xiàn)場圖像等信息。
3 總結(jié)
本論文基于ARM9的S3C2410開發(fā)平臺,利用嵌入式Linux操作系統(tǒng),運用GPRS無線通信技術(shù)和藍(lán)牙無線通信技術(shù)搭建了嵌入式控制服務(wù)器系統(tǒng)。利用手機終端,運用J2ME編程實現(xiàn)了遠(yuǎn)程控制終端的設(shè)計,并利用另一個S3C2410開發(fā)平臺的直流電機模塊,通過藍(lán)牙無線通信構(gòu)建了遠(yuǎn)程控制系統(tǒng)的受控終端。整個系統(tǒng)包含了GSM短消息通信、GPRS遠(yuǎn)程控制、視頻圖像采集、藍(lán)牙無線通信、直流電動機變速控制和遠(yuǎn)程控制人機交互等各大功能。
參考文獻(xiàn)
[1]金純等.藍(lán)牙技術(shù)[M]. 西安:電子工業(yè)出版社,2001.3
[2]詹建飛.Java ME核心技術(shù)與最佳實踐[M]. 北京:電子工業(yè)出版社,2007.1
[3]SIMCOM有限公司. SIM100-E_UGD[Z]. SIMCOM有限公司,2004.7
[4]孫天澤,袁文菊,張海峰. 嵌入式設(shè)計及Linux驅(qū)動開發(fā)指南[M]. 北京:電子工業(yè)出版社,2006.5
[5]Albert S. Huang,and Larry Rudolph. Bluetooth Essentials for Programmers[M]. Cambridge University Press, 2007