一種基于nRF9E5的無(wú)線(xiàn)監(jiān)測(cè)局域網(wǎng)的系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:給出了用無(wú)線(xiàn)收發(fā)模塊nRF9E5設(shè)計(jì)的局域網(wǎng)系統(tǒng),以實(shí)現(xiàn)對(duì)有毒氣體濃度進(jìn)行無(wú)線(xiàn)監(jiān)測(cè)的系統(tǒng)設(shè)計(jì)方案。闡述了該系統(tǒng)硬件和軟件的設(shè)計(jì)方法。文章通過(guò)構(gòu)建合理的通訊協(xié)議,有效地解決;了節(jié)點(diǎn)間的通訊尋址問(wèn)題,保證了通訊的可靠性。
關(guān)鍵詞:nRF9E5;無(wú)線(xiàn)局域網(wǎng)絡(luò);通訊協(xié)議;無(wú)線(xiàn)監(jiān)測(cè)
當(dāng)今,無(wú)線(xiàn)技術(shù)正快速應(yīng)用于許多產(chǎn)品之中,與有線(xiàn)技術(shù)相比,無(wú)線(xiàn)技術(shù)主要具有成本低、攜帶方便、省去布線(xiàn)煩惱等優(yōu)點(diǎn)。特別適用于工業(yè)數(shù)據(jù)采集系統(tǒng)、無(wú)線(xiàn)遙控系統(tǒng)、小型無(wú)線(xiàn)網(wǎng)絡(luò)、無(wú)線(xiàn)RS485/232數(shù)據(jù)通信系統(tǒng)等。本文給出了一種用于監(jiān)測(cè)有毒氣體的無(wú)線(xiàn)局域網(wǎng)絡(luò)系統(tǒng)方案設(shè)計(jì)方案。
1 系統(tǒng)的功能及組成
在石華工業(yè)中,為了有效監(jiān)測(cè)空氣中H 2S、CL 2等有毒氣體的濃度,把隱患消滅于萌芽狀態(tài),通常需要設(shè)計(jì)許多無(wú)線(xiàn)網(wǎng)絡(luò)檢測(cè)系統(tǒng)。圖1所示就是一種多任務(wù)無(wú)線(xiàn)通訊局域網(wǎng)示意圖。該系統(tǒng)是由一臺(tái)中央監(jiān)控設(shè)備CMS(center monitering system)和多臺(tái)遠(yuǎn)程終端節(jié)點(diǎn)RTN(remote terminal nodes)組成的多任務(wù)無(wú)線(xiàn)通信網(wǎng)絡(luò)。其中的中央監(jiān)控設(shè)備CMS主要由無(wú)線(xiàn)收發(fā)模塊Nrf9e5、報(bào)警裝置和上位機(jī)組成,能夠接收遠(yuǎn)程各節(jié)點(diǎn)信息,監(jiān)控節(jié)點(diǎn)運(yùn)行情況,并能根據(jù)上位機(jī)要求發(fā)送命令字到指定節(jié)點(diǎn)。各節(jié)點(diǎn)RTN主要由有毒氣體傳感部分和無(wú)線(xiàn)接收模塊Nrf9e5組成,能夠采樣并發(fā)送數(shù)據(jù)到CMS,接收并執(zhí)行CMS發(fā)送來(lái)的指令,并且可作為中轉(zhuǎn)站間接傳輸數(shù)據(jù)。
在CMS工作信號(hào)覆蓋范圍內(nèi),各節(jié)點(diǎn)和CMS直接通訊,如圖中RTN100、RTN200和CMS之間可以直接通訊。在CMS工作信號(hào)覆蓋范圍外,各遠(yuǎn)程終端節(jié)點(diǎn)其上級(jí)相應(yīng)節(jié)點(diǎn)和CMS間接通訊,如圖中RTN121、RTN122依次通過(guò)RTN120、RTN100和CMS來(lái)進(jìn)行間接通訊。采用這種方法,可將系統(tǒng)擴(kuò)展成一個(gè)非常大的無(wú)線(xiàn)居域網(wǎng)絡(luò)。
2 硬件設(shè)計(jì)
2.1 硬件電路連接
中央監(jiān)控設(shè)備(CMS)電路主要包括監(jiān)控計(jì)算機(jī)、接收模塊nRF9E5及報(bào)菟裝置,具體電路如圖2所示。圖中,把nRF9E5的P0.1、P0.2口配置成SCI模式,外接MAX232轉(zhuǎn)換電路,和上位機(jī)進(jìn)行串行通訊;P0.3配置成普通端口,外接報(bào)警裝置。
該系統(tǒng)中的遠(yuǎn)程終端節(jié)點(diǎn)(RTN)電路主要由射頻模塊nRF9E5和氣體變送器GT-130/H2S-1組成。ADC模塊選用內(nèi)部參考電壓,氣體傳感裝置能夠輸出4~20mA電流,經(jīng)75Ω電阻轉(zhuǎn)換為0.3~1.5V電壓信號(hào),來(lái)作為ADC模擬量輸入信號(hào)。電路連接和圖2基本相似,區(qū)別是斷開(kāi)圖2中的P0.1-P0.3端口,將變送器輸出端和nRF9E5的AIN0引腳相連接。
2.2 無(wú)線(xiàn)收發(fā)模塊nRF9E5
nRF9E5是挪威Nordic公司的產(chǎn)品。該芯片采用+3VDC供電,面積為5mm×5mm,共有32個(gè)外部引腳,包括UART和SPI等功能。內(nèi)部集成了nRF9E5射頻模塊、8051微控制器及A/D轉(zhuǎn)換模塊,具有433/868/915MHz三波段載波頻率。采用GFSK調(diào)制,抗擾能力強(qiáng);支持多點(diǎn)通訊,數(shù)據(jù)傳輸速率高達(dá)0.1Mbps。具有特有的ShockBurst信號(hào)發(fā)射模式和發(fā)射信號(hào)載波監(jiān)測(cè)功能,可有效降低功耗電流、避免數(shù)據(jù)沖突。內(nèi)部寄存器為用戶(hù)提供了基礎(chǔ)的通訊協(xié)議,便于用戶(hù)擴(kuò)展,縮短了開(kāi)發(fā)周期。外圍電路連接極為簡(jiǎn)單,只需要一個(gè)晶體管和一個(gè)電阻,nRF9E5輸出端ANT1、ANT2外接50Ω單天線(xiàn)終端裝置,信號(hào)有效發(fā)射距離無(wú)遮擋時(shí)可達(dá)800m以上,有建筑物等遮擋時(shí)可達(dá)350m左右。
3 軟件設(shè)計(jì)
3.1 通訊協(xié)議
CMS可與在其信號(hào)覆蓋范圍內(nèi)的RINT進(jìn)行直接通訊,在其工作信號(hào)覆蓋范圍之外的RIN通過(guò)其它節(jié)點(diǎn)轉(zhuǎn)載信號(hào)實(shí)現(xiàn)與CMS的間接通訊。同時(shí),CMS能夠根據(jù)接收的數(shù)據(jù)內(nèi)容判斷信號(hào)來(lái)自哪一個(gè)RTN節(jié)點(diǎn)。為此,需把系統(tǒng)通訊協(xié)議設(shè)置為下列格式:
Prea-mble | Add | Payload | CRC | ||||
Jid | Mid | Yid | X | Data |
Preamble為引導(dǎo)字節(jié);Add為接收機(jī)地址;Payload為有效加載數(shù)據(jù)(包括接收機(jī)識(shí)別碼Jid、目的機(jī)識(shí)別碼Mid、源信號(hào)機(jī)識(shí)別碼Yid及Data字:狀態(tài)字X=1時(shí)Data為命令字,X=0時(shí)Data為濃度數(shù)據(jù));CRC為校驗(yàn)碼。
nRF9E5處于發(fā)射模式時(shí),Add和Payload由微控制器按順序送入射頻模塊nRF9E5,Preamble和CRC由nRF9E5自動(dòng)加載。接收模塊時(shí),nRF9E5先接收一數(shù)據(jù)包,分別驗(yàn)證Preamble、Add和CRC正確后,再將Payload數(shù)據(jù)送入微控制器處理;當(dāng)接收機(jī)微處理器判斷Payload中的Payload中的Jid和本機(jī)識(shí)別碼號(hào)一致時(shí),繼續(xù)處理后繼數(shù)據(jù),否則放棄該數(shù)據(jù)包。
要實(shí)現(xiàn)上述數(shù)據(jù)通訊功能,需進(jìn)行nRF9E5初始化配置和用戶(hù)程序設(shè)計(jì)。
3.2 nRF9E5子系統(tǒng)初始化配置
在nRF9E5模塊中,特殊寄存器RF-Register包含10個(gè)字節(jié),其配置字內(nèi)容可決定射頻模塊nRF9E5的工作特性,表1列出本設(shè)計(jì)中特殊寄存器RF-Register需要配置的基本參數(shù)(文中未述及的參選用默認(rèn)值)。
表1 RF-Register寄存器部分字節(jié)配置說(shuō)明
名 稱(chēng) | 設(shè)定值(二進(jìn)制) | 說(shuō) 明 |
CH-NO | 0 0111 0101 | 載波頻率為868.2MHz |
HRFEQ-PLL | 1 | 設(shè)定PLL工作模式 |
PA-PWR | 11 | 輸出功率為10dBm |
RX-PW | 001 | 接收地址字長(zhǎng)為1byte |
RX-PW | 0010 0000 | 接收有效字節(jié)長(zhǎng)度8bytes |
TX-PW | 0010 0000 | 發(fā)射有效字節(jié)長(zhǎng)度8bytes |
PX-ADDRESS | 1110 0111 | 接收地址名0xE7h |
UP-CLK-EN | 0 | 外部時(shí)鐘禁止 |
XOF | 011 | 晶體振蕩器16MHz頻率 |
CRC-EN | 1 | 使能CRC校驗(yàn)功能 |
CRC-MODE | 0 | 使用8位CRC校驗(yàn)碼 |
系統(tǒng)通訊時(shí),各模塊處于正常接收狀態(tài):收發(fā)使能位TRX-CE=1且方式選擇位TX-EN=0。在運(yùn)行過(guò)程中,可由用戶(hù)編程修改TX-EN=1使各字節(jié)工作于發(fā)射狀態(tài)。
本系統(tǒng)設(shè)定CMS和所有RTN的地址ADD均為0xE7h,這樣,系統(tǒng)內(nèi)CMS和所有RTN之間可以互相通訊,從而避免了其它系統(tǒng)的干擾。各節(jié)點(diǎn)識(shí)別碼長(zhǎng)度根據(jù)網(wǎng)絡(luò)節(jié)點(diǎn)級(jí)數(shù)和容量配置,繼承關(guān)系分配地址;通訊時(shí),通過(guò)對(duì)目的機(jī)代碼Mid和接收機(jī)代碼Jid的比較和識(shí)別,不斷修改接收機(jī)代碼Jid,直至Jid=Mid為止,實(shí)現(xiàn)節(jié)點(diǎn)間的自動(dòng)雙向?qū)ぶ?。以圖1中系統(tǒng)3級(jí)路徑為例,所有模塊識(shí)別碼長(zhǎng)度均配置為12位,CMS識(shí)別碼配置為0x000h。各節(jié)點(diǎn)識(shí)別碼按照上下級(jí)路徑。繼承關(guān)系分配地址:第一級(jí)節(jié)點(diǎn)識(shí)別碼以高四位區(qū)分,其余位均為0,如節(jié)點(diǎn)0x100h與0x200h;第二級(jí)節(jié)點(diǎn)識(shí)別碼高四位繼承其上一級(jí)節(jié)點(diǎn)高四位識(shí)別碼,以中間四位區(qū)分,如RTN100的下級(jí)節(jié)點(diǎn)0x110h與0x120h;第三級(jí)節(jié)點(diǎn)繼承其上一級(jí)節(jié)點(diǎn)的前八位識(shí)別碼,以低四位區(qū)分,如0x120h的下級(jí)節(jié)點(diǎn)0x121h與0x122h。通訊時(shí),即按照這種上下級(jí)路徑關(guān)系傳輸數(shù)據(jù)。采用上述方法,三級(jí)路徑最大可以配置四千多個(gè)節(jié)點(diǎn),能組成一個(gè)比較大的無(wú)線(xiàn)局域網(wǎng)絡(luò)。
4 微處理器用戶(hù)程序
該系統(tǒng)的處理器用戶(hù)程序包括CMS用戶(hù)程序和RTN用戶(hù)程序,而它們又分別包括主程序和中斷子程序兩部分。
4.1 CMS用戶(hù)程序
a.CMS主程序
(1)當(dāng)Flagi=1時(shí),CMS對(duì)接收到的數(shù)據(jù)進(jìn)行存儲(chǔ)和排序記錄,并在氣體深度超標(biāo)時(shí),使報(bào)菟輸出端P0.3=1;最后將Flagi清0。
(2)當(dāng)Sleep=1時(shí),由CMS發(fā)送命令字(X=1)到指定節(jié)點(diǎn),最后將Sleep清0。
此時(shí),Mid為目的機(jī)識(shí)別碼,Yid=0x000h,接收機(jī)識(shí)別碼Jid可由CPU根據(jù)Mid高四位自動(dòng)產(chǎn)生。
b.CMS中斷子程序
(1)串行通信口接收計(jì)算機(jī)命令信號(hào),置Sleep=1。中斷優(yōu)先級(jí)為最高。
(2)RD1=1時(shí)中斷CPU,接收某節(jié)點(diǎn)RTNi信號(hào),置標(biāo)志字Flagi=1。中斷優(yōu)無(wú)級(jí)為次高。
(3)用定時(shí)器2監(jiān)控各節(jié)點(diǎn)通訊記錄:若在定時(shí)器2的一個(gè)定時(shí)周期T2內(nèi)判斷出某節(jié)點(diǎn)一直沒(méi)有發(fā)送信號(hào),則會(huì)記錄相應(yīng)警告信息,直至手動(dòng)清除。其中,T2為系統(tǒng)中各節(jié)點(diǎn)和CMS通訊一次的最大遲滯時(shí)間,中斷優(yōu)先級(jí)為次低。
(4)定時(shí)器1定時(shí)中斷CPU,將內(nèi)存數(shù)據(jù)送上位計(jì)算機(jī)顯示處理,中斷優(yōu)先級(jí)為最低。
4.2 RTN用戶(hù)程序
a.RTN主程序
當(dāng)Flagi=1時(shí),CPU對(duì)Payload作如下處理后,最后將Flagi清0。
圖2
(1)若接收的數(shù)據(jù)包中,Mid=0x000h,Yid為RTNj識(shí)別碼,則數(shù)據(jù)來(lái)自下級(jí)節(jié)點(diǎn)RTNj,需凈數(shù)據(jù)繼續(xù)向CMS方向轉(zhuǎn)發(fā)。
在轉(zhuǎn)發(fā)數(shù)據(jù)包中,Jid內(nèi)容由CPU對(duì)本機(jī)識(shí)別碼的四位識(shí)別位清0獲得,其它數(shù)據(jù)不變。
(2)若接收的數(shù)據(jù)包中,Mid為下級(jí)節(jié)點(diǎn)識(shí)別碼,Yid=0x000h,則數(shù)據(jù)來(lái)自CMS,需將數(shù)據(jù)繼續(xù)向下級(jí)路徑轉(zhuǎn)發(fā)。
在此轉(zhuǎn)發(fā)數(shù)據(jù)包中,Jid內(nèi)容由CPU將本機(jī)識(shí)別碼和目的機(jī)識(shí)別碼比較獲得。
(3)若接收機(jī)的數(shù)據(jù)包中,Mid為本機(jī)識(shí)別碼,判斷X=1時(shí)執(zhí)行命令字,作相應(yīng)處理。
b.RTN中斷子程序
(1)ADC轉(zhuǎn)換結(jié)束標(biāo)志EOC=1時(shí)產(chǎn)生中斷,提醒CPU將Add、Jid、Mid、Yid、X=0和氣體濃度Data依次送入nRF905模塊,準(zhǔn)備發(fā)射。最后將EOC清0,并重新啟動(dòng)ADC轉(zhuǎn)換器。中斷優(yōu)先級(jí)為低。
(2)在RTNi中,RD1=1時(shí)產(chǎn)生中斷,CPU讀取nRF9E5的數(shù)據(jù),若Payload中Jid為本節(jié)點(diǎn)識(shí)別碼,存儲(chǔ)數(shù)據(jù)并置Flagi=1;否則將Payload丟棄,F(xiàn)lagi不變。中斷優(yōu)先級(jí)為高。
此時(shí),Add=0xFFh,Mid=0x000h,Yid為本機(jī)識(shí)別碼。Jid內(nèi)容由CPU對(duì)本機(jī)識(shí)別碼的四位識(shí)別位置0獲得。
5 總結(jié)
本文根據(jù)nRF9E5的工作特點(diǎn),通過(guò)構(gòu)建新的通訊協(xié)議,將其應(yīng)用于多點(diǎn)氣體濃度無(wú)線(xiàn)檢測(cè)網(wǎng)絡(luò)系統(tǒng)。此方案硬件電路連接簡(jiǎn)單,易于調(diào)試,各節(jié)點(diǎn)編程具有通用性,適用于較大范圍內(nèi)的數(shù)據(jù)測(cè)量。將系統(tǒng)信號(hào)采樣部分稍加改造,可以應(yīng)用于智能家庭、溫度、濕度采集遠(yuǎn)程抄表等多種領(lǐng)域,因此,具有較高的實(shí)用推廣價(jià)值。