一种低成本无线传感器网络节点的设计
2011-05-14刘成岩孙晶华
刘成岩,孙晶华
(哈尔滨工程大学 理学院,黑龙江 哈尔滨 150001)
目前有多种可供选择的无线组网方案,如ZigBee,其具有功耗低、传输速率高、体积小、协议成熟、节点能够协同工作等特点。但ZigBee由于采用国外技术,其芯片价格高,限制了它的普及应用。PT2262/PT2272系列编解码芯片是一种采用CMOS工艺、低功耗、低价位芯片,在遥控门、防盗、玩具等产品中大量使用,但其在数据传输、安全性等方面有所不足。本文利用PIC16LF876单片机模仿PT2262编码方式,并进行了改进,配合433 MHz高频发射电路,实现了数据的无线传输组网。传感器选用具有数字I2C接口的双轴加速度传感器MX6202,可以无线采集加速度、倾斜角数值,具有接口简单、体积小、价格低的优点。无线节点部分均选用低电压器件,实现了单节锂电池供电。特别适合网点数量庞大、对成本敏感(如家居、防盗、物联网等)场合的应用。
1 无线传感器系统设计方案
无线传感器系统包括传感器节点与网关两部分。传感器节点负责实地数据采集,网关负责接收各节点数据,汇总处理后经GSM/GPRS网络通知用户。本文重点介绍传感器节点,给出了软硬件实现方法。无线传感器系统组成如图1所示。其中无线传感器节点中的虚线框为扩展部分,F05V与J05U为微型433M发射接收模块;无线网关部分负责汇总节点信息与外界通信,采用EM310模块,GSM/GPRS传输。
传感器网络采用星形连接方式,由各无线节点与网关组成。在大部分场合下(如防盗、环境监测等)可以采用单向通信方式,即节点发射、网关接收,这样,图1中的虚线部中的节点的超外差接收电路、网关的RF发射电路即可以省去。当需要实时采集、强调同步性时,加上虚线框内部分,由网关集中控制各节点动作,通过发采集或变更工作模式指令,控制各节点,采用双向通信方案。本文介绍的为单向通信方案。
传感器节点是系统的重要部分,负责现场采集工作,其工作稳定与否对整个系统具有至关重要的作用。而当节点数量较多时,它的成本占系统的绝大部分。有许多节点需要独立在室外工作并由电池供电,对能耗有较高的要求。为此,本设计通过PIC单片机模拟PT2262芯片编码,对433MHz高频电路完成键控调制(ASK),省去了无线收发芯片,实现了通用MCU+传感器的节点方案,大大降低了系统成本。采用的PIC超低功耗MCU,具有与MSP430相似的节能特性,选用低电压RF模块F05V,实现了系统的3.3 V供电。
2 无线传感器节点设计
2.1 节点硬件电路设计
表1 无线节点方案比较
无线传感器节点是本文的重点部分,需要满足低成本、低功耗、小体积、适合电池供电等要求。无线节点方案比较如表1所示。
(1)本节点设计时所用器件及其性能:选用的PIC16LF876单片机,其性价比较高、外设丰富、工作稳定,具有针对电池供电的低功耗系列;最高速率为4 MIPS,工作电压为 2~5.5 V,22个 I/O口,片上集成有 WDT、CCP、PWM、A/D 等 外 设,14 KB Flash,368 bit RAM、256 bit EEPROM,具有休眠省电模式。PIC16系列单片机不同型号之间大部分可兼容,可以根据需要,选用价格更低的PIC16F72或采用纳瓦(nW)及超低功耗技术的PIC16F723,程序稍作改动,器件即可封装兼容。
(2)加速度传感器选用数字I2C接口的双轴加速度传感器MXC6202,其具有±2 g的测量范围,可以测量重力加速度,小体积、低功耗、接口简单,工作电压范围为2.7~3.6 V,有休眠模式,在保证低价格、小体积的同时,可以满足防盗、人体姿态测量等应用的需求。
(3)RF电路采用F05V微型发射模块,具有2.1~3.5 V的低电压、低功耗(10 mA,连发)及1~10 kb/s的传输速率,可以满足监控等场合数据采集的需要。小体积、低价位,只有正电源、地、数据输入、天线(天线按照手册由导线绕制而成)输出4个接口,可以像一个三极管一样使用它。
(4)网关配套的接收电路是J05U超外差接收模块,具有与F05V类似的特点。使用PT2262/PT2272编解码方案,开阔地接收距离在300 m左右。
(5)无线节点采用的是电池供电的方式,因此,电池的好坏对整个系统的工作持久性有重要影响。本设计采用的是非充电性18650高容量锂电池,电压为3.7 V,容量在1 700 mah以上,具有涓流放电、电压恒定等特点。经肖特基二极管降压后得到约3.3 V电压为系统供电。
节点的硬件原理图如图2所示。
图2 无线传感器网络节点原理图
图2中右上角是PT2262的管脚图可以看出,PIC16F876单片机保留了PT2262的8 bit地址脚,4 bit数据脚。这样做是为了增加系统灵活性,将节点模块从一个网络转移到另一个网络,只需变更三态编码开关A0~A7,就可将其设置成与欲转入网络网关的地址 (6 561种)。4 bit数据口 D1~D4采用 2 bit拨码开关,为传感器编号,这相当于节点在网络内的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个地址端,发射的每一组数据都由12 bit脉冲组成,顺序是从A0~A11,每个地址端有三种接法[1]。常见的是用其中 8 bit(A0~A7)作为地址编码,其余 4 bit(D1~D3)作为数据编码,外加1 bit同步码,每组至少发送4次。接收端PT2272舍弃第一组,当连续得到两组与本身地址一样的信号时,则解码。参考文献[1-2]分别介绍了单片机模仿PT2262的编码方法和PT2272的解码方法。
由于需要传输X、Y两个轴各 12 bit加速度值,因此,每帧36 bit数据,帧间加1 bit同步码,传输4次。单片机编码方案如图3所示。必须注意的是,由于高频发射具有随机性,在不发射时表现为白噪声,因此解码时应舍弃第一帧数据,从第二帧开始解码。
图3 单片机编码方案
传输的数据位格式分为:高电平(11)、低电平(00)、高阻态(01)三种,0、1由高低电平的占空比决定。软件中设 200 μs、600 μs两个延时函数。 单片机调用这两个延时函数,在RA1管脚上输出相应的高低电平就能够模拟出这三种状态数值,从而完成单位数据的ASK调制。
单片机在发射前首先读入预先设定的A0~A7 8 bit三态地址,D1~D4 4 bit节点网内ID,再加上加速度传感器X、Y轴的各12 bit加速度值,共36 bit数据,按图3的格式依次发送出去,就可以进行数据传输了。每帧数据传输4次,每帧之间由大约10 ms的帧间码隔开,帧间码由一个 200 μs高电平与 10 ms的低电平组成,发送一次数据的时间约为200 ms,这样1 s内最多可传送5次数据,在大多数场合是可以满足要求的。为了节省能耗,可以根据需要选择发射速率,在不发射时,应使单片机、F05V、加速度传感器处于休眠状态。处于休眠状态的PIC单片机可以使用看门狗等方式唤醒。用超外差接收模块J05U接收,可以在300 m的开阔地传输数据。当需要较高的数据传输速率时,应缩短宽窄脉冲时间长度。但需要注意的是,当脉冲宽度减少时,发射功率也同时减少。因距离与速度是矛盾的关系,当发射功率超过20 Hz时,建议使用专用RF芯片。
MXC6202在使用中作为从器件,PIC单片机只要按照标准I2C时序控制MXC6202即可。参考文献[3]介绍了利用单片机的普通I/O口模拟I2C总线的方法。MXC6202的地址在出厂时已经确定了,共8种,在一路I2C总线上只能挂一个加速度传感器。当需要两个MXC6202测三轴加速度时,需要占两路独立的总线。为此,根据标准I2C时序,模拟了两路I2C总线,以两路循环采集。MXC6202示例驱动程序如下:
测斜度时,采用查表与计算相结合的方法 (器件手册中给出了参考方法)。单片机模拟的波形如图4所示。图4(a)是单片机RA1口模拟PT2262发出的一串数列。图4(b)是从MXC6202器件中读出的一帧数据,为便于观察,将两组波形重叠在一起,高的为总线数据线信号,低的为总线时钟信号。
图4 单片机模拟的波形
3 无线网关设计
无线网关由主控单片机、GSM模块和超外差接收模块J05U等组成,负责传感器网络的管理与控制,接收节点传来的数据并在必要时通过网络等方式告知用户。网关选用PIC18F6621单片机,GSM模块选用的是EM310模块。网关主要部分原理图如图5所示。
PIC18F6621单片机有:两个串口,使用串口2与EM310通信,串口 1用于外部接口,如作为 GPRS DTU、连接上位机、串口摄像头等;传送速率最高为 10 MIPS;4 KB RAM、64 KB Flash;内部集成有 AD、WDT等外设。
EM310的1~6管脚与SIM卡电路连接。PIC18F6621有55个IO口,空余的I/O口可以接1602液晶进行显示。DS12C887时钟芯片作为整个无线网络的时基。需要注意的是,EM310在接通网络的瞬间会产生一个接近2 A的峰值电流,因此电源部分需有冗余,因此推荐使用开关电源。
网关的功能主要有三个:对接收到的节点数据进行解码、判断是哪个节点传来的信号及是否需要报警、控制EM310向设定手机发送短信及拨打电话等。
解码是编码的逆过程,关键是将发射节点编码的600 μs、200 μs宽窄脉冲正确识别。 当单片机侦听到开始码 (即连接J05U模块的DATA引脚RD0产生第一个上升沿)时,开始分析数据,舍弃第一帧数据,对第二帧、第三帧、第四帧进行解码。利用PIC单片机内部定时器0计时,当有电平高低变化时,记录下TMR0数值,并清零,重新开始计数。这样可以把每一个高低电平宽度记录下来; 然后比较解码,180 μs~250 μs之间为窄脉冲,550 μs~650 μs之间为宽脉冲; 并将数据帧中的前 8个数据与EEPROM中预存的地址码进行比对,当有两次相同时即表明正确解码,将节点ID 4 bit数值,X、Y轴各12 bit数据储存起来并进行处理。
EM310是一款兼容型GSM/GPRS通信模块,硬件兼容MC55,广泛用于数据采集、远程测试等;内嵌 TCP/IP协议,具有低价位、使用方便的特点。选用该模块是为了方便系统GPRS功能扩展 (如加接串口摄像头实现现场摄像、传输视频等功能)。EM310进行信号传输时(尤其是进行GPRS传输时),会产生一个2 A左右的尖峰电流,因此网关供电需要采用2 A以上的电源(如开关电源等)。EM310的所有命令、数据传输均通过串口,支持最高波特率为115 200 b/s,数据包包长可以达到 2 KB,可以传输图像数据,便于系统以后扩展图像监控功能。
图5 网关主要部分原理图
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.