APP下载

无线仓储环境监测系统的设计与实现

2013-08-13何瑞平种兰祥

电子技术应用 2013年11期
关键词:寄存器温度传感器网关

何瑞平,种兰祥

(西北大学 信息学院,陕西 西安710127)

随着社会经济快速发展,现代物流与仓储的重要性日益凸显。特别是仓储管理,对于物资的保管养护,防止产品的腐蚀、霉变、虫害等问题有着重要的意义。传统的仓储环境检测大多采用人工定时巡检或有线在线监测方式[1]。前者存在效率低、数据误差大、时间人力成本高等缺点;后者虽能够实时获取仓储环境信息,但不便于布设、维护和扩展。采用无线通信方式则可以解决以上问题。考虑到仓储管理的实际需求,采用Arduino开源电子平台[2]和射频收发器 nRF24L01,结合温湿度及烟雾传感器等,能方便地构建出分布式多点无线监测系统。

1 系统总体方案设计

为了便于部署与扩展,仓储环境检测系统采用模块化设计,包括Arduino控制板、数字传感器、基于射频芯片nRF24L01的测量节点、天线和上位机监控平台,其结构如图1所示。无线测量节点分布于整个监测区域,进行数据采集与传送,以自组织的方式和测量网关共同构成无线数据传输网络。测量网关负责建立网络连接并接收来自与之相连的多达32个节点的数据,并将这些数据上传到监控平台。监控平台与互联网相连,负责数据存储、显示与网络发布。一旦测量数据超过安全设定阈值,会产生相应警报。该系统也可应用于工业、农业与林业的环境检测中。

图1 系统结构图

2 测量节点设计

分布式无线测量节点负责环境物理量测量、数据传输,其系统由微控制器核心、无线通信模块、传感模块及供电模块构成。

本着模块化、低成本、低功耗的设计原则,本设计采用型号为NANO的Arduino微型控制板控制射频芯片nRF24L01和温、湿度数字传感器等来实现测量节点功能,硬件结构如图2所示。

图2 测量节点设计

Arduino是采用精简指令集开发的电子平台,使用类似于Java和C语言的开发环境[3],硬件部分主要由 AT-mel AVR微控制器和I/O接口电路等组成。

作为测量节点微控制器的Arduino NANO核心采用ATmega328处理器,具有 32 KB的 Flash,一个 16 MHz晶振,14路数字输入输出,6路模拟输入,1个 UART接口,支持I2C总线,并且支持PWM输出以及SPI通信。

无线通信模块采用Nordic公司研发的内置链路层逻辑的工业级2.4 GHz无线收发芯片nRF24L01[4]。板载鞭形PCB天线,支持多点通信,内置频率合成器、晶振、功放等模块,采用GFSK调制,可自动跳频128个频点,融合Enhanced ShockBurstTM技术,最高传输速率达2 Mb/s,具有体积小、功耗低、传输可靠等优点。

无线模块与MCU通过SPI总线连接,如图3所示。MCU用数字线D13为无线芯片提供时钟信号,CSN为片选信号,CE信号和CONFIG寄存器的PWR_UP、PRIM_RX位决定芯片是否处于发送/接收工作模式,MOSI、MISO为SPI接口, 实现数据输入输出。 当nRF24L01发出数据发送完毕 (TX_DS)、数据接收完毕(RX_DR)、达到最大重发次数(MAX_RT)三类输出中断请求任意之一出现时,中断引脚IRQ拉低。MCU查询IRQ中断标志位状态用以判断发射或接收成功。常态下,无线模块处于休眠状态,一旦被监测网关选中查询,则被激活,进入发送模式。

图3 无线测量节点MCU与无线模块连接

测量节点能量供应采用三端线性稳压器LM7805与AMS1117将9 V蓄电池稳压至5 V和3.3 V以提供电源。如图4所示,旁路电容C1、C2主要用来抑制自激振荡,稳定输出。

图4 节点电源设计

本文选用的传感器单元有温度、湿度、烟雾传感器,也可根据实际增加其他传感器。采用数字传感器,无需设计复杂的接口转换电路,使用简便且可靠性高。下面着重介绍温度传感器单元。

