一種低成本無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的設(shè)計(jì)
ZigBee由于采用國外技術(shù),其芯片價(jià)格高,限制了它的普及應(yīng)用。PT2262/PT2272系列編解碼芯片是一種采用CMOS工藝、低功耗、低價(jià)位芯片,在遙控門、防盜、玩具等產(chǎn)品中大量使用,但其在數(shù)據(jù)傳輸、安全性等方面有所不足。本文利用PIC16LF876單片機(jī)模仿PT2262編碼方式,并進(jìn)行了改進(jìn),配合433MHz高頻發(fā)射電路,實(shí)現(xiàn)了數(shù)據(jù)的無線傳輸組網(wǎng)。傳感器選用具有數(shù)字I2C接口的雙軸加速度傳感器MX6202,可以無線采集加速度、傾斜角數(shù)值,具有接口簡單、體積小、價(jià)格低的優(yōu)點(diǎn)。無線節(jié)點(diǎn)部分均選用低電壓器件,實(shí)現(xiàn)了單節(jié)鋰電池供電。特別適合網(wǎng)點(diǎn)數(shù)量龐大、對成本敏感(如家居、防盜、物聯(lián)網(wǎng)等)場合的應(yīng)用。
1 無線傳感器系統(tǒng)設(shè)計(jì)方案
無線傳感器系統(tǒng)包括傳感器節(jié)點(diǎn)與網(wǎng)關(guān)兩部分。傳感器節(jié)點(diǎn)負(fù)責(zé)實(shí)地?cái)?shù)據(jù)采集,網(wǎng)關(guān)負(fù)責(zé)接收各節(jié)點(diǎn)數(shù)據(jù),匯總處理后經(jīng)GSM/GPRS網(wǎng)絡(luò)通知用戶。本文重點(diǎn)介紹傳感器節(jié)點(diǎn),給出了軟硬件實(shí)現(xiàn)方法。無線傳感器系統(tǒng)組成如圖1所示。其中無線傳感器節(jié)點(diǎn)中的虛線框?yàn)閿U(kuò)展部分,F(xiàn)05V與J05U為微型433M發(fā)射接收模塊;無線網(wǎng)關(guān)部分負(fù)責(zé)匯總節(jié)點(diǎn)信息與外界通信,采用EM310模塊,GSM/GPRS傳輸。
圖1 低成本無線傳感器網(wǎng)絡(luò)設(shè)計(jì)框圖
傳感器網(wǎng)絡(luò)采用星形連接方式,由各無線節(jié)點(diǎn)與網(wǎng)關(guān)組成。在大部分場合下(如防盜、環(huán)境監(jiān)測等)可以采用單向通信方式,即節(jié)點(diǎn)發(fā)射、網(wǎng)關(guān)接收,這樣,圖1中的虛線部中的節(jié)點(diǎn)的超外差接收電路、網(wǎng)關(guān)的RF發(fā)射電路即可以省去。當(dāng)需要實(shí)時(shí)采集、強(qiáng)調(diào)同步性時(shí),加上虛線框內(nèi)部分,由網(wǎng)關(guān)集中控制各節(jié)點(diǎn)動(dòng)作,通過發(fā)采集或變更工作模式指令,控制各節(jié)點(diǎn),采用雙向通信方案。本文介紹的為單向通信方案。
傳感器節(jié)點(diǎn)是系統(tǒng)的重要部分,負(fù)責(zé)現(xiàn)場采集工作,其工作穩(wěn)定與否對整個(gè)系統(tǒng)具有至關(guān)重要的作用。而當(dāng)節(jié)點(diǎn)數(shù)量較多時(shí),它的成本占系統(tǒng)的絕大部分。有許多節(jié)點(diǎn)需要獨(dú)立在室外工作并由電池供電,對能耗有較高的要求。為此,本設(shè)計(jì)通過PIC單片機(jī)模擬PT2262芯片編碼,對433MHz高頻電路完成鍵控調(diào)制(ASK),省去了無線收發(fā)芯片,實(shí)現(xiàn)了通用MCU+傳感器的節(jié)點(diǎn)方案,大大降低了系統(tǒng)成本。采用的PIC超低功耗MCU,具有與MSP430相似的節(jié)能特性,選用低電壓RF模塊F05V,實(shí)現(xiàn)了系統(tǒng)的3.3V供電。
2 無線傳感器節(jié)點(diǎn)設(shè)計(jì)
2.1 節(jié)點(diǎn)硬件電路設(shè)計(jì)
無線傳感器節(jié)點(diǎn)是本文的重點(diǎn)部分,需要滿足低成本、低功耗、小體積、適合電池供電等要求。無線節(jié)點(diǎn)方案比較如表1所示。
表1 無線節(jié)點(diǎn)方案比較
(1)本節(jié)點(diǎn)設(shè)計(jì)時(shí)所用器件及其性能:選用的PIC16LF876單片機(jī),其性價(jià)比較高、外設(shè)豐富、工作穩(wěn)定,具有針對電池供電的低功耗系列;最高速率為4MIPS,工作電壓為2~5.5V,22 個(gè)I/O 口,片上集成有WDT、CCP、PWM、A/D等外設(shè),14KB Flash,368bit RAM、256bit EEPROM,具有休眠省電模式。PIC16系列單片機(jī)不同型號(hào)之間大部分可兼容,可以根據(jù)需要,選用價(jià)格更低的PIC16F72或采用納瓦(nW)及超低功耗技術(shù)的PIC16F723,程序稍作改動(dòng),器件即可封裝兼容。
(2)加速度傳感器選用數(shù)字I2C接口的雙軸加速度傳感器MXC6202,其具有±2g的測量范圍,可以測量重力加速度,小體積、低功耗、接口簡單,工作電壓范圍為2.7~3.6V,有休眠模式,在保證低價(jià)格、小體積的同時(shí),可以滿足防盜、人體姿態(tài)測量等應(yīng)用的需求。
(3)RF電路采用F05V微型發(fā)射模塊,具有2.1~3.5V的低電壓、低功耗(10mA,連發(fā))及1~10kb/s的傳輸速率,可以滿足監(jiān)控等場合數(shù)據(jù)采集的需要。小體積、低價(jià)位,只有正電源、地、數(shù)據(jù)輸入、天線(天線按照手冊由導(dǎo)線繞制而成)輸出4個(gè)接口,可以像一個(gè)三極管一樣使用它。
(4)網(wǎng)關(guān)配套的接收電路是J05U超外差接收模塊,具有與F05V類似的特點(diǎn)。使用PT2262/PT2272編解碼方案,開闊地接收距離在300m左右。
{$page$}
(5)無線節(jié)點(diǎn)采用的是電池供電的方式,因此,電池的好壞對整個(gè)系統(tǒng)的工作持久性有重要影響。本設(shè)計(jì)采用的是非充電性18650高容量鋰電池,電壓為3.7V,容量在1700mah以上,具有涓流放電、電壓恒定等特點(diǎn)。經(jīng)肖特基二極管降壓后得到約3.3V電壓為系統(tǒng)供電。節(jié)點(diǎn)的硬件原理圖如圖2所示。
圖2 無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)原理圖
圖2中右上角是PT2262的管腳圖可以看出,PIC16F876單片機(jī)保留了PT2262的8bit地址腳,4bit數(shù)據(jù)腳。這樣做是為了增加系統(tǒng)靈活性,將節(jié)點(diǎn)模塊從一個(gè)網(wǎng)絡(luò)轉(zhuǎn)移到另一個(gè)網(wǎng)絡(luò),只需變更三態(tài)編碼開關(guān)A0~A7,就可將其設(shè)置成與欲轉(zhuǎn)入網(wǎng)絡(luò)網(wǎng)關(guān)的地址(6561種)。4bit數(shù)據(jù)口D1~D4采用2bit撥碼開關(guān),為傳感器編號(hào),這相當(dāng)于節(jié)點(diǎn)在網(wǎng)絡(luò)內(nèi)的ID(16種)。
圖2中右下角為加速度傳感器MXC6202 、I2C接口。X、Y軸加速度值各為12精度??梢钥吹皆搨鞲衅鹘涌诤唵?,沒有地址編碼腳,因地址在出廠前已確定,一路I2C總線只能有一片MXC6202 。PIC16單片機(jī)集成了一路I2C接口,但為了以后擴(kuò)展多路加速度傳感器,采用軟件模擬的辦法,用RC4 、RC5 、RC6 、RC7 4個(gè)I/O口模擬了兩路I2C接口電路。此外,I2C接口類傳感器還帶有溫濕度傳感器STH1X、雙軸磁場傳感器MMC212X等,只要稍微更改程序,就可以擴(kuò)展到本系統(tǒng)上。
2.2 節(jié)點(diǎn)軟件設(shè)計(jì)
單片機(jī)主要有兩個(gè)任務(wù):模擬PT2262波形對高頻電路進(jìn)行ASK調(diào)制,模擬I2C總線讀寫MXC6202 。要想讓軟件模擬一個(gè)硬件電路,必須掌握硬件電路的工作原理:PT2262是紅外遙控編碼器,PT2272是其接收解碼器,兩者常常配對使用。發(fā)射端PT2262共有12個(gè)地址端,發(fā)射的每一組數(shù)據(jù)都由12bit脈沖組成,順序是從A0~A11,每個(gè)地址端有三種接法。常見的是用其中8bit(A0 ~A7)作為地址編碼,其余4bit(D1 ~D3)作為數(shù)據(jù)編碼,外加1bit同步碼,每組至少發(fā)送4次。接收端PT2272舍棄第一組,當(dāng)連續(xù)得到兩組與本身地址一樣的信號(hào)時(shí),則解碼。參考文獻(xiàn)[1-2]分別介紹了單片機(jī)模仿PT2262的編碼方法和PT2272的解碼方法。由于需要傳輸X、Y兩個(gè)軸各12bit加速度值,因此,每幀36bit數(shù)據(jù),幀間加1bit同步碼,傳輸4次。單片機(jī)編碼方案如圖3所示。必須注意的是,由于高頻發(fā)射具有隨機(jī)性,在不發(fā)射時(shí)表現(xiàn)為白噪聲,因此解碼時(shí)應(yīng)舍棄第一幀數(shù)據(jù),從第二幀開始解碼。
圖3 單片機(jī)編碼方案
傳輸?shù)臄?shù)據(jù)位格式分為:高電平(11) 、低電平(00) 、高阻態(tài)(01)三種,0 、1由高低電平的占空比決定。軟件中設(shè)200μs、600μs兩個(gè)延時(shí)函數(shù)。單片機(jī)調(diào)用這兩個(gè)延時(shí)函數(shù),在RA1管腳上輸出相應(yīng)的高低電平就能夠模擬出這三種狀態(tài)數(shù)值,從而完成單位數(shù)據(jù)的ASK調(diào)制。
單片機(jī)在發(fā)射前首先讀入預(yù)先設(shè)定的A0~A7 8bit三態(tài)地址,D1~D4 4bit節(jié)點(diǎn)網(wǎng)內(nèi)ID,再加上加速度傳感器X、Y軸的各12bit加速度值,共36bit數(shù)據(jù),按圖3的格式依次發(fā)送出去,就可以進(jìn)行數(shù)據(jù)傳輸了。每幀數(shù)據(jù)傳輸4次,每幀之間由大約10ms的幀間碼隔開,幀間碼由一個(gè)200μs高電平與10ms的低電平組成,發(fā)送一次數(shù)據(jù)的時(shí)間約為200ms,這樣1s內(nèi)最多可傳送5次數(shù)據(jù),在大多數(shù)場合是可以滿足要求的。為了節(jié)省能耗,可以根據(jù)需要選擇發(fā)射速率,在不發(fā)射時(shí),應(yīng)使單片機(jī)、F05V、加速度傳感器處于休眠狀態(tài)。處于休眠狀態(tài)的PIC單片機(jī)可以使用看門狗等方式喚醒。用超外差接收模塊J05U接收,可以在300m的開闊地傳輸數(shù)據(jù)。當(dāng)需要較高的數(shù)據(jù)傳輸速率時(shí),應(yīng)縮短寬窄脈沖時(shí)間長度。但需要注意的是,當(dāng)脈沖寬度減少時(shí),發(fā)射功率也同時(shí)減少。因距離與速度是矛盾的關(guān)系,當(dāng)發(fā)射功率超過20Hz時(shí),建議使用專用RF芯片。
MXC6202在使用中作為從器件,PIC單片機(jī)只要按照標(biāo)準(zhǔn)I2C時(shí)序控制MXC6202即可。參考文獻(xiàn)[3]介紹了利用單片機(jī)的普通I/O口模擬I2C總線的方法。MXC6202的地址在出廠時(shí)已經(jīng)確定了,共8種,在一路I2C總線上只能掛一個(gè)加速度傳感器。當(dāng)需要兩個(gè)MXC6202測三軸加速度時(shí),需要占兩路獨(dú)立的總線。為此,根據(jù)標(biāo)準(zhǔn)I2C時(shí)序,模擬了兩路I2C總線,以兩路循環(huán)采集。MXC6202示例驅(qū)動(dòng)程序如下:
IICStart( );//器件初始化,每次從休眠模式喚醒重新初始化
IICSendByte(0x20);//寫器件地址,MEMS傳感器地址出廠時(shí)已固定
IICSendByte(0x00);//器件內(nèi)部寄存器地址,只有一個(gè)可寫寄存器0x00
IICSendByte(0xf0);//最低位寫0,睡眠模式喚醒;寫1,進(jìn)入睡眠模式
Delay_75ms();//睡眠喚醒時(shí),需要75ms的延時(shí)//下面是依次接收:X高、X低、Y高、Y低4位數(shù)值
IICStart( );
IICSendByte(0x20);//寫MEMS傳感器
IICSendByte(0x01);
IICStart( );
IICSendByte(0x21);//讀MEMS傳感器
for(ii=0;ii<3;ii++)
{
s[ii]=IICReceiveByte();
IICAck(0);
}
s[3]=IICReceiveByte();
IICAck(1);//最后一位不應(yīng)答
IICStop( );
{$page$}
測斜度時(shí),采用查表與計(jì)算相結(jié)合的方法(器件手冊中給出了參考方法)。單片機(jī)模擬的波形如圖4所示。圖4(a)是單片機(jī)RA1口模擬PT2262發(fā)出的一串?dāng)?shù)列。圖4(b)是從MXC6202器件中讀出的一幀數(shù)據(jù),為便于觀察,將兩組波形重疊在一起,高的為總線數(shù)據(jù)線信號(hào),低的為總線時(shí)鐘信號(hào)。
圖4 單片機(jī)模擬的波形
3 無線網(wǎng)關(guān)設(shè)計(jì)
無線網(wǎng)關(guān)由主控單片機(jī)、GSM模塊和超外差接收模塊J05U等組成,負(fù)責(zé)傳感器網(wǎng)絡(luò)的管理與控制,接收節(jié)點(diǎn)傳來的數(shù)據(jù)并在必要時(shí)通過網(wǎng)絡(luò)等方式告知用戶。網(wǎng)關(guān)選用PIC18F6621單片機(jī),GSM模塊選用的是EM310模塊。網(wǎng)關(guān)主要部分原理圖如圖5所示。
圖5 網(wǎng)關(guān)主要部分原理圖
PIC18F6621單片機(jī)有:兩個(gè)串口,使用串口2與EM310通信,串口1用于外部接口,如作為GPRS DTU、連接上位機(jī)、串口攝像頭等;傳送速率最高為10MIPS;4KB RAM、64KB Flash;內(nèi)部集成有AD、WDT等外設(shè)。
EM310的1~6管腳與SIM卡電路連接。PIC18F6621有55個(gè)IO口,空余的I/O口可以接1602液晶進(jìn)行顯示。DS12C887時(shí)鐘芯片作為整個(gè)無線網(wǎng)絡(luò)的時(shí)基。需要注意的是,EM310在接通網(wǎng)絡(luò)的瞬間會(huì)產(chǎn)生一個(gè)接近2A的峰值電流,因此電源部分需有冗余,因此推薦使用開關(guān)電源。
網(wǎng)關(guān)的功能主要有三個(gè):對接收到的節(jié)點(diǎn)數(shù)據(jù)進(jìn)行解碼、判斷是哪個(gè)節(jié)點(diǎn)傳來的信號(hào)及是否需要報(bào)警、控制EM310向設(shè)定手機(jī)發(fā)送短信及撥打電話等。
解碼是編碼的逆過程,關(guān)鍵是將發(fā)射節(jié)點(diǎn)編碼的600μs 、200μs寬窄脈沖正確識(shí)別。當(dāng)單片機(jī)偵聽到開始碼(即連接J05U模塊的DATA引腳RD0產(chǎn)生第一個(gè)上升沿)時(shí),開始分析數(shù)據(jù),舍棄第一幀數(shù)據(jù),對第二幀、第三幀、第四幀進(jìn)行解碼。利用PIC單片機(jī)內(nèi)部定時(shí)器0計(jì)時(shí),當(dāng)有電平高低變化時(shí),記錄下TMR0數(shù)值,并清零,重新開始計(jì)數(shù)。這樣可以把每一個(gè)高低電平寬度記錄下來;然后比較解碼,180μs~250μs之間為窄脈沖,550μs~650μs之間為寬脈沖;并將數(shù)據(jù)幀中的前8個(gè)數(shù)據(jù)與EEPROM中預(yù)存的地址碼進(jìn)行比對,當(dāng)有兩次相同時(shí)即表明正確解碼,將節(jié)點(diǎn)ID 4bit數(shù)值,X、Y軸各12bit數(shù)據(jù)儲(chǔ)存起來并進(jìn)行處理。
EM310是一款兼容型GSM/GPRS通信模塊,硬件兼容MC55,廣泛用于數(shù)據(jù)采集、遠(yuǎn)程測試等;內(nèi)嵌TCP/IP協(xié)議,具有低價(jià)位、使用方便的特點(diǎn)。選用該模塊是為了方便系統(tǒng)GPRS功能擴(kuò)展(如加接串口攝像頭實(shí)現(xiàn)現(xiàn)場攝像、傳輸視頻等功能)。EM310進(jìn)行信號(hào)傳輸時(shí)(尤其是進(jìn)行GPRS傳輸時(shí)),會(huì)產(chǎn)生一個(gè)2A左右的尖峰電流,因此網(wǎng)關(guān)供電需要采用2A以上的電源(如開關(guān)電源等)。EM310的所有命令、數(shù)據(jù)傳輸均通過串口,支持最高波特率為115200b/s,數(shù)據(jù)包包長可以達(dá)到2KB,可以傳輸圖像數(shù)據(jù),便于系統(tǒng)以后擴(kuò)展圖像監(jiān)控功能。
EM310與PIC18F6621之間接口非常簡單,只占用RX、TX、GND三根線,采用AT指令進(jìn)行通信,除個(gè)別指令外,每條指令均以回車符作為結(jié)束標(biāo)志。本設(shè)計(jì)中用到了發(fā)送短信與撥打電話功能。發(fā)送短信AT指令為:at+cmgs=\"139XXXXXXXX\",在EM310應(yīng)答后,發(fā)送短信內(nèi)容,并以“0x1A” 結(jié)束短信內(nèi)容。撥打電話AT指令如下:ATD139XXXXXXXX;, 其中“139XXXXXXXX” 為預(yù)先設(shè)定的用戶手機(jī)號(hào)碼。
本文提出了一種低成本的無線加速度傳感器方案,采用通用單片機(jī)模仿成熟的編解碼方案,降低了開發(fā)難度與風(fēng)險(xiǎn),有明顯的價(jià)格優(yōu)勢,適合對成本敏感、而對速度要求不高的場合,如工地器材防盜、智能家居網(wǎng)絡(luò)等。節(jié)點(diǎn)選用的芯片均為低功耗芯片,采用大容量鋰電池就可以使節(jié)點(diǎn)長期工作。I2C接口的傳感器種類有很多,更換傳感器就可以實(shí)現(xiàn)磁場強(qiáng)度分布檢測、糧食倉庫溫濕度檢測等,而且PIC單片機(jī)內(nèi)集成有A/D,也可以與其他模擬輸出的傳感器結(jié)合,因此本方案有通用性。使用GPRS網(wǎng)關(guān)可以實(shí)現(xiàn)遠(yuǎn)程監(jiān)控測試。