创建经济实惠的无线传感器网络
扫描二维码
随时随地手机看文章
背景
随着更经济实惠、高度集成的单芯片通用ISM频带FSK收发器的出现,加之与嵌入式低成本单片机单片机(MCU)的结合,实施无线传感应用已成为一种颇具吸引力的选择方案。
只需将这两项技术简单地结合在一起,便可构造非常基本的ISM频带915 MHz射频(Radio Frequency,RF)网络,来监控各种数字和模拟无线传感器,例如远程温度传感器和基本运动检测传感器。
本文将定义一个基本的RF框架,用以实现对无线传感器的近实时监控。这一框架可轻松修改,以适应其他需要近实时无线监控或控制接口的应用系统。
系统说明
RF收发器简介
高度集成的RF收发器(例如RFM生产的用在433、868以及915 MHz ISM频带的TRC102)正凭借更经济实惠的成本优势得到越来越多的应用。这些器件通常具有串行通信接口,可通过SPI或I2C?接口轻松连接到各种嵌入式MCU。
远程无钥门禁(Remote Keyless Entry,RKE)系统中常用的一种无线电调制方法是振幅键控(Amplitude Shift Keying,ASK),即通过改变频率固定的载波的振幅来传送数据。如果数据的编码方式为最大振幅表示“1”(传号),零振幅(功率放大器[PA]关闭)表示“0”(空号),则该调制方法称为开关键控(On-Off Keying,OOK)。这些类型的系统常用于单向应用。但是,使用此调制格式可实现非常简单且成本较低的收发器设计。
RF收发器解决方案中通常采用的RF调制方案是使用频移键控(Frequency Shift Keying,FSK)。这是通过在平均频率(或载波频率)的任一侧对载波频率进行位移来实现的。载波在载波频率一侧的位移量称为偏差。相对于ASK调制,FSK调制具有多种优势。振幅调制对振幅和噪声的变化非常敏感,而采用FSK编码的传送方案对信号衰减或其他与振幅相关的干扰的抵御能力更强。
虽然FSK系统的带宽表面上是从f0– f到f0+ f,但实际上,带宽的跨度要大于f0– f到f0+ f的范围,因为两个频率之间的转移速度会产生额外的频谱分量。简而言之,可认为FSK调制是可靠性更高、噪声更少的传输方式。为实现成功设计,您需要更深入地了解FSK调制无线链路的需求。图1显示了此类FSK调制信号的典型频谱。
图1:FSK调制信号的典型频谱
收发器是既可以发送又可以接收RF数据的器件。可以同时发送和接收数据的收发器系统称为全双工系统。反过来,在一定时间内只能发送或接收的系统称为半双工系统。因此,半双工系统只使用一个载波频率,且两个终端共享同一频率。全双工系统使用两个载波频率,分别称为上行频率和下行频率。在本文中,由于远程传感器单元的流耗限制,我们采用半双工方法。
晶振精度
FSK调制收发器设计所使用的晶振的精度非常重要。我们的专用FSK系统使用百万分率(parts per million,ppm)值很低的高精度晶振。晶振的精度越高,发送与接收频率的偏移越少,偏差和基带带宽也就越小。如今,质量较好的晶振的ppm值应小于等于40。晶振的ppm值说明了其精度,ppm值越低,晶振的质量越好。
图2显示了晶振精度对两个收发器之间的发送/接收频率的影响。晶振的精度越高,基带滤波器的带宽就可以配置得越窄,因此从接收器基带中滤除的无用RF噪声也就越多。
图2:晶振精度对两个收发器之间的发送/接收频率的影响
电路布线注意事项
对于任何RF设计,在布置印刷电路板(Printed Circuit Board,PCB)时所选择的关键元件值以及设计做法是否合理,对确保实现良好的总体RF性能都起到至关重要的作用。
强烈建议使用收发器制造商推荐的PCB布线,因为他们提供的RF设计已经过测试和验证。从参考晶振位置到FSK收发器的XTAL输入引脚的PCB走线应尽可能短。对于TRC102收发器,从天线输出端到天线馈线的走线也应尽可能短。
最后,在PCB上布一排过孔使正反两面可以连接在一起。放置这些过孔的目的是提供牢固的接地连接以及使电位均衡,以免出现任何可能的自激振荡。两个过孔的间距应在5-6 mm左右。如果需要提供牢固的接地连接,可以放置更多过孔。
收发器初始化
在使用任何RF收发器无线电器件之前,都必须对其进行初始化。通常通过向控制接口写入一系列串行命令来进行器件初始化。对这些特定控制寄存器的说明已超出本文范围,读者应参考所使用的RF收发器的数据手册中的具体信息。通常,可配置的参数包括频带选择、基带频率滤波器宽度、输出功率管理控制、数据缓冲配置、数据传输速率以及先进先出(First In First Out,FIFO)缓冲器控制。
收发器工作
收发器通过将中断输出线的电平拉低来向主机MCU发出中断请求。这表示发生以下事件之一:
发送(TX)寄存器已准备好接收下一字节
接收(RX)FIFO已达到预编程的位数
上电复位(Power on Reset,POR)确认
发生了FIFO溢出/TX寄存器下溢
主机MCU收到来自收发器的中断请求后,会通过读取收发器的状态位来确定中断源。然后,MCU会决定所需的下一个串行命令以继续通信或使收发器断电。
数据缓冲
大多数收发器中都含有一个FIFO缓冲器。如果使能数据FIFO,则收到的数据流在时钟控制下进入16位缓冲器。收发器只在同步模式电路检测到有效数据包后才开始填充FIFO。这可防止随机错误数据装入FIFO。FIFO达到预定义位数后,器件的中断输出引脚上将发出缓冲器已满信号。此引脚上的逻辑电平“1”表示RX FIFO中的位数已达到预编程限制。收发器产生中断的电平可通过FIFO和复位命令设置。有关这些配置寄存器的详细信息,请参见器件数据手册。
对于我们的应用,此值已设置为8位(一个字节),这样在发送/接收过程中可以将数据逐字节装入FIFO。这只适用于通过配置设置命令使能的FIFO模式。SPI缓冲器的读取操作会使RX FIFO复位已接收位数,并使中断输出引脚恢复到逻辑零电平。
RF协议选择
对于本设计,我们评估了各种当前可用的RF通信协议。ZigBee?、Microchip的MiWi?和MiWi点对点(Peer to Peer,P2P)等协议均已经过评估。但是,由于应用需要近实时的特性,因此使用了非常基本的时分多址(Time Divisional Multi Access,TDMA)协议方案(见图3)。通过将帧中第一个时隙定义为主机控制器发出的标识,我们可以很容易地确保在整个传感器监控系统中实现非常精确的延时。
图3:TDMA系统
传感器单元
对于我们的系统,我们已决定在每个数据帧中使用10个时隙,第一个时隙作为帧起始,另外九个用于多个远程传感器。这样,我们最多可以近实时地监控九个传感器。我们将主机MCU的预定义时隙设置为每秒10个,即每帧持续100 ms。这样,我们便能够以每秒10次的速率(或10 Hz)从各个传感器提取RF数据。通过增加每秒时隙数可轻松实现更快的轮询方案,但这样会影响所需数据速率以及基带滤波器带宽间距。
硬件
传感器单元上使用的PIC16F688 8位闪存MCU实际上每20 ms测量一次原始模拟传感器输入(每秒50次采样)。然后,它每隔100 ms会将最后五次采样一次发送给主机控制器。这样可获得更高的传感器采样率,而不会对系统的复杂性产生明显影响。这种数据缓冲方案还有助于降低传感器的总功耗要求,因为接收和发送RF数据包消耗了大部分功率。MCU单元在大多数时间都处于低功耗休眠状态。它会每隔20 ms唤醒一次来对模数转换器(Analog-to-Digital Converter,ADC)或数字I/O引脚进行采样,然后每隔100 ms进行一次批量RF传送(大约持续2 ms)。
固件
PIC16F688 MCU使用内部基于RC的振荡器来确保从休眠和低功耗状态快速启动。为简化软件,采用了基本状态机软件流,并将MCU配置为每隔20 ms唤醒一次。这些状态中的一个被分配为等待主机控制器的RF帧起始(Start Of Frame,SOF)标识的传输。此SOF标识的接收操作用于将远程传感器单元与精度更高的主机单元同步,该主机单元采用晶振进行USB通信。如果在至少150 ms内未检测到SOF标识,则远程传感器将进入低功耗非活动状态,在此状态下,单元每秒唤醒一次来搜索SOF标识。这样主机便可通过打开或关闭SOF标识的传输,只在需要时轮询远程传感器。
如果需要同时监控更多传感器,可以轻松地将这个非常基本的协议方案扩展至允许更多时隙。但总是需要在各个传感器单元的常规反应时间(采样传感器)与总功耗预算之间进行权衡。此协议方案可进行修改以满足系统以及可用电源的特定需求,例如为每个远程传感器供电的电池尺寸以及预期使用寿命。
主机控制器单元
对于主机控制器,我们选择了PIC18F14K50 8位闪存MCU,它是小型20引脚封装形式的全速USB 2.0器件。选择此器件的原因是其成本低廉,并且我们希望主机控制器通过USB端口直接与任何PC连接,以报告有关系统中每个远程传感器状态的近实时信息。也可以使用其他备用接口选项。主机单元由USB端口供电,然后以人机接口设备(Human Interface Device,HID)类USB设备的形式注册到PC。
硬件
使用PIC18F14K50 MCU,实际的硬件设计与远程传感器单元非常类似。使用相同的RF收发器设计,但将PIC16F688 MCU换成PIC18F14K50 MCU,以提供所需的USB接口功能。此单元需要持续供电,用作简化的TDMA系统中的主节点。
固件
主机控制器上的固件包含配置为HID类的Microchip标准USB协议栈;对于远程传感器单元使用相似的收发器初始化和数据传输程序;使用一台非常基本的状态机来控制RF无线电设备与PC间的数据传送。如果使用运行MS Windows?的PC,由于操作系统的多任务性质,无法始终保证时序精确。此外,我们不希望PC图形用户界面(Graphical User Interface,GUI)软件过于复杂。因此,使用PIC18F14K50作为RF远程传感器单元与PC GUI应用程序之间的数据缓冲器。PIC? MCU用于保持TDMA时隙,以便在为PC缓冲采样数据时实现同步。PC应用程序已配置为每隔100 ms轮询一次USB HID设备,以获取任何可用的数据。在每个时隙/单元中增加了一个状态/控制字节,PC应用程序可轻松确定是否有新的传感器数据可用于屏幕更新。PIC18F14K50上的传感器数据缓冲器已配置为可处理多个RF数据包,以防PC应用程序没有及时读取可用数据。
PC GUI软件
对于本应用,传感器数据通过GUI应用程序内的进度条显示,并且可以轻松记录以对远程传感器进行数据跟踪。软件的开发平台为Microsoft的Visual C#。软件可作为多个无线远程传感器单元实时行为的可视监控器,显示从每个无线传感器收到的实时数据。GUI通过USB HID类函数连接到主机控制器来轮询可用数据或控制系统行为,例如启动RF轮询、停止RF轮询和请求单次数据捕获等。
各种传感器类型
确定基本的RF传感器框架后,实际的RF远程传感器可以是从基本的温度监控器到加速(模拟或数字)监控器、数字输入(高/低电平检测)以及模拟电压监控(通过ADC转换为数字值)中的任何一个,甚至是基本的数字输出控制信号。通过这个简化的TDMA轮询方案,简单的RF框架还允许使用各种不同类型的远程传感器。
为传感器单元配对
每个传感器提供的信息都可包括一个惟一标识符、一个传感器类型指示符和原始传感器数据测量值。使用每个传感器单元的惟一标识符有助于将传感器单元与主机控制器配对。主机标识器可以向将指示哪些时隙可用的传感器发送各种控制命令,甚至从系统中移除传感器。主机控制器还可以发送组标识符,这样它将只轮询与该特定传感器组配对的传感器。遗憾的是,这已超出本文范围,但绝对可实现极其灵活易用的远程传感器网络。
安全增强功能
如果有人进行窃听并发送可对整个系统的完整性造成负面影响的虚假传感器数据,则会很容易对RF网络的安全产生危害。通过在RF网络中添加一个安全层,可以轻松防止这种危害。有多种安全方案和算法可用于惟一传感器验证,例如Microchip的KEELOQ?加密算法。甚至可以与更高级的加密算法(例如扩展的微型加密算法(eXtended Tiny Encryption Algorithm,XTEA)或高级加密标准(Advanced Encryption Standard,AES)算法)结合使用,以加密从远程传感器传输到主机控制器的传感器信息。
结论
本文介绍了如何实现可实时监控传感器行为的基本RF远程传感器网络。低成本RF收发器与MCU(如PIC18F14K50)的结合简化了此类系统的开发。远离无线传感器系统的时代无疑已成为过去。
本文所述的框架可用于近实时无线监控起重要作用的各种应用。如果远程传感器系统可以容许更大程度的延时,则完全可以使用本文所列的其他RF通信协议。这些备选协议的灵活性更高,但也需要更高端的MCU资源才能实现。此外,通过添加简单的惟一网络标识,基本的RF配对方案和加密算法可以使此类无线网络更加稳定可靠和安全。