一款基于Zigbee的温度湿度监测系统设计
传感器模块采用温湿度传感器SHT10,负责采集温度、湿度数据,其工作电压为2.4~5.5 V,测湿精度为±4.5%RH,25℃时测温精度为±0.5℃。由于传感器SHT10既可以采集温度数据也可以采集湿度数据。它用两条串行线与处理器进行数据通信,SCK数据线负责处理器和SHT10的通讯同步;DATA三态门用于数据的读写。将模拟量转换为数字量输出,所以用户只需按照它提供的接口将温湿度数据读取出来即可。数据采集完成后Zigbee无线通信芯片将数据经路由器传输到协调器,这样温湿度采集节点便完成了一次工作周期。本设计中CC2430的引脚P0_0用于连接SCK,P0_4用于连接DATA。
4 系统软件设计
本系统软件设计基于TI公司推出的CC2430芯片配套的Z—Stack协议栈和IAR集成开发环境。在TI免费协议栈的基础上,通过修改其应用层来实现不同的功能。一般情况下,我们只需要添加三个文件就可以完成一个项目,一个是主文件,存放具体的任务处理函数,一个是这个主文件的头文件,另一个是操作系统接口文件,专门存放任务处理函数数组tasksArr[]的文件。无需改动Z—Stack核心代码,大大增加了项目的通用性和易移植性。我们把Coordinator、Router和End Device这三种设备一起添加到项目中,在“project==>edit configurations”中,分别建立“Coordinator”“Router”及“EndDevice”三种设备的项目设置。无线传感器网络代码包括协调器代码、路由器代码、传感器节点代码。这些代码都在同一个工程文件中,通过条件编译的方式将代码分成不同的功能。
4.1 协调器节点设计
在一个Zigbee无线网络中,协调器作为网络的中心节点最先启动。复位上电以后,首先进行系统初始化。完成之后,就会扫描DEFAULT_ CHANLIST指定的信道,最后选择一个合适的信道建立网络,等待有子节点加入时,就会发出入网响应。子节点加入网络成功后,协调器接收到传来的数据包,解析出数据源的短地址、温度和湿度值并将其传送给PC显示出来。其流程图如图3所示。
4.2 子节点设计
路由器和终端设备启动后,将扫描DEFAULT_CHANLIST指定的频道。首先进行初始化,然后申请加入网络成功之后,通过JionAsRouter= TRUE?判断是否为路由器。如果是,则等待终端设备传来的温湿度数据,接收后再转发给协调器。如果是终端设备,传感器节点在不同工作模式下功耗大不一样,为了降低功耗,它平时应该处于休眠模式,被唤醒后才将数据发给父节点,发送完后再次进入休眠模式。通信协议应该简单有效,发送节点信息时使用短地址发送,使得节点的运算开销尽量小,这样可大大延长节点的寿命。子节点通信流程如图4所示。
传感器节点每隔一段时间采集一次温度、湿度值,然后把数据打包传输给父节点,如果传输成功,节点进入休眠状态;如果传输不成功,就再重新采集数据传输数据,直到成功为止。温湿度传感器烧写步骤:在项目的应用层(APP)中添加Humidity.c和Humidity.h文件,然后在操作系统接口文件OSAL_SampleApp.c中的任务数组tasksArr[]添加任务函数osalTaskAdd(Humidity_Init,Humidity_ProcessEvent,OSAL TASK_PRIORITY_LOW),最后运行程序没有错误后,把程序烧写到传感器节点即可。
4.3 低功耗设计
为了使节点有更长的生存时间,对传感器节点进行休眠设置。CC2430芯片采用0.18 μm CMOS工艺生产,工作时的电流损耗为27 mA;在接收和发射模式下,电流损耗分别低于27 mA和25 mA。CC2430的休眠模式和转换到主动模式时间超短,不会产生很大的时间延迟。Z—Stack提供了两种sleep模式,LITE和DEEP(PM2/PM3)。PM2模式比较省功耗而且可以被定时唤醒;PM3模式最省电但是只能被外部中断唤醒。系统在进入低功耗模式前,必须保证没有需要处理的消息或其他事件。当系统需要周期性地唤醒执行一些事件时使用PM2模式,如果当前没有任务那么将进入PM3模式。开启休眠模式如下:首先确认在配置文件f8wConflg.cfg中的DRFD_RCVC_ALWAYS_ON定义为FALSE;第二步,在IAR的Optio ns->C/C++Compiler->Defined symbols中添加编译选项POWER_SAVING;第三步,在Options->Linker->Linker command line里面把8w2430. xel改为f8w2430pm.xel;第四步,查看是否进去低功耗模式,在osal.c文件中osal_start_system()中以下部分加断点,看是否进入。
5 测试结果
采用一个协调器、一个路由器和3个温湿度传感器节点测试,各个节点与协调器相距大约50米。首先打开电源,待协调器建立网络之后,路由器和终端节点就
- 浅析基于MG2455微处理器Zigbee的汽车无线黑匣子实现(08-29)
- 基于ZigBee的城市照明监控系统网关节点的软硬件设计(01-15)
- 基于RSSI测距的定位算法的研究(01-15)
- 基于GPRS和ZigBee的远程油阀控制系统(01-17)
- 基于ZigBee无线网络的嵌入式智能家居监控系统(03-18)
- 设计实例:森林火灾实时监测与预警系统(03-18)