温度采集单元采用DALLAS公司的集成芯片DS18B20数字式温度传感器,与传统的热敏电阻最大不同的是:测量温度范围宽(-55~+125℃),精度高(在-10~+85℃,精度为±0.5℃)。并且可实现多点组网,测量精度可调,独有的单总线技术,同时传输时钟和数据、硬件设计简洁、成本低、便于扩展和维护等传统温度传感器不具备的优势。

DS18B20有两种供电模式:寄生供电和外部供电。寄生供电时,只需一根地线和一根上接4.7 kΩ上拉电阻的数据线,数据线既传输数据又提供电能。这样,当总线闲置时其状态为高电平。其内置电容会在高电平期间储能,低电平期间放电。但在多点测温任务时会产生较大的测量误差[5],本文采用外部供电,可使每个设备的精确度和稳定性得到提升。

DS18B20内部结构主要由四部分组成:64 bit光刻ROM、温度传感器、1 B的温度报警触发器 TH和TL、配置寄存器。64 bit ROM寄存器具有唯一的序列号。微控制器可以通过单总线对具有特定序列号的温度传感器进行寻址,以实现一根总线上挂接多个 DS18B20的目的。用户可以通过配置寄存器来设置温度转换的精度。

其测量精度可以配置成 9、10、11或 12 bit四种状态,分辨率分别对应为 0.5、0.25、0.125、0.062 5,图5 为12 bit分辨率时数据存储格式,其中,前5位是符号位,后11位是数据位。

图5 DS18B20数据格式

需要指出的是DS18B20的单总线功能是按严格的时序完成的。访问DS18B20需3个步骤:初始化→ROM操作指令→功能操作指令。具体流程如图6所示。DS18B20所有数据交换都由一个初始化序列开始。主机通过拉低单总线至少480 μs,以产生低电平复位脉冲(TX),然后释放总线进入接收模式(RX)。在单总线被上拉电阻拉至高电平 15~60 μs后,DS18B20通过拉低总线60~240 μs产生应答脉冲,表示该设备已处在总线上且准备工作。主机检测到其复位成功后,会发送一条ROM操作指令,来检测总线上从设备的数量并进行匹配。共有 5条 ROM命令:搜索 ROM、读 ROM、匹配 ROM、跳过ROM和报警搜索。当主机指定访问某个特定的设备时,可发出功能操作指令。

图6 DS18B20单点测温流程

由于Arduino的开源特性,通过扩展库可将硬件底层封装起来[6],针对具体应用可编写相应的库函数。如针对日立HD44780芯片组驱动的液晶显示器而推出的LiquidCrystal库、针对串行控制的SoftwareSerail库等,只要了解其成员函数种类和调用方式,即可方便快速地进行开发。下面是输出测量温度代码:

温度传感器在测量完成后将测量的结果存储在两个8 bit的RAM中,Arduino可通过单线接口读到该数据,读取时低位在前,高位在后。

3 测量网关设计

网关在硬件结构上与测量节点相类似,微处理器采用性能更加强劲的Atmega2560。去除了传感器单元,并增加了显示接口和上位机接口。主要负责无线网络的建立和信息的接收,最终通过RS232上位机接口传输给监控计算机。网关硬件结构如图7所示。

4 软件设计

图7 测量网关

采用模块化设计思想,按整体功能分为无线模块的初始化、收发过程的实现。无线测量节点启动后,先对各设备和寄存器进行初始化,查找网关并建立连接,最终将采集到的数据上传至网关。

4.1 初始化过程

节点布置完毕后,Arduino通过SPI接口对nRF24L01初始化。置CSN针脚为低,使能芯片进入配置模式,所有配置工作都是通过SPI指令完成的,共有30 B的配置字[7],包括在寄存器TX_ADDR中写入 TX节点地址、在RX_ADDR_P0中写入RX节点地址、使能自动应答功能EN_AA、配置发射参数RF_SETUP寄存器(包括低噪放大器增益、发生功率和无线速率)、配置选择通信频率RF_CH寄存器和配置自动重发次数寄存器SETUP_RETR等。

