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