摘要: 基于PIC 低功耗单片机与MEMS 加速度传感器, 设计了一种低成本的无线传感器网络节点。该设计采用性价比较高的PIC16 系列单片机,软件模拟PT2262 遥控编码器,配合I2C 接口加速度传感器、微型高频发射器件, 实现了通用MCU 无线传感器的节点方案, 省去了昂贵的专用RF 芯片,降低了系统成本。节点整体采用3.3 V 单节锂电池供电。实验结果表明,该方案具有可靠、灵活、低功耗、低成本的特点,可广泛应用于低速实时测量、监控防盗等场合。
目前有多种可供选择的无线组网方案,如ZigBee,其具有功耗低、传输速率高、体积小、协议成熟、节点能够协同工作等特点。但ZigBee 由于采用国外技术,其芯片价格高,限制了它的普及应用。PT2262/PT2272 系列编解码芯片是一种采用CMOS 工艺、低功耗、低价位芯片,在遥控门、防盗、玩具等产品中大量使用,但其在数据传输、安全性等方面有所不足。本文利用PIC16LF876 单片机模仿PT2262 编码方式,并进行了改进,配合433 MHz 高频发射电路,实现了数据的无线传输组网。传感器选用具有数字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.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 bitEEPROM, 具有休眠省电模式。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 , 每个地址端有三种接法。常见的是用其中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 示例驱动程序如下:
IICStart( ) ;// 器件初始化,每次从休眠模式唤醒重新初始化
IICSendByte(0x20) ;// 写器件地址,MEMS 传感器地址出厂时已固定
IICSendByte(0x00) ;//器件内部寄存器地址,只有一个可写寄存器0x00
IICSendByte(0xf0) ;// 最低位写0 , 睡眠模式唤醒; 写1 , 进入睡眠模式
Delay_75ms() ; // 睡眠唤醒时, 需要75 ms 的延时//下面是依次接收: 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、连接上位机、串口摄像头等; 传送速率最高为10 MIPS ;4 KB RAM、64 KB 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 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,可以传输图像数据, 便于系统以后扩展图像监控功能。
EM310 与PIC18F6621 之间接口非常简单, 只占用RX、TX、GND 三根线, 采用AT 指令进行通信, 除个别指令外, 每条指令均以回车符作为结束标志。本设计中用到了发送短信与拨打电话功能。发送短信AT 指令为:
at+cmgs="139XXXXXXXX" , 在EM310 应答后, 发送短信内容, 并以“0x1A” 结束短信内容。拨打电话AT 指令如下:ATD139XXXXXXXX; , 其中“139XXXXXXXX” 为预先设定的用户手机号码。
本文提出了一种低成本的无线加速度传感器方案,采用通用单片机模仿成熟的编解码方案, 降低了开发难度与风险, 有明显的价格优势, 适合对成本敏感、而对速度要求不高的场合, 如工地器材防盗、智能家居网络等。
节点选用的芯片均为低功耗芯片, 采用大容量锂电池就可以使节点长期工作。I2C 接口的传感器种类有很多, 更换传感器就可以实现磁场强度分布检测、粮食仓库温湿度检测等, 而且PIC 单片机内集成有A/D, 也可以与其他模拟输出的传感器结合, 因此本方案有通用性。使用GPRS 网关可以实现远程监控测试。