4.2 收发流程

初始化完毕nRF24L01后,设置无线模块为发送模式,将 CE 拉高至少 10 μs,130 μs 后启动发射,随后进入待机状态。若此时从网关收到查询信号,则调用发送函数。为了有效地提高抗干扰性,降低系统功耗,将芯片工作模式设置为增强型ShockBurstTM模式;发送数据时只需将数据存入TX_FIFO缓冲区中,nRF24L01会自动处理字头和CRC校验码,并将这些数据按表1所示的帧格式打包发送。

表1 增强型ShockBurst模式下数据帧格式

数据发送完毕后,发送模块自动转入接收模式等待应答信号,同时产生TX_DS中断;若发送超出时限,则产生MAX_RT中断;IRQ拉低后读取STATUS状态寄存器位值,来判断中断源来源;当且仅当发送完毕中断产生,说明数据成功发送,清除置位和发送数据缓存TX_FIFO。流程如图8所示。

测量网关一端在完成初始化等一系列准备后,将nRF24L01配置为RX模式。数据到来时,从待机状态进入接收模式。当判断节点地址与CRC校验值等信息正确后,读状态寄存器相应位确认产生接收中断RX_DR,则从接收数据缓存区RX_FIFO中读取数据;完毕后清除置位、缓存、进入待机模式,等待下一次数据的到来。

图8 软件流程图

5 功能与性能测试

系统设计完毕后需对软硬件进行主要包括无线收发指令控制,以及无线传输的距离、功耗、传输速率和丢包率等性能的综合测试。

5.1 传输距离测试

无线收发模块的传输距离受发射功率、接收灵敏度和实际环境等因素影响。在相同条件下,每组进行10次测试,取其均值,如表2所示。nRF24L01的发射功率可配置为-18 dBm~0 dBm。在传输速率恒定条件下,发射功率越高,传输距离越远。

5.2 丢包率测试

采用点对点传输进行丢包率测试,在开阔地、数据传输速率均为1 Mb/s条件下,发送端发射功率为0 dBm,接收方灵敏度为-85 dBm。发送端连续发送数据载荷为1 B的100个数据包,接收端同步接收并统计发错或丢失的数据帧数目。本设计丢包率测试结果如表3所示。

在25 m内丢包率可稳定在1%内,发射功率保持恒定,提高数据传输速率为2 Mb/s,接收灵敏度降低约为-81 dBm,传输距离同时下降。可见,在实际应用需求中需要对无线传输速率与传输距离进行折中选择。

本文详细介绍了新型2.4 GHz无线收发芯片nRF24L01的特性与应用,结合Arduino创新平台设计出了星型拓扑结构的通信系统,并给出了具体的软、硬件设计方案。实验证明,该系统具有成本低廉、性能稳定等优点,有较大的推广价值。

表2 不同发射功率下传输距离测试

表3 通信距离和误帧率测试

[1]战美玲.基于ZigBee无线传感器网络的仓储环境监控系统研究[D].济南:山东师范大学,2012.

[2]程晨.Arduino开发实战指南[M].北京:机械工业出版社,2012.

[3]袁本华,董铮.基于 Arduino控制板的温室大棚测温系统设计[J].安徽农业科学,2012,40(8):5049-5050.

[4]时志云,杨毓.基于 nRF24L01和 FT245BM的无线文件传输系统设计[J].电子技术应用,2007,33(10):90-92.

[5]陈明,邱超凡.基于 DS18B20数字温度传感器的设计与实现[J].传感器技术,2008(8):188-189.

[6]蔡睿妍.Arduino的原理及应用[J].电子设计工程,2012(16):155-157.

[7]李辉,宋诗,周建江.基于 ARM和 nRF24L01的无线数据传输系统[J].国外电子元器件,2008,16(12):44-46.

猜你喜欢

寄存器温度传感器网关
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
温度传感器DS18B20在温度计设计中的应用
一种高性能CMOS温度传感器
信号系统网关设备的优化
XTR105电流变送器在温度传感器中的应用
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
温度传感器在笔记本电脑散热系统中的应用
一种实时高效的伺服控制网关设计