一种低功耗的无线瓦斯传感器节点设计
俄罗斯OPTOSENSE公司生产的红外吸收式甲烷气体传感器MIPEX采用非色散红外技术(NDIR)原理进行设计,其光源采用非传统的节能LED光源。该光源系统采用了先进的算法产生优化的辐射光谱,光线通过布满甲烷的光学系统后到达含有硒化铅和硒化镉的光敏二极管上,从而对甲烷浓度进行监测。传感器内置温度传感器,并且内部集成信号处理和温度补偿系统,自行输出数字信号。数字信号可以有效地避免外部环境对其输出信号的影响。传感器输出的数字信号遵循UART格式。
本文所选用的无线收发芯片是CC2430,电源采用电池组供电。随着电池能量的消耗,电池组输出的电压变化较大,很容易超出传感元件所要求的工作电压范围,因此需要选择合适的稳压器件,给传感器元件和无线收发电路提供稳定的工作电压。主要考虑如下:
①节点拟采用3~4节5号电池供电,即对于稳压器件来说,其输入电压范围为4.5~6 V;
②MIPEX传感器工作电压范围为3~4.5 V,而CC2430无线收发芯片的工作电压范嗣为2~3.6 V,这里将两者电压统一选择为3.3 V,这就要求稳压器输出电压为3.3 V;
③无线收发模块最大工作电流为27mA,MIPEX传感器平均工作电流为1 mA,所以要求所选择的稳压器件能提供不低于28 mA的输出电流;
④所选择的稳压器件静态时的工作电流一定要尽可能小,以便节省能量。
考虑到同时满足以上4点要求,本文选择了深圳明和科技公司生产的低压差线性稳压器MH5333。
它的输入电压最高可达10V,输出电压为3.3V;最大输出电流达500mA,静态电流为1μA。可见MH5333稳压器件能较好地满足上述要求。
由3~4节5号电池串联作为稳压器MH5333的输入,其输出(3.3 V)为无线收发电路和传感器元件提供电源。无线收发电路与传感器元件之间通过串口进行数据传输。CC2430的引脚P0.0和P0.1分别连接了一个LED灯,方便后面调试程序及观察程序的执行情况。为了降低能耗,这里采用CC2430的一个引脚控制MIPEX传感器的电源。MIPEX传感器对其电源的要求是电源电压在3~4.5 V范围内,输出功率在0.02~0.25 W。CC2430的P1.0和P1.1两个引脚可以提供20 mA的驱动电流,可见CC2430的P1.0和P1.1两个引脚的输出功率能够满足这一要求。这里选
择CC2430的P1.0引脚控制MIPEX传感器的电源。甲烷传感器MIPEX的TXD和RXD引脚分别连接CC2430的P0.2和P0.3引脚,即连接到CC2430的异步串行接口0的RXD和TXD端。
2 节点软件设计
红外甲烷气体传感器MIPEX输出的数字信号遵循UART格式,要求波特率为9 600,8个数据位,1个停止位,无奇偶校验位。MIPEX传感器的控制指令遵循ASCII码,并且每一个控制命令末尾都要以回车结尾。每个MIPEX传感器都有自己的地址,其范围为00~FF。出厂时默认地址为00,用户可以自己改写。由于每个无线瓦斯传感器节点只带有一个MIPEX传感器,不需要修改其地址。
MIPEX传感器的数据查询命令为DATA。当CC2430需要查询MIPEX传感器中的浓度信息时,首先要向MIPEX传感器发送一组命令:44 41 54 41 0D。其中前4个字节分别是“D A T A”所对应的ASCII码值,最后的“0D”为回车符的ASCII码。MIPEX传感器接收到查询命令后,其返回值为Concl。该返回值是以一个5位的ASCII码来表示浓度信息的,结尾仍然是一个回车符(0Dh)。例如,甲烷气体浓度为1.86%,传感器的返回值为00186。48 48 49 56 54分别为0 0 1 8 6的ASCII码,如下所示。
传感器上电后,需要60 s的热身时间。在这期间,传感器输出的不是浓度信息,一般为FFFF。60 s过后,传感器才输出正确的测量值。因此在设计读写传感器的程序时,等传感器上电1 min后,再向其发送数据查询及读取命令,否则读取的数据没有意义。
无线收发芯片CC2430有4种工作模式:PM0、PM1、PM2和PM3。其中PM3模式最省电,但只能被外部中断唤醒;PM2模式比较省功耗而且可以被定时唤醒。这里的低功耗设置是让CC2430工作于PM2模式。ZigBee协议栈的低功耗实现分为两个部分:一个是没有任务需要执行时,自动进入低功耗模式;另一个是CC2430周期性采集瓦斯浓度信息时的低功耗设计。ZigBee协议栈在进行任务轮询时,如果没有需要执行的任务,其会自动进入低功耗模式。具体实现是在协议栈主循环程序osal_start_system中调用osal_pwrmgr_powerconserve()低功耗函数。该函数把获取OS层timer下一次到时的时间作为参数,调用hal_sleep()进入PM2睡眠模式。如果当前没有任务,那么将进入PM3。在后续程序中,每次都设置一个传感器读取事件,即如果自动进入睡眠模式,则一定是进入PM2模式。睡眠前设置Timer2(睡眠定时器),醒来的时间刚好等于下次任务到来的时间,当完成任务后再次进入睡眠。
根据传感器的操作要求,设置无线瓦斯传感器按照以下的流程进行工作。节点处于工作/休眠交替状态,一个工作周期约为10 min。在前8分30秒中CC2430的P1.0引脚输出低电平,控制MIPEX传感器不工作。紧接着,CC2430进入低功耗运行模式。8分30秒过后,CC2430被唤醒,P1.0引脚输出高电平,即给MIPEX传感器供电。此时CC2430进入PM1低功耗模式。由于MIPEX传感器的热身时间为1min,这里设置70s后,CC2430被唤醒,开始读取MIPEX中的瓦斯浓度信息,然后将其无线发送出去。待发送完毕后,设置下一次瓦斯浓度读取事件,周期为20 s,这20 s内,CC2430自动进入低功耗模式。20 s之后,触发该事件,并送给应用层处理,开始了上述循环过程。程序设计的具体流程如图1所示。
无线瓦斯传感器节点的工作流程主要是在zb_HandieOsalEvent(events)编程实现的,具体程序为:
评论