微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于LPC1100的温度检测网络节点设计

基于LPC1100的温度检测网络节点设计

时间:09-28 来源:互联网 点击:

摘要:基于NXP公司LPC1100系列处理器设计了一种温度检测网络节点。介绍了网络系统的整个设计方案和温度检测网络节点的硬件设计,并给出功耗管理、温度传感器和ZigBee三个软件模块的具体软件设计方法。
关键词:LPC1100;功耗;温度传感器;LCD;CC2500;ZigBee

引言
Cortex-MO是32位ARM处理器中一款低功耗、小体积的处理器。它完美地融合了超低功耗、较高效率和低门数等优势,这些特性决定了它适合作为无线传感器网络节点的处理器。本文介绍一种基于LPC1114设计一个温度检测网络节点的方案。

1 温度检测系统简介
一个温度检测无线网络由若干个温度检测节点组成,各个温度检测节点之间使用无线传感器通信。所有的温度检测节点使用ZigBee技术组成一个无线网络。各个节点的功能包括采集温度,并通过ZigBee网络发送出去。本系统采用TI公司提供的精简版本的ZigBee协议中的Simp-liciTI协议来组建一个星型网络。网络由一个访问接入节点(AP)和若干个终端节点(ED)组成。其中,AP相当于全功能设备,负责建立整个网络,并接收ED端采集的温度信息。所有温度检测节点都使用电池设备供电。

2 温度检测节点的硬件设计
温度检测节点主要由LPC1100系列处理器(这里使用的是LPC1114)、温度传感器、ZigBee模块、LCD显示屏等组成,如图1所示。温度传感器使用National Semiconductor公司的I2C接口的LM75,ZigBee模块使用TI公司的SPI接口的CC2500芯片,LCD显示屏使用LCD1602字符显示屏幕。整个节点使用电池设备供电,考虑到功耗的因素,LCD屏采用插槽设计,不需要显示的部分节点可以不连接LCD。除以上各主要部分外,还有一些可选的单元,例如UART串口、通用I/0接口的LED、按键、蜂鸣器BEEP等。

3 温度检测节点的软件设计
温度检测节点的功能如下:
◆通过设置定时器来定期地检测温度,并在LCD上显示当前的温度值;
◆将检测到的温度值通过ZigBee模块发送出去;
◆当温度过高时,蜂鸣器长鸣一定时间报警;
◆温度检测和发送之外时间,节点处于睡眠模式;
◆定时器每隔1 s将处理器唤醒一次,进行温度检测和传送。
根据这些功能,将整个温度节点的软件划分为如下几个模块:功耗管理模块、LCD模块、温度传感器模块、ZigBee模块。
本节将重点介绍功耗管理模块、温度传感器模块和ZigBee模块。
3.1 功耗管理模块
LPC1100系列芯片的功耗管理有3种模式,即睡眠模式、深度睡眠模式、深度掉电模式。
3.1.1 3种模式的进入和退出
3种模式的进入和退出方式如表1所列。


3.1.2 三种模式的区别
在睡眠模式下,如果软件中提供外设时钟,则外设功能在睡眠模式下仍然可以执行,而且可以产生中断来引起处理器恢复运行。在深度睡眠模式下,用户可以配置深度睡眠时的掉电模块以及唤醒后的上电模块。在这两种睡眠模式下,处理器状态、寄存器、外设寄存器、内部SRAM值被保持,引脚的逻辑电平也不变。深度睡眠使用13个唤醒中断来唤醒,其优势在于用户可以关闭时钟发生模块,从而比睡眠模式降低更多的动态功耗。
在深度掉电模式下,除了WAKEUP引脚外,整个芯片上的电源和时钟都关闭,SRAM中的内容也不能保持,但是可以使用4个通用的寄存器保存数据。若想在深度掉电模式下把芯片唤醒,必须通过外部连接部件给WAKEUP引脚接上一个低电平。
3.1.3 选择睡眠模式
本系统中,温度检测节点的主要功能是每间隔一定时间检测一次温度,故在采集温度的间隔期内使芯片进入睡眠模式。当需要采集温度时,通过一个定时器中断将其唤醒。例如,每间隔1 s采集一次温度,采集温度并发送后设置一个定时器中断,然后调用WFI指令使芯片处于睡眠模式。为了便于观察,设置一个LED灯闪烁以指示采集温度的频率。同时,如果检测到温度过高,则使用蜂鸣器报警。如果连接了液晶屏幕,也可在液晶屏幕上显示温度值。
main函数中的主要代码如下:

调用WFI指令后程序就停止运行,等到定时器中断发生后就可以将处理器唤醒,程序接着运行WFI指令后的代码。定时器中断的代码如下:

3.2 温度传感器模块
温度传感器LM75使用标准的I2C接口。本节点中,LPC1114与LM75的硬件接口如图2所示。

LM75的地址线A0~A2都接地,0S引脚悬空,故本节点仅仅使用其基本的温度测量功能。LM75内部有5个寄存器:指针寄存器、配置寄存器、温度寄存器、温度设定寄存器和温度滞后寄存器。通过指针寄存器来选择其余4个寄存器进行操作。本节点主要是读取温度寄存器中的温度值,温度寄存器中高9位值为有效的温度值。该寄存器读出的值是以二进制补码的格式给出的,其LSB(最低有效位)每一个单位表示0.5℃,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top