摘要:基于PIC低功耗单片机与MEMS加速度传感器,设计了一种低成本的无线传感器网络节点。该设计采用性价比较高的PIC16系列单片机,软件模拟PT2262遥控编码器,配合I2C接口加速度传感器、微型高频发射器件,实现了通用MCU无线传感器的节点方案,省去了昂贵的专用RF芯片,降低了系统成本。节点整体采用3.3V单节锂电池供电。实验结果表明,该方案具有可靠、灵活、低功耗、低成本的特点,可广泛应用于低速实时测量、监控防盗等场合。
目前有多种可供选择的无线组网方案,如ZigBee,其具有功耗低、传输速率高、体积小、协议成熟、节点能够协同工作等特点。但ZigBee由于采用国外技术,其芯片价格高,限制了它的普及应用。PT2262/PT2272系列编解码芯片是一种采用CMOS工艺、低功耗、低价位芯片,在遥控门、防盗、玩具等产品中大量使用,但其在数据传输、安全性等方面有所不足。本文利用PIC16LF876单片机模仿PT2262编码方式,并进行了改进,配合433MHz高频发射电路,实现了数据的无线传输组网。传感器选用具有数字I2C接口的双轴加速度传感器MX6202,可以无线采集加速度、倾斜角数值,具有接口简单、体积小、价格低的优点。无线节点部分均选用低电压器件,实现了单节锂电池供电。特别适合网点数量庞大、对成本敏感(如家居、防盗、物联网等)场合的应用。
1 无线传感器系统设计方案
无线传感器系统包括传感器节点与网关两部分。传感器节点负责实地数据采集,网关负责接收各节点数据,汇总处理后经GSM/GPRS网络通知用户。本文重点介绍传感器节点,给出了软硬件实现方法。无线传感器系统组成如图1所示。其中无线传感器节点中的虚线框为扩展部分,F05V与J05U为微型433M发射接收模块;无线网关部分负责汇总节点信息与外界通信,采用EM310模块,GSM/GPRS传输。
图1 低成本无线传感器网络设计框图
传感器网络采用星形连接方式,由各无线节点与网关组成。在大部分场合下(如防盗、环境监测等)可以采用单向通信方式,即节点发射、网关接收,这样,图1中的虚线部中的节点的超外差接收电路、网关的RF发射电路即可以省去。当需要实时采集、强调同步性时,加上虚线框内部分,由网关集中控制各节点动作,通过发采集或变更工作模式指令,控制各节点,采用双向通信方案。本文介绍的为单向通信方案。
传感器节点是系统的重要部分,负责现场采集工作,其工作稳定与否对整个系统具有至关重要的作用。而当节点数量较多时,它的成本占系统的绝大部分。有许多节点需要独立在室外工作并由电池供电,对能耗有较高的要求。为此,本设计通过PIC单片机模拟PT2262芯片编码,对433MHz高频电路完成键控调制(ASK),省去了无线收发芯片,实现了通用MCU+传感器的节点方案,大大降低了系统成本。采用的PIC超低功耗MCU,具有与MSP430相似的节能特性,选用低电压RF模块F05V,实现了系统的3.3V供电。
2 无线传感器节点设计
2.1 节点硬件电路设计
无线传感器节点是本文的重点部分,需要满足低成本、低功耗、小体积、适合电池供电等要求。无线节点方案比较如表1所示。
表1 无线节点方案比较
(1)本节点设计时所用器件及其性能:选用的PIC16LF876单片机,其性价比较高、外设丰富、工作稳定,具有针对电池供电的低功耗系列;最高速率为4MIPS,工作电压为2~5.5V,22 个I/O 口,片上集成有WDT、CCP、PWM、A/D等外设,14KB Flash,368bit RAM、256bit EEPROM,具有休眠省电模式。PIC16系列单片机不同型号之间大部分可兼容,可以根据需要,选用价格更低的PIC16F72或采用纳瓦(nW)及超低功耗技术的PIC16F723,程序稍作改动,器件即可封装兼容。
(2)加速度传感器选用数字I2C接口的双轴加速度传感器MXC6202,其具有±2g的测量范围,可以测量重力加速度,小体积、低功耗、接口简单,工作电压范围为2.7~3.6V,有休眠模式,在保证低价格、小体积的同时,可以满足防盗、人体姿态测量等应用的需求。
(3)RF电路采用F05V微型发射模块,具有2.1~3.5V的低电压、低功耗(10mA,连发)及1~10kb/s的传输速率,可以满足监控等场合数据采集的需要。小体积、低价位,只有正电源、地、数据输入、天线(天线按照手册由导线绕制而成)输出4个接口,可以像一个三极管一样使用它。
(4)网关配套的接收电路是J05U超外差接收模块,具有与F05V类似的特点。使用PT2262/PT2272编解码方案,开阔地接收距离在300m左右。
(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( );
测斜度时,采用查表与计算相结合的方法(器件手册中给出了参考方法)。单片机模拟的波形如图4所示。图4(a)是单片机RA1口模拟PT2262发出的一串数列。图4(b)是从MXC6202器件中读出的一帧数据,为便于观察,将两组波形重叠在一起,高的为总线数据线信号,低的为总线时钟信号。
图4 单片机模拟的波形
3 无线网关设计
无线网关由主控单片机、GSM模块和超外差接收模块J05U等组成,负责传感器网络的管理与控制,接收节点传来的数据并在必要时通过网络等方式告知用户。网关选用PIC18F6621单片机,GSM模块选用的是EM310模块。网关主要部分原理图如图5所示。
图5 网关主要部分原理图
PIC18F6621单片机有:两个串口,使用串口2与EM310通信,串口1用于外部接口,如作为GPRS DTU、连接上位机、串口摄像头等;传送速率最高为10MIPS;4KB RAM、64KB Flash;内部集成有AD、WDT等外设。
EM310的1~6管脚与SIM卡电路连接。PIC18F6621有55个IO口,空余的I/O口可以接1602液晶进行显示。DS12C887时钟芯片作为整个无线网络的时基。需要注意的是,EM310在接通网络的瞬间会产生一个接近2A的峰值电流,因此电源部分需有冗余,因此推荐使用开关电源。
网关的功能主要有三个:对接收到的节点数据进行解码、判断是哪个节点传来的信号及是否需要报警、控制EM310向设定手机发送短信及拨打电话等。
解码是编码的逆过程,关键是将发射节点编码的600μs 、200μs宽窄脉冲正确识别。当单片机侦听到开始码(即连接J05U模块的DATA引脚RD0产生第一个上升沿)时,开始分析数据,舍弃第一帧数据,对第二帧、第三帧、第四帧进行解码。利用PIC单片机内部定时器0计时,当有电平高低变化时,记录下TMR0数值,并清零,重新开始计数。这样可以把每一个高低电平宽度记录下来;然后比较解码,180μs~250μs之间为窄脉冲,550μs~650μs之间为宽脉冲;并将数据帧中的前8个数据与EEPROM中预存的地址码进行比对,当有两次相同时即表明正确解码,将节点ID 4bit数值,X、Y轴各12bit数据储存起来并进行处理。
EM310是一款兼容型GSM/GPRS通信模块,硬件兼容MC55,广泛用于数据采集、远程测试等;内嵌TCP/IP协议,具有低价位、使用方便的特点。选用该模块是为了方便系统GPRS功能扩展(如加接串口摄像头实现现场摄像、传输视频等功能)。EM310进行信号传输时(尤其是进行GPRS传输时),会产生一个2A左右的尖峰电流,因此网关供电需要采用2A以上的电源(如开关电源等)。EM310的所有命令、数据传输均通过串口,支持最高波特率为115200b/s,数据包包长可以达到2KB,可以传输图像数据,便于系统以后扩展图像监控功能。
EM310与PIC18F6621之间接口非常简单,只占用RX、TX、GND三根线,采用AT指令进行通信,除个别指令外,每条指令均以回车符作为结束标志。本设计中用到了发送短信与拨打电话功能。发送短信AT指令为:at+cmgs=\"139XXXXXXXX\",在EM310应答后,发送短信内容,并以“0x1A” 结束短信内容。拨打电话AT指令如下:ATD139XXXXXXXX;, 其中“139XXXXXXXX” 为预先设定的用户手机号码。
本文提出了一种低成本的无线加速度传感器方案,采用通用单片机模仿成熟的编解码方案,降低了开发难度与风险,有明显的价格优势,适合对成本敏感、而对速度要求不高的场合,如工地器材防盗、智能家居网络等。节点选用的芯片均为低功耗芯片,采用大容量锂电池就可以使节点长期工作。I2C接口的传感器种类有很多,更换传感器就可以实现磁场强度分布检测、粮食仓库温湿度检测等,而且PIC单片机内集成有A/D,也可以与其他模拟输出的传感器结合,因此本方案有通用性。使用GPRS网关可以实现远程监控测试。
参考文献
[1] 安颖,张丽慧.PT2262遥控编码功能的软件实现[J].嵌入式与SOC,2005(5):111.
[2] 郝迎吉,刘义刚,樊润丽.基于单片机实现遥控编码器PT2262的软件解码[J].国外电子元器件,2008,5(5):36-39.
[3] 陈志辉.I2C总线在MCS51系列单片机数据采集系统中的实现[J].微计算机信息,2005,21(1):67-69.