基于TinyOS的人体温湿度数据采集系统设计
传感器节点为例说明设计方法,温湿度传感器采用瑞士 SENSIRION公司的SHT10。
温湿度传感器节点的组件连接如图2所示。小矩形框内是各组件使用和提供的接口,箭头方向表示命令调用的方向。因为所有传感器节点都具有定时采样、数据处理、按协议数据收发、射频模块和MCU电源管理等功能,所以这里将与传感器有关的操作单独设计一个组件SHT10_C,在顶层配件中通过与不同类型传感器组件连接,实现各传感器节点功能。将与传感器操作无关、与应用相关的其他功能组合设计一个中间组件SensorNet_C,通过与下层配件 McuSleepC、CsmaC和CC2430ActiveMessageC连接,实现MCU电源管理、CSMA协议及射频模块控制。配件SHT10_C 和SensorNet_C仅提供组件间连接关系,其实现分别由SHT10_M和SensorNet_M完成。在调用命令Send.send()发送数据时,首先进行清洁信道评估,如果信道被占用,则需要退避一段时间。退避时间由随机函数产生一个1~31之间的随机数,与一个给定初始值(这里设为160 μs,即10 symbols)相乘而得。初始值可以根据网络中节点数量进行调整,节点少则初始值小,反之则适当加大。
温湿度传感器节点的顶层配置组件程序#e#
温湿度传感器节点的顶层配置组件程序如下:
configuration SensorNodeSHT_C
{
}
implementation {
components MainC; /*TinyOS2主模块,这里用于关联系统启动*/
components new TimerMilliC() as TimerC;
components SensorNet_C; /*射频模块、CSMA协议及MCU电源管理控制配置组件*/
components SHT10_C; /*温湿度传感器SHT10配置组件*/
components SensorNodeSHT_M; /*顶层模块组件*/
SensorNodeSHT_M.Boot-》MainC.Boot;
SensorNodeSTH_M.Timer-》TimerC;
SensorNodeSTH_M.RFControl-》SensorNet_C;
SensorNodeSTH_M.AMPacket-》SensorNet_C;
……
SensorNodeSTH_M.Send-》SensorNet_C;
SensorNodeSTH_M.SHT-》SHT10_C; /*实现接口STH的连接*/
}
在配件SensorNet_C中,通过连接配件CC2430ActiveMessageC使用模块组件CC2430ActiveMessageP中提供的射频功能。CC2430ActiveMessageP是射频堆栈中的顶层组件,提供单跳通信实现方法。通过连接配件McuSleepC使用模块组件 McuSleepP中的MCU电源管理功能,实现MCU睡眠、定时和启动等功能,以降低节点功耗。需要在使用McuSleepP组件的上层组件 SensorNet_M中实现事件McuSleepControl.beforeSleep()和 McuSleepControl.afterWakeup(),以保护和恢复睡眠前后的状态。
温湿度传感器SHT10具有两线制串行接口,输出已校准数字信号。这里定义SHT10的接口SHT如下,需要在模块组件SHT10_M中实现接口所定义的命令。
interface SHT{
command error_t read(); /*在传感器模块组件STH10_M中实现*/
event void readDone(error_t result,uint16_t temperature,uint16_t humidity); /*在顶层模块组件SensorNodeSHT_M中实现*/
}
中心节点实现射频数据接收,然后通过串口将数据送给PC机。其顶层配置文件如下:
configuration CenterNode_C{
}
implementation{
components CenterNode_M; /*顶层模块组件*/
components MainC;
components CC2430ActiveMessageC as ActiveMessageC;
components ABSC; /*串口通信控制组件*/
CenterNode_M.Boot-》MainC.Boot;
CenterNode_M.RFControl-》ActiveMessageC;
CenterNode_M.AMPacket-》ActiveMessageC;
CenterNode_M.Packet-》ActiveMessageC;
CenterNode_M.Receive-》ActiveMessageC.Receive;
CenterNode_M.ABS-》ABSC;
}
2 传感器节点功耗计算
对人体生理参数进行采集,尤其在室外应用中,低功耗对于电池供电的传感器节点来说非常重要。以下应用参考文献[6]中的方法对本设计中的传感器节点的功耗进行计算。采用3.3 V直流电源供电,将一个1%精度的10 Ω电阻与CC2430EM串联,通过测量电阻两端的电压降来计算一个采样周期中各个时间段的电流。设采样周期T=10 s,CC2430射频输出功率设置为100%,图3为使用示波器TPS2024在传感器节点发送数据时获取的电阻两端电压变化波形图,水平方向2.50 ms/div,垂直方向100 mV/div。表1为活动期间的电流消耗。
一个采样周期T内低功耗模式时间(A段、G段,CC2430在PM2模式下):
TPM2=T-Ton=10000 ms-20.45 ms=10 451.65 ms
低功耗模式下(CC2430在PM2模式下)电流消耗:
0.000 5 mA×10 451.65 ms=5.225 8 mA·ms
一个采样周期T内总电流消耗:
472.1 mA·ms+5.225 8 mA·ms)/(3 600 000 ms/h)=1.326×10-4 mAh/10 s
- 浅析基于MG2455微处理器Zigbee的汽车无线黑匣子实现(08-29)
- 基于ZigBee的城市照明监控系统网关节点的软硬件设计(01-15)
- 基于RSSI测距的定位算法的研究(01-15)
- 基于GPRS和ZigBee的远程油阀控制系统(01-17)
- 基于ZigBee无线网络的嵌入式智能家居监控系统(03-18)
- 设计实例:森林火灾实时监测与预警系统(03-18)