无线传感器网络是物联网底层网络的重要技术形式,它综合了传感器技术、信息处理技术和无线通信等技术。无线传感器网络节点作为无线传感网络的基本组成部分,它的性能优劣及实用性关系到整个网络的工作效率和工作成本,因此高性能低成本的无线传感节点成为无线传感网络设计的关键。目前传统的无线传感节点主要有两种类型:一种是封装好直接购买可用的节点如Micaz、TelosB节点;另一种是在特定芯片如CC2430、CC2530上自主设计制作的节点。前一种节点性能佳,但价格较贵且可定制性差,后一种节点,虽价格便宜,但开发工作量大,且可扩展的接口少。
Arduino是近年来快速流行起来的一种控制器,其硬件电路的核心是一个AVR芯片,整块电路板在功能上与单片机开发板类似,但是Arduino板要比单片机开发板在功能上强大很多。ZigBee是一种短距离无线通信技术,它可以很好地解决物联网中最后100 m的通信问题,并且已经广泛地应用于智能交通、智能医疗、智能家居和工业自动化当中。本文针对现有的无线传感网络节点的发展现状,从硬件角度着手,设计了一种基于Arduino的ZigBee无线传感节点,它将Arduino软硬件开源、接口丰富、容易上手、价格低廉、可根据应用需求实现个性化系统设计等特性与ZigBee技术传输延时较低、复杂度低、容量高、功率消耗极低、成本低廉等特性结合到一起,实现更具有实用性和更适用于物联网的无线传感网络节点。
1 硬件整体设计
无线传感网络节点硬件电路包括处理器模块、传感器模块、无线通信模块及电源模块。其中,电源部分为整个节点提供能量,其余3个均是耗能模块。本文采用Arduino Uno R3功能板的电路作为硬件设计的基础电路板,并结合实际需求在该电路基础上进行组成部件的删减和功能模块的增加。Arduino Uno R3是Arduino USB接口系列的最新版本。其上的所有参考设计均是基于AVR芯片ATmega328的,二者的管脚是兼容的。
节点的各个模块中,处理器模块采用单片机ATmega328P—PU作为CPU对传感数据进行采集、处理和传输,单片机ATmega16U2-MU作为转换芯片实现USB接口数据与处理器串口数据的对接。传感器模块设为接口模式,没有直接选定传感器并将该传感器连接到电路中。传感器模块接口包括数字信号接口和模拟信号接口。无线通信模块采用Digi公司生产的XBee ZB模块,XBee ZB模块通过RX、TX串口与单片机进行数据通信。电源模块采用电池供电和USB供电协作模式,为了避免电池供电和USB供电同时接入电路产生冲突,采用 FDN34 0P场效应管来实现电池供电和USB供电模式的自动切换。此外,节点还通过硬件辅助的形式控制传感模块和无线通信模块的工作状态,以降低节点的工作能耗。 2.3 无线通信模块
本节点的无线通信模块采用的是美国Digi公司生产的XBee ZB模块,该模块按照ZigBee协议设计并把ZigBee协议内置进片内Flash,其内部包含有全部的工作外围电路以及完整的ZigBee协议栈,虽然体型小,但却是一个功能完善的ZigBee收发器(具备接收器和发射器),它的工作模式是双向半双工式,可交替地发送或接收数据昀。XBeeZB模块只需少量的功耗便可进行可靠的远端数据传输。该模块的室内传输距离为40米,室外传输距离为120米,发射功率为3 dBm,具有AT和API两种配置模式且拥有专门的PC端配置软件X—CUT,可直接在PC端对模块进行发射功率、信道等网络拓扑参数的配置,使用起来简单快捷。XBee ZB模块通过DOUT和DIN与处理器模块中的单片机串口进行通信,DOUT接单片机ATmega32 8P—PU的RXD引脚,DIN接TXD引脚。该模块的工作模式共有5种,分别是空闲模式、发送模式、接收模式、命令模式和睡眠模式。当XBee ZB模块没有接收或发送数据时,模块进入空闲模式;当串行接收缓冲区内的串行数据已接收并打包准备好时,模块自动退出空闲模式准备发送数据,进入发送模式;当天线接收到一个合法的RF数据包时,该数据将会转送到串口发射缓冲区内,模块进入接收模式;当命令模式字符序列形成时,模块进入命令模式;当接收到休眠触发时,模块进入睡眠模式,XBee ZB仅支持终端节点睡眠模式触发,且有管脚休眠和周期休眠两种触发模式。睡眠模式可大大降低模块的能耗,XBee ZB模块的管脚休眠触发机制是:当休眠控制管脚Sleep_RQ处于高电平状态时,模块开启睡眠模式;管脚处于低电平状态时,模块关闭睡眠模式。本节点设计使用单片机数字输出口控制来实现XBeeZB模块的正常工作模式与睡眠模式之间的切换,电路连接上,ATmega328P—PU的一路数字接口引脚与 XBee ZB模块的Sleep_RQ管脚连接以控制Sleep_RQ管脚的电平状态,再以软件程序进行辅助,设置XBee ZB模块进行周期性休眠,从而降低节点无线通信模块的能耗。
2.4 电源模块
节点正常工作所需要的电压有5 V和3.3 V。Arduino Uno R3电路中有3种供电方式,并且能够自动选择供电方式,这3种供电方式分别是:外部直流电源通过电源插座供电、USB接口供电以及电池连接电源连接器的 GND和VIN引脚供电,其中,电源插座供电和电池供电的输入电压范围为7~12 V。本节点在Arduino Uno R3供电原理基础上选择锂电池供电和USB接口供电两种模式共同提供5 V工作电压,节点电路的另一路工作电压3.3 V则由稳压管LP2985—33DBVR通过对5 V电压进行转换获得。电源模块电路中5 V电压供电方式的自动选择通过场效应管FDN340P实现,FDN340P是一种P沟道增强型绝缘栅场效应晶体管,具有输入电阻高、噪声小、功耗低、动态范围大、无二次击穿现象、安全工作区域宽等特点。节点电源供电电路中,一路锂电池输入VIN连接到稳压管NCP1117ST50T3G的输入端,另一路经二分之一分压电路分压后连接到电压比较器的正输入端V+,电压比较器的负输入端V-连接的参考电压为3.3 V。电压比较器的输出Vo与场效应管FDN340P的栅极连接,USB电源线与场效应管FDN340P的漏极相连接,场效应管的源极作为电压输出端并与5 V电源线连接。当电源模块仅有锂电池供电时,5 V电源直接由稳压管NCP1117ST50T3G输出;当电源模块仅有USB供电时,V+V-,Vo输出高电位,FDN340P的栅极和源极之间的电位差为0,场效应管关断,USB供电截止,仅锂电池供电。另外,USB电源线信号并不与FDN340P场效应管的漏极直接连接,而是在二者之间连接了一个自恢复保险丝MF—MSMF050—2(500mA),MF—MSMF050—2是一种可重置的保险丝,它能够为电路提供过电保护,当通过保险丝的电流超过500 mA时,保险丝断开连接,从而保护了USB电路。
实际应用中,节点的供电电源多是锂电池,节点的正常工作依赖于锂电池,因此电池余量的对实时监测就显得格外重要。本节点使用DS2438智能锂电池监测芯片作为监测锂电池电池剩余容量的硬件装置。DS2438为电池组提供了一系列有用的功能,包括有唯一的标识电池组的序列号,有内置的数字温度传感器因此电池组不再需要接热敏电阻,有测量电池电压和电流的内置A/D转换器,有记录电池电流流入流出总量的集成电流累加器,有运行时间记录器,还有40字节的非易失EEPROM,主要用于储存电池的一些重要参数如
电池化学类型、电池容量、电池充电方式以及电池组装日期。DS2438芯片能够自动采集当前电池的充放电状态、温度、电流、电压以及剩余电量等数据,并存放到片上存储器中。本节点中,DS2438芯片的DQ引脚与单片机的一路数字接口相连接,当芯片满足工作条件时,开始进行电池信息采样,等到DS2438 芯片采样完成后,单片机再读取DS2438的片上电流累加寄存器(ICA)中的数值并进行相应的数据处理,即可得到无线传感节点供电锂电池的当前剩余电量值。
广州丙通电子元件有限公司与Arduino达成合作,被授权允许代理Arduino各种型号类型的产品,丙通公司将长期代理Arduino的产品,具体包括:Arduino电路板,Arduino扩展板_Arduino套件,Arduino配件,Arduino机械臂套件。
欢迎咨询服务热线:020-62958688,
网址:www.btone-mro.com/。
本文地址:http://www.btone-mro.com/BtoneInform/newsContent.aspx?id=5033