基于nRF905的低功耗溫濕度無線測量系統(tǒng)
摘要:為實現(xiàn)溫濕度測量和無線數(shù)據(jù)傳輸,該設(shè)計使用AVR系列低功耗單片機ATmega16L作為控制芯片,低功耗芯片nRF905作為無線收發(fā)模塊,并設(shè)計了基于數(shù)字溫濕度傳感器SHT11的溫濕度無線測量系統(tǒng),最后給出該系統(tǒng)的相關(guān)硬件組成電路和數(shù)據(jù)傳輸流程圖。經(jīng)測試,系統(tǒng)運行穩(wěn)定可靠,通信距離很遠,且溫濕度測量精確,具有很廣泛的應(yīng)用前景。
關(guān)鍵詞:無線通信;nRF905;溫度測量;濕度測量;SHT11;ATmega16L。
O 引 言
溫濕度的測量在農(nóng)業(yè)生產(chǎn)的大棚管理,倉庫糧食存儲管理,生產(chǎn)制造行業(yè),氣象觀測,恒溫恒濕的空調(diào)房科研及日常生活中被廣泛應(yīng)用??梢哉f溫濕度是影響日常的生產(chǎn)生活以及科研的一個很重要的因素。目前我國許多領(lǐng)域例如農(nóng)業(yè)生產(chǎn)等仍采用測溫儀器與人工抄錄、管理相結(jié)合的傳統(tǒng)方法,這不僅效率低,而且會由于判斷失誤和管理不力造成很多嚴重損失。
系統(tǒng)以自帶SPI和兩線串行接口的低功耗單片機ATmega16L為控制芯片,采用nRF905芯片組成的無線收發(fā)節(jié)點,利用數(shù)字溫濕度傳感器SHT11完成對環(huán)境的溫濕度測量系統(tǒng)。同時該系統(tǒng)留出MAX232接口以方便與PC機通訊,實現(xiàn)溫濕度的實時顯示以及監(jiān)測功能。
1 系統(tǒng)描述
如圖1,圖2所示為低功耗溫濕度無線測量系統(tǒng)的發(fā)送和接收模塊的框圖。
其中圖1為無線發(fā)送模塊,以Atmega16L為主控制核心,控制溫濕度傳感器SHT11采集環(huán)境的溫濕度,然后利用nRF905無線傳輸模塊將采集到的溫濕度數(shù)據(jù)發(fā)送給溫濕度測量無線接收模塊進行相應(yīng)處理。
圖2為溫濕度測量無線接收模塊,以Atmega16L為主控制核心,利用nRF905無線傳輸模塊接收溫濕度數(shù)據(jù),然后利用MAX3232上傳給PC機,利用相關(guān)上位機軟件實時監(jiān)測。
2 硬件電路設(shè)計
2.1 3.3 V供電電源模塊
本設(shè)計所需的電壓為3.3 V,故采用LM1117-3.3電源供電系統(tǒng),如圖3所示。無線發(fā)送模塊以及溫濕度測量模塊使用的器件皆為低功耗器件。對發(fā)送端而言,可以采用5 V電池供電,很適合在野外等環(huán)境進行溫濕度測量采集。而接收端可以采用5 V開關(guān)電源供電。其核心部件LM1117-3.3是一個低壓差電壓調(diào)節(jié)器系列。壓差在1.2 V輸出,此時相應(yīng)的負載電流為800 mA。
2.2 單片機控制電路
本設(shè)計采用高性能、低功耗的8位AVR微處理器ATmega16L作為控制芯片。
首先對于ATmega16L具有先進的RISC結(jié)構(gòu),大多數(shù)指令執(zhí)行時間為單個時鐘周期,是具有最高MIPS/mW能力的8位單片機。此外它還具有512 B的E2PROM,可在掉電時存儲用戶信息,并采 用FLASH存儲技術(shù),可使單片機的內(nèi)部存儲單元能夠在線重復(fù)擦寫1 000次以上。
其次,Atmega16L的工作電壓范圍為2.7~5.5 V,具有睡眠模式,空閑模式,掉電模式以及省電模式,這些多樣的模式也使得Atmega16L成為低功耗產(chǎn)品的最佳控制芯片之一。
最后,Atmega16L提供二線數(shù)字串行接口SDA和SCL,接口簡單。支持主機和從機操作器件可以工作于發(fā)送器模式或接收器模式,并且支持多主機仲裁。
2.3 無線收發(fā)模塊
無線收發(fā)芯片采用挪威Nordic公司的單片無線收發(fā)器芯片nRF905。工作電壓為1.9~3.6 V,工作于433/868/915 MHz三個ISM頻道,最大數(shù)據(jù)速率為100 Kb/s。芯片內(nèi)部集成了頻率合成器、接收解調(diào)器、功率放大器、晶體振蕩器和調(diào)制器。其主要特點是能夠自動處理報頭和CRC冗余校驗,而且可以直接通過SPI接口來進行軟件配置。此外,其功耗非常低,以-10 dBm的輸出功率發(fā)射時電流只有11 mA,工作于接收模式時的電流為12.5 mA,并內(nèi)建有空閑模式與關(guān)機模式,易于實現(xiàn)節(jié)能。
nRF905的應(yīng)用電路如圖4所示。電路主要利用nRF905與外圍器件構(gòu)成的電路組成無線發(fā)送接收電路,圖4展示的是用nRF905差分連接的環(huán)形天線圖。其中,nRF905模塊的SPI接口引腳MOSI,MISO,SCK引腳分別接Atmega16L的SPI接口引腳:PB5(MOSI),PB6(MISO),PB7(SCK)。nRF905的SPI接口工作于從機模式,并且利用環(huán)形天線發(fā)射信號。
為了充分利用能量,nRF905分別設(shè)定了兩種工作模式和兩種節(jié)能模式,分別由TRX_CE,TX_EN和PWR_UP三個引腳決定。因此,設(shè)計使用Atmega16L的PA2~PA7連接至nRF905的控制檢測,用于切換模式以及配合通信。表1為nRF905的工作模式及相應(yīng)功能。
2.4 溫濕度測量模塊
本設(shè)計的溫濕度測量所采用的是瑞士Sensiri2on公司生產(chǎn)的具有二線串行接口的單片全校準數(shù)字式新型相對濕度和溫度傳感器SHT11,SHT11可用來測量相對濕度、溫度和露點等參數(shù),具有數(shù)字式輸出、免調(diào)試、免標定、免外圍電路及全互換等特點。
SHT11的濕度/溫度傳感器系統(tǒng)測量相對濕度的范圍是0~100%,分辨力達0.03%RH,最高精度為±2%RH。測量溫度的范圍是-40~+123.8℃,分辨力為O.1℃。
SHT11傳感器默認的測量溫度和相對濕度的分辨率分別為14位和12位,通過狀態(tài)寄存器可降至12位和8位,并具有可靠的C2RC數(shù)據(jù)傳輸校驗功能。另電源電壓范圍為2.4~5.5 V;電流消耗?。簻y量時為550 μA,平均為28 μA,休眠時為3μA。是低功耗產(chǎn)品的最佳選擇之一。
SHT11的應(yīng)用電路如圖5所示,VDD與GND間通過O.1μF的去耦電容相連,且其I2C接口的SCK,DATA直接與Atmega16L的兩線串行接口通過4.7 kΩ上拉電阻SCL與SDA相連,用于數(shù)據(jù)的傳輸交換。
2.5 上位機接口電路
為了便于監(jiān)控,引入上位機功能,并加入串口通信模塊。3.3 V到RS 232電平(±12 V)的專用轉(zhuǎn)換芯片MAX3232的外圍電路如圖6所示,其中五個電容均取O.1μF的典型值。串口DB9只用三根線,5端公共端接系統(tǒng)的地,2,3端分別是接收和發(fā)送端。DB9接口通過交叉串口線連到PC機上,這樣就可以完成硬件串行通信。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件設(shè)計包括溫濕度測量和無線收發(fā)兩個部分。
3.1 溫濕度測量
對于溫度和濕度,它們并非是急劇變化的物理量,溫濕度的變化往往是緩慢進行的,因此針對這個特點對于溫濕度的測量采集并非需要時時刻刻都在進行。而是每隔T時間(T根據(jù)實際需要而定,本系統(tǒng)選用1 s)采集一次,其余時間由于低功耗的要求使得MCU處于休眠狀態(tài)。其程序流程如圖7所示。其中Atmega16L進入休眠狀態(tài)是通過對SE編程休眠使能,并且對SM 2.0編程后進入相應(yīng)的省電模式狀態(tài),然后通過定時器的計時中斷將Atmega16L喚醒,再進行測量以及數(shù)據(jù)傳輸。
3.2 無線收發(fā)
對于無線發(fā)送而言,在測量發(fā)送數(shù)據(jù)以后,應(yīng)考慮到數(shù)據(jù)傳輸?shù)目煽啃?,因此加上校驗功能,并且為防止偶然的發(fā)送失敗帶來的不良后果,采取定時等待,超時后重發(fā),收到接收主機命令后才進入休眠的模式。具體流程圖如圖8所示。
對于接收端而言,所完成的任務(wù)是時刻檢測無線接收模塊,對于收到的數(shù)據(jù)進行校驗,如果正確收到數(shù)據(jù)則無線發(fā)送相關(guān)指令告知接收端,使其能夠盡快進入休眠省電模式,并且通過上位機顯示溫濕度;而接收到錯誤數(shù)據(jù)后不做任何處理,等待接收端再次發(fā)送數(shù)據(jù)。
相應(yīng)的初始化程序如下:
unsigned char RFConf[11]=
{
Ox00, //配置命令//
0x6C, //CH_NO,配置頻段在433.2 MHz
OxOC,//輸出功率為10 dB,不重發(fā),節(jié)電為正常模式
0x44, //地址寬度設(shè)置,為4 B
0x02,0x02, //接收發(fā)送有效數(shù)據(jù)長度為3 B
0xE0,0xE0,0xE0,0xE0, //接收地址
0x1E, //CRC充許,16位CRC校驗,外部時鐘信號使能,16 MHz晶振
};
for(unsigned char i=0;i<11;i++)
SPDR=RFConf[i];
//SPDR是Atmegal-16L的SPI數(shù)據(jù)寄存器,相應(yīng)配置見數(shù)據(jù)手冊;
而實際操作過程中通過對nRF905發(fā)送與接收實現(xiàn)是通過以下命令實現(xiàn):
寫發(fā)射數(shù)據(jù)命令:20H;
讀發(fā)射數(shù)據(jù)命令:21H;
寫發(fā)射地址命令:22H;
讀發(fā)射地址命令:23H;
讀接收數(shù)據(jù)命令:24H。
4 結(jié) 語
該系統(tǒng)采用AVR系列低功耗單片機ATmega16L作為控制芯片,低功耗芯片nRF905作為無線收發(fā)模塊,設(shè)計并實現(xiàn)了基于數(shù)字溫濕度傳感器SHT11的溫濕度無線測量系統(tǒng),這些低功耗產(chǎn)品使得該系統(tǒng)耗電量小,并且又特別適合將該系統(tǒng)小型化,智能化,儀表化。無線發(fā)射功能又代替了人工抄表的繁瑣,使得本系統(tǒng)有著廣泛的應(yīng)用前景。