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