当前位置RFID世界网 > 技术文章 > 其它 > 正文

一种低成本无线传感器网络节点的设计

作者:匿名 来源:微型机与应用 2012-04-16 10:18:36

摘要:目前有多种可供选择的无线组网方案,如ZigBee,其具有功耗低、传输速率高、体积小、协议成熟、节点能够协同工作等特点。

关键词:RFID[1218篇]  物联网[334篇]  传感器[254篇]  无线传感器[70篇]  

(5)无线节点采用的是电池供电的方式,因此,电池的好坏对整个系统的工作持久性有重要影响。本设计采用的是非充电性18650高容量锂电池,电压为3.7V,容量在1700mah以上,具有涓流放电、电压恒定等特点。经肖特基二极管降压后得到约3.3V电压为系统供电。节点的硬件原理图如图2所示。

图2 无线传感器网络节点原理图

图2中右上角是PT2262的管脚图可以看出,PIC16F876单片机保留了PT2262的8bit地址脚,4bit数据脚。这样做是为了增加系统灵活性,将节点模块从一个网络转移到另一个网络,只需变更三态编码开关A0~A7,就可将其设置成与欲转入网络网关的地址(6561种)。4bit数据口D1~D4采用2bit拨码开关,为传感器编号,这相当于节点在网络内的ID(16种)。

图2中右下角为加速度传感器MXC6202 、I2C接口。X、Y轴加速度值各为12精度。可以看到该传感器接口简单,没有地址编码脚,因地址在出厂前已确定,一路I2C总线只能有一片MXC6202 。PIC16单片机集成了一路I2C接口,但为了以后扩展多路加速度传感器,采用软件模拟的办法,用RC4 、RC5 、RC6 、RC7 4个I/O口模拟了两路I2C接口电路。此外,I2C接口类传感器还带有温湿度传感器STH1X、双轴磁场传感器MMC212X等,只要稍微更改程序,就可以扩展到本系统上。

2.2 节点软件设计

单片机主要有两个任务:模拟PT2262波形对高频电路进行ASK调制,模拟I2C总线读写MXC6202 。要想让软件模拟一个硬件电路,必须掌握硬件电路的工作原理:PT2262是红外遥控编码器,PT2272是其接收解码器,两者常常配对使用。发射端PT2262共有12个地址端,发射的每一组数据都由12bit脉冲组成,顺序是从A0~A11,每个地址端有三种接法。常见的是用其中8bit(A0 ~A7)作为地址编码,其余4bit(D1 ~D3)作为数据编码,外加1bit同步码,每组至少发送4次。接收端PT2272舍弃第一组,当连续得到两组与本身地址一样的信号时,则解码。参考文献[1-2]分别介绍了单片机模仿PT2262的编码方法和PT2272的解码方法。由于需要传输X、Y两个轴各12bit加速度值,因此,每帧36bit数据,帧间加1bit同步码,传输4次。单片机编码方案如图3所示。必须注意的是,由于高频发射具有随机性,在不发射时表现为白噪声,因此解码时应舍弃第一帧数据,从第二帧开始解码。

     图3 单片机编码方案

传输的数据位格式分为:高电平(11) 、低电平(00) 、高阻态(01)三种,0 、1由高低电平的占空比决定。软件中设200μs、600μs两个延时函数。单片机调用这两个延时函数,在RA1管脚上输出相应的高低电平就能够模拟出这三种状态数值,从而完成单位数据的ASK调制。

单片机在发射前首先读入预先设定的A0~A7 8bit三态地址,D1~D4 4bit节点网内ID,再加上加速度传感器X、Y轴的各12bit加速度值,共36bit数据,按图3的格式依次发送出去,就可以进行数据传输了。每帧数据传输4次,每帧之间由大约10ms的帧间码隔开,帧间码由一个200μs高电平与10ms的低电平组成,发送一次数据的时间约为200ms,这样1s内最多可传送5次数据,在大多数场合是可以满足要求的。为了节省能耗,可以根据需要选择发射速率,在不发射时,应使单片机、F05V、加速度传感器处于休眠状态。处于休眠状态的PIC单片机可以使用看门狗等方式唤醒。用超外差接收模块J05U接收,可以在300m的开阔地传输数据。当需要较高的数据传输速率时,应缩短宽窄脉冲时间长度。但需要注意的是,当脉冲宽度减少时,发射功率也同时减少。因距离与速度是矛盾的关系,当发射功率超过20Hz时,建议使用专用RF芯片。

MXC6202在使用中作为从器件,PIC单片机只要按照标准I2C时序控制MXC6202即可。参考文献[3]介绍了利用单片机的普通I/O口模拟I2C总线的方法。MXC6202的地址在出厂时已经确定了,共8种,在一路I2C总线上只能挂一个加速度传感器。当需要两个MXC6202测三轴加速度时,需要占两路独立的总线。为此,根据标准I2C时序,模拟了两路I2C总线,以两路循环采集。MXC6202示例驱动程序如下:

IICStart( );//器件初始化,每次从休眠模式唤醒重新初始化

     IICSendByte(0x20);//写器件地址,MEMS传感器地址出厂时已固定

     IICSendByte(0x00);//器件内部寄存器地址,只有一个可写寄存器0x00

     IICSendByte(0xf0);//最低位写0,睡眠模式唤醒;写1,进入睡眠模式

     Delay_75ms();//睡眠唤醒时,需要75ms的延时//下面是依次接收:X高、X低、Y高、Y低4位数值

     IICStart( );

     IICSendByte(0x20);//写MEMS传感器

     IICSendByte(0x01);

     IICStart( );

     IICSendByte(0x21);//读MEMS传感器

     for(ii=0;ii<3;ii++)

     {

          s[ii]=IICReceiveByte();

          IICAck(0);

     }

     s[3]=IICReceiveByte();

     IICAck(1);//最后一位不应答

     IICStop( );

 已有0条评论 我要评论 联系编辑 分享到:网易新浪腾讯人人开心网豆瓣MSN


最新评论(加载最新评论):


上一篇:基于 SCA61T 医用活检枪角度仪的设计

下一篇:简单的环境光传感器电路


相关文章:


关键字搜索:


新闻中心:RFID[8002篇]  物联网[5734篇]  传感器[828篇]  无线传感器[37篇]  

成功应用:RFID[807篇]  物联网[65篇]  传感器[22篇]  无线传感器[4篇]  

解决方案:RFID[760篇]  物联网[135篇]  传感器[38篇]  无线传感器[7篇]  


图片文章:

热点专题