基于LPC1100的溫度檢測(cè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:基于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)簡(jiǎn)介
一個(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公司提供的精簡(jiǎn)版本的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í),蜂鳴器長(zhǎng)鳴一定時(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à)值。