服务热线: 13472705338
新闻中心 news center

煤矿智能仓储系统研究与设计

伴随互联网、大数据、人工智能技术的迅猛发展,煤矿智能化相关技术与装备水平也在显著提升。同时,随着煤矿智能化程度...
联系我们 contact us
新闻中心
您当前的位置:首页 > 新闻中心 > 无线仓储环境监测系统...

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

信息来源: 发布时间:2021-12-28 点击数:

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

1 系统总体方案设计

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

图1 系统结构图

图1 系统结构图  下载原图


2 测量节点设计

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

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

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

图2 测量节点设计

图2 测量节点设计  下载原图


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

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

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

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

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

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


图4 节点电源设计

图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数据格式

图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单点测温流程

图6 DS18B20单点测温流程  下载原图


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

#include"One Wire.h" //包含一线库的头文件

Serial.begin (9600) ; //初始化串口比特率为9 600

One Wire ds (4) ; //定义DQ为数字I/O的第4引脚

Serial.print (temp Sensor.get Temperature () ) ;

Serial.print ("℃") ; //输出温度值

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

3 测量网关设计

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

4 软件设计

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

图7 测量网关

图7 测量网关  下载原图


4.1 初始化过程

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

4.2 收发流程

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

  

表1 增强型Shock Burst模式下数据帧格式  下载原图



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

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

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

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

图8 软件流程图

图8 软件流程图  下载原图


5 功能与性能测试

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

5.1 传输距离测试

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

5.2 丢包率测试

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

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

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

  

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



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

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

  

表3 通信距离和误帧率测试  下载原图



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

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

上海阳合仓储管理
官方二维码

版权所有©:阳合仓储 公司地址:上海市嘉定区南翔嘉美路428号 联系电话:134-7270-5338 沪公网安备 31011402008347号 沪ICP备14036201号-1