??? 摘? 要: 介紹了基于GPRS的通信方式,采用嵌入式ARM9微處理器S3C2410X作為主控制器,通過(guò)短信息方式實(shí)現(xiàn)對(duì)遠(yuǎn)程端數(shù)據(jù)的采集和監(jiān)測(cè)的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)。在系統(tǒng)的遠(yuǎn)程端和用戶端,分別使用μC/OS-II和Linux為操作系統(tǒng)。用戶端通過(guò)GPRS網(wǎng)絡(luò)發(fā)出檢測(cè)信息,遠(yuǎn)程端將檢測(cè)到的數(shù)據(jù)送回到指定用戶端,以此作為管理和監(jiān)控人員統(tǒng)計(jì)和處理的數(shù)據(jù)。系統(tǒng)具有技術(shù)先進(jìn)、簡(jiǎn)單經(jīng)濟(jì)、準(zhǔn)確實(shí)用的特點(diǎn),在實(shí)際應(yīng)用中具有一定的參考價(jià)值。?
????關(guān)鍵詞: 數(shù)據(jù)采集; 嵌入式系統(tǒng); 通用分組無(wú)線業(yè)務(wù)(GPRS); 操作系統(tǒng)
?
??? 本系統(tǒng)的設(shè)計(jì)融合了當(dāng)今兩大熱點(diǎn)技術(shù):嵌入式技術(shù)和通用分組無(wú)線業(yè)務(wù)GPRS(General Packet Radio Service)技術(shù)。嵌入式系統(tǒng)具有功耗低、體積小等優(yōu)點(diǎn)。系統(tǒng)的通信方式采用基于通用分組無(wú)線業(yè)務(wù)(GPRS)技術(shù)。GPRS 是為無(wú)線數(shù)據(jù)傳輸服務(wù)量身定造的,該技術(shù)提供端到端的、廣域的無(wú)線IP 連接,具有隨時(shí)查詢、連接時(shí)間短、實(shí)時(shí)性強(qiáng)、設(shè)備成本低、維護(hù)費(fèi)用小、收費(fèi)合理、價(jià)格便宜、適合不定期、長(zhǎng)時(shí)間的數(shù)據(jù)傳輸?shù)戎T多優(yōu)點(diǎn)。因此,基于GPRS的嵌入式遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)具有很強(qiáng)的優(yōu)勢(shì),在目前的電力系統(tǒng)、天然氣等資源的監(jiān)測(cè)中具有很好的應(yīng)用前景。?
1 遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)的總體結(jié)構(gòu)?
??? 基于GPRS的嵌入式遠(yuǎn)程電量數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)結(jié)構(gòu)圖如圖1所示。?
?
?
??? 基于ARM9的S3C2410X是Samsung公司推出的16/32位RISC微處理器S3C2410X,它為手持設(shè)備和一般類(lèi)型應(yīng)用提供了低價(jià)格、低功耗、高性能的解決方案。S3C2410X采用ARM920T內(nèi)核和AMBA總線,并增添了豐富的外圍資源,其中包括本系統(tǒng)使用的8通道的10位ADC。GPRS模塊采用Wavecom Q2403A,它是雙頻GSM/GPRS MODEM模塊,在短消息服務(wù)方面,支持點(diǎn)對(duì)點(diǎn)的MT&MO、短消息區(qū)域廣播、回復(fù)呼叫信息、電話簿、記費(fèi)等。 ?
??? 本設(shè)計(jì)中,把遠(yuǎn)程采集到的電量分為正常值和異常值兩種。用戶在用戶端的宿主機(jī)上按下編輯短信功能鍵,開(kāi)始編輯短信,系統(tǒng)會(huì)自動(dòng)將編輯好的短信息傳送到用戶端的GPRS模塊,遠(yuǎn)程端通過(guò)現(xiàn)有的GPRS網(wǎng)絡(luò)將信息傳輸?shù)竭h(yuǎn)程端的GPRS模塊,模塊接收到用戶的查詢信息之后,將信息內(nèi)容交給遠(yuǎn)程端的S3C2410X進(jìn)行判斷,判斷用戶選擇的功能。當(dāng)程序確認(rèn)用戶要查詢電量值時(shí),程序調(diào)用A/D轉(zhuǎn)換模塊函數(shù),啟動(dòng)A/D轉(zhuǎn)換模塊,去讀取電量值,并將電量值轉(zhuǎn)換成數(shù)字信號(hào),送給遠(yuǎn)程端的S3C2410X,這樣系統(tǒng)已經(jīng)按照用戶的需求檢測(cè)了電量值。然后,系統(tǒng)將進(jìn)入信息發(fā)送的階段,遠(yuǎn)程端的S3C2410X將準(zhǔn)備好的二進(jìn)制電壓值及相關(guān)信息送入遠(yuǎn)程端的GPRS模塊,再以短信的形式傳回給用戶端。用戶通過(guò)在用戶端的宿主機(jī)上鍵入接收短信功能鍵后,在屏幕上看到接收到的短信內(nèi)容。如果此時(shí)的電量值在系統(tǒng)規(guī)定的安全電量值內(nèi),查詢過(guò)程到此結(jié)束;如果此時(shí)電量值超出系統(tǒng)規(guī)定電量值,則系統(tǒng)會(huì)自動(dòng)啟動(dòng)電機(jī)。電機(jī)啟動(dòng)意味著可以帶動(dòng)其他裝置,做出相應(yīng)的控制調(diào)整。?
2 系統(tǒng)軟件設(shè)計(jì)?
2.1 遠(yuǎn)程端的程序設(shè)計(jì)?
??? 遠(yuǎn)程端使用的是μC/OS-II操作系統(tǒng)。μC/OS-II 是面向中小型的嵌入式操作系統(tǒng),具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn)。應(yīng)用程序運(yùn)行之前,要給設(shè)備加載驅(qū)動(dòng)程序,這樣應(yīng)用程序才能在系統(tǒng)中正常運(yùn)行。遠(yuǎn)程端的程序流程圖如圖2所示。?
?
?
程序開(kāi)始運(yùn)行后首先進(jìn)行各個(gè)模塊的初始化,包括嵌入式系統(tǒng)開(kāi)發(fā)板的初始化、GPRS模塊的初始化、電機(jī)模塊的初始化和ADC的初始化;其后,程序會(huì)設(shè)置好短信息的類(lèi)型,并進(jìn)入等待接收短信息狀態(tài)。當(dāng)有短信接收到后,程序?qū)⑷〕鲂畔⒅械膬?nèi)容,進(jìn)行判斷信息所選擇的功能。遠(yuǎn)程端的程序功能有3種:“G”代表查詢A/D轉(zhuǎn)換值,“S”代表停止電機(jī),其他信息程序會(huì)自動(dòng)返回操作錯(cuò)誤提示信息。?
??? 如果信息的內(nèi)容是“G”,則程序會(huì)啟動(dòng)A/D轉(zhuǎn)換,將寄存器ADCCON的ENABLE_START位置“1”,之后循環(huán)查詢寄存器ADCCON的ECFLG位等待轉(zhuǎn)換的完成。一旦此位被置“1”,說(shuō)明轉(zhuǎn)換已經(jīng)結(jié)束,程序會(huì)判斷轉(zhuǎn)換值是否大于3(此值根據(jù)系統(tǒng)需要任意設(shè)定),如果大于等于3,則起動(dòng)電機(jī),回復(fù)帶有電壓值的短信息;如果小于3,直接回復(fù)短信息。短信回復(fù)后,程序會(huì)繼續(xù)回到等待短信的狀態(tài),循環(huán)往復(fù)。?
??? 遠(yuǎn)程端的ADC模塊包括3個(gè)函數(shù):初始化ADC函數(shù)(void init_ADdevice( ))、獲取A/D轉(zhuǎn)換值函數(shù)(int GetADresult(int channel))和A/D轉(zhuǎn)換工作函數(shù)(extern char *SetAdc(void))。初始化ADC函數(shù)在系統(tǒng)主函數(shù)中調(diào)用。A/D轉(zhuǎn)換工作函數(shù)是一個(gè)返回字符型指針值的函數(shù),該函數(shù)首先定義了一些變量、數(shù)組和指針,然后調(diào)用獲取A/D轉(zhuǎn)換值函數(shù)獲得轉(zhuǎn)換后的電量值。此時(shí)的電量值為二進(jìn)制代碼,而要想在短信中傳輸,數(shù)據(jù)必須是字符串形式,所以接下來(lái)程序?qū)⒃瓉?lái)的二進(jìn)制電壓值轉(zhuǎn)換成ASCII形式,并增加了一些輔助信息組成字符串,最終函數(shù)將字符串的首地址傳回。?
??? 遠(yuǎn)程端短信發(fā)送模塊只包括1個(gè)短信發(fā)送函數(shù),首先函數(shù)通過(guò)AT+CMGF=1指令設(shè)置短信格式,然后用AT+CMGS指令來(lái)發(fā)送短信。函數(shù)的兩個(gè)形參指針?lè)謩e指向收信人電話號(hào)碼和短信內(nèi)容。?
??? 遠(yuǎn)程端電機(jī)模塊包括電機(jī)模塊初始化函數(shù)(void init_MotorPort( ))和電機(jī)工作函數(shù)(void SetPWM(int value)),與ADC的初始化函數(shù)相同,電機(jī)模塊初始化函數(shù)在系統(tǒng)主函數(shù)中被調(diào)用。電機(jī)工作函數(shù)唯一的任務(wù)就是啟動(dòng)電機(jī),其中形參(int value)控制電機(jī)轉(zhuǎn)動(dòng)的速度,如果它為0,即實(shí)現(xiàn)了電機(jī)的停止功能。?
2.2 用戶端程序設(shè)計(jì)?
??? 用戶端主要由用戶在PC機(jī)的Linux操作系統(tǒng)下控制,它的主要功能就是短信的收發(fā)和閱讀。本系統(tǒng)用戶端程序設(shè)計(jì)流程圖如圖3所示。?
?
?
??? 程序開(kāi)始后,首先初始化串口,使PC機(jī)和嵌入式系統(tǒng)聯(lián)系起來(lái),以便用戶可以在PC機(jī)上操作;然后打印提示信息,此時(shí)用戶可以根據(jù)屏幕上的信息進(jìn)行操作。用戶可選的功能有3種:“1”代表發(fā)送短信息,“2”代表閱讀接收到的短信息,“3”代表退出整個(gè)工作環(huán)境。?
??? 當(dāng)用戶在鍵盤(pán)上鍵入“1”后,系統(tǒng)會(huì)進(jìn)入發(fā)短信的模式,用戶只需根據(jù)屏幕上的信息輸入電話號(hào)碼和短信內(nèi)容就可成功發(fā)送短信到遠(yuǎn)程端;當(dāng)用戶鍵入“2”后,系統(tǒng)會(huì)進(jìn)入讀短信的模式,此時(shí)屏幕上會(huì)顯示出所收短信的內(nèi)容;當(dāng)用戶鍵入“3”后,屏幕上顯示結(jié)束語(yǔ),系統(tǒng)退出工作環(huán)境,并關(guān)閉串口;如果用戶再鍵入“1”或“2”,則當(dāng)程序運(yùn)行完發(fā)送短信子程序或讀短信子程序后,系統(tǒng)會(huì)自動(dòng)回到功能選擇提示信息,等待用戶選擇。?
??? 用戶端短信發(fā)送模塊程序在Linux操作系統(tǒng)下運(yùn)行。它與遠(yuǎn)程端的短信發(fā)送函數(shù)的不同之處在于此信息的電話號(hào)碼和內(nèi)容均需要用戶鍵入,所以多了一個(gè)采集鍵值的過(guò)程。?
??? 用戶端閱讀短信模塊用于用戶閱讀接收到的短信息。AT+CMGL指令用于列出SIM卡中的短信息。其中信息有五種情況:未讀(REC UNREAD)、已讀(REC READ)、待發(fā)(STO UNSENT)、已發(fā)(STO SENT)和全部(ALL)。本程序中使用了全部(ALL),當(dāng)用戶選擇此功能時(shí),屏幕上會(huì)列出所有接收到的短信息。?
??? 系統(tǒng)調(diào)試時(shí),將2張不同的SIM卡裝入遠(yuǎn)程端和用戶端的GPRS模塊;安裝遠(yuǎn)程端的驅(qū)動(dòng)程序,燒寫(xiě)μC/OS-II操作系統(tǒng),配置用戶端PC機(jī)上的Linux RedHat 9.0;給用戶端的嵌入式系統(tǒng)開(kāi)發(fā)板燒制bootloader、armLinux內(nèi)核,并建立文件系統(tǒng)。將遠(yuǎn)程端的應(yīng)用程序,編譯后發(fā)送到遠(yuǎn)程端的嵌入式開(kāi)發(fā)板上,運(yùn)行程序。在用戶端,把設(shè)計(jì)好的應(yīng)用程序復(fù)制到/nfs文件,使用交叉編譯的方法編譯用戶端的應(yīng)用程序。至此,系統(tǒng)的軟硬件已經(jīng)配置好,隨時(shí)可以使用。經(jīng)過(guò)調(diào)試與檢測(cè),系統(tǒng)各項(xiàng)功能均已滿足設(shè)計(jì)要求,可以正常使用了。?
??? 該系統(tǒng)具有如下特點(diǎn):(1)自主性強(qiáng):用戶可根據(jù)自己的需求隨時(shí)查詢;(2)實(shí)時(shí)性強(qiáng):本系統(tǒng)沒(méi)有過(guò)多造成延時(shí)的因素,幾秒內(nèi)就能將采集好的電量數(shù)據(jù)傳送回用戶端,使用戶能夠了解到實(shí)時(shí)的電量值;(3)費(fèi)用低:因GPRS采用的是“按數(shù)據(jù)流量計(jì)費(fèi)”的原則;(4)速率快:目前的GPRS技術(shù)是基于GSM公用無(wú)線網(wǎng)的2.5代無(wú)線傳輸手段。理論上最高速率可達(dá)170 kb/s。目前國(guó)內(nèi)只開(kāi)通了4個(gè)通道中的1個(gè)。因此,當(dāng)前可用的實(shí)際速率為34 Kb/s左右。盡管如此, 這一速率也比當(dāng)前有線電話網(wǎng)上的電量采集系統(tǒng)的通訊速率高出許多;(5)結(jié)構(gòu)小巧:本系統(tǒng)充分利用了嵌入式系統(tǒng)功耗低、體積小的優(yōu)點(diǎn),用戶端經(jīng)過(guò)改造甚至可以成為一種供野外監(jiān)控人員使用的手持設(shè)備。?
參考文獻(xiàn)?
[1]?桑楠.嵌入式系統(tǒng)原理及應(yīng)用開(kāi)發(fā)技術(shù)(第2版)[M].北京:高等教育出版社,2008.?
[2]?李可,劉躍,周新志.基于ARM和GPRS網(wǎng)絡(luò)的水情信息系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2007,33(12):130-133. ?
[3] 葛紉秋,韓宇龍.嵌入式系統(tǒng)設(shè)計(jì)[M].北京:高等教育出版社,2008.?
[4] 施威銘研究室.Linux命令詳解詞典[M].北京:機(jī)械工業(yè)出版社,2008.?
[5] ARM. ARM920T technical reference manual[DB/OL].www.arm.com,2008.?
[6] Umsung Electtonics. S3C2410X 32-bit RISC microprocessor?user’s manual[DB/OL].www.hhcn.org,2008.