摘要:基于NXP公司LPC1100系列處理器設(shè)計(jì)了一種溫度檢測(cè)網(wǎng)絡(luò)節(jié)點(diǎn),。介紹了網(wǎng)絡(luò)系統(tǒng)的整個(gè)設(shè)計(jì)方案和溫度檢測(cè)網(wǎng)絡(luò)節(jié)點(diǎn)的硬件設(shè)計(jì),,并給出功耗管理、溫度傳感器和ZigBee三個(gè)軟件模塊的具體軟件設(shè)計(jì)方法,。
關(guān)鍵詞:LPC1100,;功耗;溫度傳感器,;LCD,;CC2500;ZigBee
引言
Cortex-MO是32位ARM處理器中一款低功耗,、小體積的處理器,。它完美地融合了超低功耗、較高效率和低門數(shù)等優(yōu)勢(shì),,這些特性決定了它適合作為無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的處理器,。本文介紹一種基于LPC1114設(shè)計(jì)一個(gè)溫度檢測(cè)網(wǎng)絡(luò)節(jié)點(diǎn)的方案。
1 溫度檢測(cè)系統(tǒng)簡介
一個(gè)溫度檢測(cè)無線網(wǎng)絡(luò)由若干個(gè)溫度檢測(cè)節(jié)點(diǎn)組成,,各個(gè)溫度檢測(cè)節(jié)點(diǎn)之間使用無線傳感器通信,。所有的溫度檢測(cè)節(jié)點(diǎn)使用ZigBee技術(shù)組成一個(gè)無線網(wǎng)絡(luò)。各個(gè)節(jié)點(diǎn)的功能包括采集溫度,,并通過ZigBee網(wǎng)絡(luò)發(fā)送出去,。本系統(tǒng)采用TI公司提供的精簡版本的ZigBee協(xié)議中的Simp-liciTI協(xié)議來組建一個(gè)星型網(wǎng)絡(luò)。網(wǎng)絡(luò)由一個(gè)訪問接入節(jié)點(diǎn)(AP)和若干個(gè)終端節(jié)點(diǎn)(ED)組成,。其中,,AP相當(dāng)于全功能設(shè)備,負(fù)責(zé)建立整個(gè)網(wǎng)絡(luò),,并接收ED端采集的溫度信息,。所有溫度檢測(cè)節(jié)點(diǎn)都使用電池設(shè)備供電。
2 溫度檢測(cè)節(jié)點(diǎn)的硬件設(shè)計(jì)
溫度檢測(cè)節(jié)點(diǎn)主要由LPC1100系列處理器(這里使用的是LPC1114),、溫度傳感器,、ZigBee模塊、LCD顯示屏等組成,,如圖1所示,。溫度傳感器使用National Semiconductor公司的I2C接口的LM75,ZigBee模塊使用TI公司的SPI接口的CC2500芯片,,LCD顯示屏使用LCD1602字符顯示屏幕,。整個(gè)節(jié)點(diǎn)使用電池設(shè)備供電,考慮到功耗的因素,,LCD屏采用插槽設(shè)計(jì),,不需要顯示的部分節(jié)點(diǎn)可以不連接LCD。除以上各主要部分外,還有一些可選的單元,,例如UART串口,、通用I/0接口的LED、按鍵,、蜂鳴器BEEP等。
3 溫度檢測(cè)節(jié)點(diǎn)的軟件設(shè)計(jì)
溫度檢測(cè)節(jié)點(diǎn)的功能如下:
◆通過設(shè)置定時(shí)器來定期地檢測(cè)溫度,,并在LCD上顯示當(dāng)前的溫度值,;
◆將檢測(cè)到的溫度值通過ZigBee模塊發(fā)送出去;
◆當(dāng)溫度過高時(shí),,蜂鳴器長鳴一定時(shí)間報(bào)警,;
◆溫度檢測(cè)和發(fā)送之外時(shí)間,節(jié)點(diǎn)處于睡眠模式,;
◆定時(shí)器每隔1 s將處理器喚醒一次,,進(jìn)行溫度檢測(cè)和傳送。
根據(jù)這些功能,,將整個(gè)溫度節(jié)點(diǎn)的軟件劃分為如下幾個(gè)模塊:功耗管理模塊,、LCD模塊、溫度傳感器模塊,、ZigBee模塊,。
本節(jié)將重點(diǎn)介紹功耗管理模塊、溫度傳感器模塊和ZigBee模塊,。
3.1 功耗管理模塊
LPC1100系列芯片的功耗管理有3種模式,,即睡眠模式、深度睡眠模式,、深度掉電模式,。
3.1.1 3種模式的進(jìn)入和退出
3種模式的進(jìn)入和退出方式如表1所列。
3.1.2 三種模式的區(qū)別
在睡眠模式下,,如果軟件中提供外設(shè)時(shí)鐘,,則外設(shè)功能在睡眠模式下仍然可以執(zhí)行,而且可以產(chǎn)生中斷來引起處理器恢復(fù)運(yùn)行,。在深度睡眠模式下,,用戶可以配置深度睡眠時(shí)的掉電模塊以及喚醒后的上電模塊。在這兩種睡眠模式下,,處理器狀態(tài),、寄存器、外設(shè)寄存器,、內(nèi)部SRAM值被保持,,引腳的邏輯電平也不變。深度睡眠使用13個(gè)喚醒中斷來喚醒,其優(yōu)勢(shì)在于用戶可以關(guān)閉時(shí)鐘發(fā)生模塊,,從而比睡眠模式降低更多的動(dòng)態(tài)功耗,。
在深度掉電模式下,除了WAKEUP引腳外,,整個(gè)芯片上的電源和時(shí)鐘都關(guān)閉,,SRAM中的內(nèi)容也不能保持,但是可以使用4個(gè)通用的寄存器保存數(shù)據(jù),。若想在深度掉電模式下把芯片喚醒,,必須通過外部連接部件給WAKEUP引腳接上一個(gè)低電平。
3.1.3 選擇睡眠模式
本系統(tǒng)中,,溫度檢測(cè)節(jié)點(diǎn)的主要功能是每間隔一定時(shí)間檢測(cè)一次溫度,,故在采集溫度的間隔期內(nèi)使芯片進(jìn)入睡眠模式。當(dāng)需要采集溫度時(shí),,通過一個(gè)定時(shí)器中斷將其喚醒,。例如,每間隔1 s采集一次溫度,,采集溫度并發(fā)送后設(shè)置一個(gè)定時(shí)器中斷,,然后調(diào)用WFI指令使芯片處于睡眠模式。為了便于觀察,,設(shè)置一個(gè)LED燈閃爍以指示采集溫度的頻率,。同時(shí),如果檢測(cè)到溫度過高,,則使用蜂鳴器報(bào)警,。如果連接了液晶屏幕,也可在液晶屏幕上顯示溫度值,。
main函數(shù)中的主要代碼如下:
調(diào)用WFI指令后程序就停止運(yùn)行,,等到定時(shí)器中斷發(fā)生后就可以將處理器喚醒,程序接著運(yùn)行WFI指令后的代碼,。定時(shí)器中斷的代碼如下:
3.2 溫度傳感器模塊
溫度傳感器LM75使用標(biāo)準(zhǔn)的I2C接口,。本節(jié)點(diǎn)中,LPC1114與LM75的硬件接口如圖2所示,。
LM75的地址線A0~A2都接地,,0S引腳懸空,故本節(jié)點(diǎn)僅僅使用其基本的溫度測(cè)量功能,。LM75內(nèi)部有5個(gè)寄存器:指針寄存器,、配置寄存器、溫度寄存器,、溫度設(shè)定寄存器和溫度滯后寄存器,。通過指針寄存器來選擇其余4個(gè)寄存器進(jìn)行操作。本節(jié)點(diǎn)主要是讀取溫度寄存器中的溫度值,溫度寄存器中高9位值為有效的溫度值,。該寄存器讀出的值是以二進(jìn)制補(bǔ)碼的格式給出的,,其LSB(最低有效位)每一個(gè)單位表示0.5℃,例如+0.5℃對(duì)應(yīng)001H,。其可表示的范圍為-55~+125℃,。
在使用該溫度傳感器時(shí),需要調(diào)用以下兩個(gè)API函數(shù):
3.3 ZigBee模塊
本節(jié)點(diǎn)的ZigBee模塊使用T1公司的CC2500芯片,,使用SimpliciTI協(xié)議來組建網(wǎng)絡(luò),。其硬件連接如圖3所示。
在使用CC2500時(shí),,首先需要配置LPC1114的SPI各個(gè)引腳。另外,,還需要將引腳GD00與GDO1配置為MCU中斷,,用來控制收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包。再按照CC2500的初始化時(shí)序來初始化CC2500芯片,,然后交給上層的組網(wǎng)函數(shù)去調(diào)用,。CC2500的初始化步驟如下:
①與MCU相連的SPI接口初始化;
②SCLK=1,,SI=O,;
③CSn=0;
④CSn-1,,延時(shí)40μs,;
⑤CSn=0;
⑥等待S0引腳變低,;
⑦在SI引腳上發(fā)命令SRES,;
⑧等待SO引腳再次變低。
此時(shí)如果能正常地讀寫相應(yīng)寄存器,,則表示CC2500初始化成功,。
CC2500初始化成功后,需要配置CC2500的寄存器,,以及設(shè)置數(shù)據(jù)包的收發(fā)中斷,。由于CC2500寄存器較多,請(qǐng)參考CC2500官方網(wǎng)站的參考代碼,。數(shù)據(jù)包的收發(fā)中斷是根據(jù)配置寄存器的值來控制的,。通過設(shè)置這些寄存器的值,可將GDO0,、GDO1配置為收發(fā)數(shù)據(jù),。這里,配置IOCFG0寄存器的值為0x6,即在開始接收或者發(fā)送一個(gè)數(shù)據(jù)包時(shí),,在GDO0引腳產(chǎn)生一個(gè)高電平跳變,;接收或者發(fā)送完后,再變回低電平,。因此,,將GDO0引腳即PIO2_5配置為輸入引腳,上升沿中斷,。代碼如下所示:
此時(shí),,如果發(fā)送或者接收到數(shù)據(jù),就可以產(chǎn)生中斷,。如果是接收數(shù)據(jù),,則在中斷處理函數(shù)PIOINT2-IRQHan-dler中就必須調(diào)用一個(gè)接收函數(shù)。
還有一些涉及到底層通信的地方需要修改,,例如:
將底層與硬件相關(guān)的函數(shù)都修改好后,,就可以使用上層的組網(wǎng)函數(shù)了。CC2500組網(wǎng)API函數(shù)主要包括如下幾個(gè)函數(shù):
進(jìn)行組網(wǎng)時(shí)需要先調(diào)用SMPL_Init進(jìn)行初始化,,然后根據(jù)節(jié)點(diǎn)的功能來調(diào)用SMPL_Link或者SMPL_LinkListen函數(shù)組成一個(gè)無線網(wǎng)絡(luò),。最后調(diào)用SMPL_Receive以及SMPL_Send函數(shù)就可以收發(fā)數(shù)據(jù)了。
結(jié)語
本文介紹了一種基于LPC1114的溫度檢測(cè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)方法,。LPC1114芯片具有低功耗和高性能的特色,,加上標(biāo)準(zhǔn)的I2C、SSP等接口,,為很多標(biāo)準(zhǔn)接口部件的移植提供了方便,。I2C接口的溫度傳感器,也可以替換成I2C接口的濕度傳感器,、氣敏傳感器等,,以建立一個(gè)基于ZigBee的無線傳感器網(wǎng)絡(luò)。該設(shè)計(jì)方案對(duì)無線環(huán)境監(jiān)控網(wǎng)絡(luò),、無線抄表網(wǎng)絡(luò)等無線傳感器網(wǎng)絡(luò)中的節(jié)點(diǎn)設(shè)計(jì)具有一定參考價(jià)值,。