关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于CC2430的无线传感器网络节点设计

基于CC2430的无线传感器网络节点设计

作者:时间:2011-04-12来源:网络收藏


3.1 温湿度数据采集模块
  温湿度传感器SHT10采用类似但不兼容I2C总线的方式和处理器通信。数据通过DATA线直接读取,控制流程如图3所示。首先用一组启动传输时序进行数据传输的初始化,然后发送一组测量命令(‘00000101’表示相对湿度,‘00000011’表示摄氏温度),释放DATA线,等SHT10下拉DATA至低电平,表示测量结束,同时接收数据。
  其中产生启动传输时序的程序片段如下:
  ……
  P1_1=1;
  P1_0=1;
  wait(1);//等待1ms
  P1_1=0;
  wait(1);
  P1_0=0;
  wait(1);
  P1_0=1;
  wait(1);
  P1_1=1;
  wait(1);
  P1_0=0;
  ……
  测量温度后,通过T=d1+d2×SOT计算出温度。
  测量湿度后,再根据当前的温度,通过RH=(T℃-25)×(t1+t2×SORH)+c1+c2×SORH+c3×SORH2,计算出相对湿度。其中常量d1、d2、t1、t2、c1、c2和c3由SHT1x数据手册提供。
3.2 电源能量检测模块
  无线传感器网络节点通常采用电池供电,电池的能量检测是重要环节。CC2430的ADC模块不仅可以采样P0端口引脚上的输入电压,还可以采样AVDD_SoC引脚上的1/3电压。这个功能通常用于实现电池的能量检测,即检测当前的电源电压是否在CC2430所能工作电压范围2.0~3.6V内。完成一次AD转换的控制流程是:首先设置AVDD_SoC引脚上电压的1/3为采样输入,然后启动AD转换,等待AD转换结束,寄存器ADCH:ADCL中的数据即为参考电压的相对数值。
  由于是对电池能量的检测,可以采用CC2430内部提供的1.25V电压作为参考电压。用这个参考电压采样AVDD_SoC引脚上的1/3电压,从而得出当前的电源电压值。选用8位的采样精度,则寄存器ADCCON3应配置为0x0F。设置完寄存器后,ADC立即启动一次AD转化,寄存器ADCCON1的EOC位用于指示当前的转化是否结束。当EOC位变为1时,证明当前的转换完成,转换后的数值被存放在寄存器ADCH中。ADCH中的数值被读取后,EOC位自动恢复为0。根据取出的数值计算得到当前AVDD_SoC上引脚的电压。通过连续采样10次进行均值滤波,用这个平均值与用户设定的最低有效工作电压2.4V相比,可判断出当前电压是否正常。该模块的程序流程图如图4。
  其中由DATA[0...9]的均值Average计算实际电压的代码如下:
  ……
  Voltage=( (Average*15)>>9);//Voltage为实际电压的10倍
  ……
3.3 无线通信模块
  无线传感器网络通信的基础是节点之间的点对点通信。本小节以两个节点之间的通信为例,介绍了点对点通信的过程和实现方法。首先,定义一种比IEEE802.15.4规范所定义的MAC协议层数据帧简单的MAC层数据帧的格式:


  其中目标地址和源地址分别用1个字节表示。本例中只有两个节点互相通信,分别将两个节点的地址设为0和1。标志位Flags占1个字节,用于表示当前数据帧的类型。当数据帧中Flags字节的最高位为1时,表示该帧是数据序列中的一帧;第3位为1时,表示该帧是超时重传的数据帧;第2位为1时表示该帧是接收到数据帧后的答复帧;第1位为1时,表示目标节点在收到该数据帧后要答复。帧校验FCS由2个字节表示,是MAC层协议数据单元MPDU的校验。如果CC2430的RF寄存器MDMCTRL0L.AUTOCRC控制位设为1,FCS将由硬件自动实现,负责必须由软件用多项式x16+x12+x5+1进行CRC的生成和校验。
  由于IEEE802.15.4规范中定义了物理服务数据单元(PSDU)的最大长度为127字节,而其中的5字节已经被使用,因此有效负载payload的字节长度在1~122之间。如果需要传送的数据长度超过122字节,则发送时这个数据应该被拆分成若干数据帧,以满足最大长度的限制。目标节点则必须能够将接收到的数据帧整合成完整的数据。
  IEEE802.15.4规定了RF物理层的工作频段为2.4GHz,共有16个频道。每个频道的实际工作频率和频道序号的关系式为:Fc=2405+5×(k-11)MHz,k=11,12,…26。两个节点的RF必须工作在相同的频道上,才能够互相收发数据。完成一次数据发送的程序流程图如图5。



评论


相关推荐

技术专区

关闭