3 软件设计
在软件设计的时候,主要考虑的问题仍然是节能,所以需要采用一些可以降低功耗的设计方法,比如:精简冗余指令、优化系统的时钟和优化工作时序等。
3.1 主程序设计
主程序开始后首先进行初始化,包括给相应的字符名称赋值,设置串口通信参数等,然后进行通信链路的确定,这一步需要根据每个节点所在的位置和相邻节点的位置来确定,所以需要先发送本身的序列号,再接收其他节点的信息,通过确认其他节点的序列号来得知相邻的,可互相通信的节点,再将其他节点的序列号加在本身序列号之后进行发送,这样,监控中心可根据接收的序列号的顺序得到该条通信线路上所包含的所有节点。在序列号发完以后进入睡眠模式,直到被温度测试指令唤醒以后,给DS18B20发初始化脉冲,发送skipROM命令,进行温度的检测,将测得的数据发送,复位中断返回,再次进入睡眠模式[8],流程图如图5所示。
图4 AT89C2051的外围部分接线
图5 主程序流程图
3.2 温度采集程序设计[9]
由于DS18B20由一根单线实现数据的读和写,所以使用的关键是总线时序设置。先初始化,接着主机释放总线进入接收状态。流程图如图6所示。
3.3 无线传输程序设计[10]
nRF24L01的设置包括:频道设置、本地地址设置和发射速率设置等。本设计中,使用Enhanced ShockBurstTM 收发模式。设置完成后,可以由单片机进行查询模式的数据发送,流程图如图7,图8所示。
图6 DS18B20温度检测部分流程图
图7 nRF24L01发送流程图
图8 nRF24L01接收流程图
4 性能测试
4.1 节点功耗测试
检测状态时功率=DS18B20的典型功率+AT89C2051在工作状态时的功率+nRF24L01工作在RX和TX模式下的功率=3 V×1 mA+3 V×2.5 mA+3 V×(11.3+12.3) mA=3 V×27.1 mA=81.3 mW
数据转发时功率=AT89C2051在工作状态时的功率+nRF24L01工作在RX和TX模式下的功率=3 V×2.5 mA+3 V×(11.3+12.3) mA=80.3 mW
休眠时功率=AT89C2051在休眠时的功率+ nRF24L01工作在休眠模式下的功率 =3 V×2.5 μA+3 V×900 nA=3 V×3.4 μA=10.2 μW
4.2 通信质量测试
在室外无障碍的环境下进行测试,分别选取5个测试距离,接收到的正确率见表1。
表1 通信距离和正确率的关系
[通信距离 /m\&正确率 /%\&5\&100\&10\&100\&20\&99\&50\&10\&80\&0\&]
5 结 语
该无线传感器网络节点电路简单,功耗低,性能稳定,可靠性高,可以应用于检测环境、粮库及展厅等封闭空间或其他需要多点温度检测的场合。
参考文献
[1] 孙利民,李建中,陈渝,等.无线传感网络[M].北京:清华大学出版社,2005.
[2] AKYILDIZ I F, SU W, CAYIRCI E. Wireless sensor networks: a survey [J]. Computer Ne tworks, 2002, 38(3): 393?422.
[3] 张晓彤.无线传感器网络与人工生命[M].北京:国防工业出版社,2008.
[4] 曾勇,杨涛,冯月晖.基于nRF24L01的超低功耗无线传感器网络节点设计[J].电子技术应用,2008(7):45?48.
[5] 焦凤昌,龚仁喜,臧慧,等. 一种新型的无线低功耗环境指数传感器[J].传感器与微系统,2013(8):81?84.
[6] 求是科技.单片机典型模块设计实例导航[M].北京:人民邮电出版社,2004.
[7] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004.
[8] 佘东,胡中玉.基于单片机的无线测温系统设计[J].微型机与应用,2012,31(13):78?80.
[9] 蔡美琴,张为民.MCS?51系列单片机系统及其应用[M].2版.北京:高等教育出版社,2004.
[10] 张培仁.基于C语言编程MCS?51单片机原理与应用[M].北京:清华大学出版社,2003.