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