吕宗旺,邱帅欣,孙福艳,桂崇文,李方伟
1.河南工业大学 信息科学与工程学院,河南 郑州 450001 2.河南工业大学 粮食信息处理与控制教育部重点实验室,河南 郑州 450001
粮情监测系统是利用当前信息化产业的最新技术成果,诸如先进的传感技术、网络技术、信息传输技术、存储技术、交互技术、算法等,结合粮仓实际情况,能够对粮情信息及时记录、反馈和分析[1-5]。目前粮情温度信息采集方法有多种:无线无源声表面波技术在粮食温度检测方面的应用,实现了仓储环境温度信息数据的采集[6-8];光纤布拉格光栅测量的温湿度与光栅中心波长之间存在的线性函数关系和符合光谱线性频移原理,测得粮仓内各处的温度与湿度数据,从整体上实现了对温度和湿度的实时监测[9]等。粮情信息传输技术分为无线和有线两种方式,目前粮仓使用较为成熟的粮情检测系统采用最广泛的RS-485总线方式[10],需要在监控室与各粮仓之间搭建通信电缆,不利于维护和升级,以至于整个监测系统的灵活性极差[11]。而现有的粮仓测温系统,粮仓分机到中控室主要采用Zigbee无线传输和有线光纤传输方式,从粮仓到分机均采用有线通信方式,在粮仓入粮、出粮及测温电缆维护时均会给粮仓工作人员造成极大的不便。根据Zigbee与RS-485在粮情检测系统中的特征[12-15],设计了两者混合组网的粮情监测系统[10,16-17]。作者着眼于粮情监测技术现状,研究了基于二叉树搜索算法的DS18B20温度检测系统[18-19],结合基于NRF24L01的无线通信技术[20],提出一种动态巡检式的无线传输粮情信息的监测方法,并对试验结果进行分析和讨论。
粮仓温度监测系统设计如图1所示,主要分为3个部分:基站、巡检员接收总站、上位机。基站采用 STC15 系列单片机为主控,单片机采集数字式温度传感器DS18B20的温度数据,每个基站可以连接多个数字温度传感器,而DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小、硬件成本低、抗干扰能力强、精度高的特点。每只DS18B20都有一个独一无二的64位只读存储器(ROM)码,被存储在器件的ROM中,DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。因此,通过二叉树搜索算法就可以用一个微控制器操作所有挂载在该总线上的从属器件DS18B20。接收总站部分采用 STM32 单片机为主控。上位机软件的开发使用C#语言编写。通信方法是基站将信号发送给不同的频段,总站通过搜索不同频段并接收频段的数据来搜集各个基站的信息。
图1 粮仓温度监测系统框图Fig.1 System chart
基站以STC15W408AS为主控,主控外设包括DS18B20温度检测电路和NRF24L01无线传输电路[21],共需要7个I/O口,基站电路原理如图2所示。
图2 基站电路原理Fig.2 Circuit principle of base station
NRF24L01是基站的无线传输模块,NRF24L01的操作方法可以简单概括为两个过程:初始化过程和工作过程,初始化过程完成模块的寄存器配置以及相关的设置。NRF24L01支持6个通道和125个可选的工作频段,单个模块可以在接收模式或者发送模式工作。该模块与单片机通过SPI接口通信,模块引脚接在单片机的P1口和P3口。该模块采用3.3 V供电,但由于单片机是5 V电源供电,因此需要增加线性稳压电路以提供3.3 V电源。稳压电路采用AMS1117芯片,可以将5 V输入电源稳定输出为3.3 V。为保证芯片的工作稳定性以及输出电压的稳定性,在芯片的输入和输出端均接有滤波电容。DS18B20采用单总线方式[22-23]与主控连接,本文设计的每个基站的一条总线上可挂载4个DS18B20。总站的硬件主要包括STM32C8T6、NRF24L01无线传输模块以及一个触摸屏显示器接口。
嵌入式软件使用Keil,用来开发STC15单片机和STM32单片机驱动以及应用代码。上位机软件的开发采用Visual Studio 2012平台,该应用软件用C#语言编写。
当总线主机发送Search ROM命令后,总线上的从属器件响应并发送各自ROM序列码的最低位,总线主机可以读到所有器件最低位的逻辑与结果。然后总线主机发送启动读取下一位操作的指令,所有总线从属器件将第一位的补码发送到总线上,总机便能从总线上收到所有从属器件的第一位补码的逻辑与结果。根据两次总线主机读到的所有器件的第一位的逻辑与和第一位的补码的逻辑与结果进行二叉树节点的判断[24]。总线主机收到补码后,需要向总线发送一个二进制数值(0或1),以此来选中总线上ROM码与该位码相同的一些器件。被选中的器件继续参与后续的搜索过程,未被选中的器件则进入等待状态。至此,第一位的搜索与选择决策完成,按照这种方式继续重复,直到搜索一位64位ROM码,然后根据节点处的决策原则(0优先或1优先)继续重复以上过程,直到总线上的所有器件都被查到。
基站软件设计流程如图3所示,首先进行系统初始化,包括DS18B20的初始化和NRF24L01的配置初始化。然后单片机对总线上的器件进行搜索,如果总线上的器件没有全部响应,则通过无线向总站发送有器件损坏的信息,再对搜索到的器件启动温度转换命令。如果总线上的器件被全部搜索到,则直接进入温度转换命令。温度转换完成后从DS18B20的RAM中读取温度值并通过无线发送出去。至此,一个流程结束,下一个周期重新从搜索器件开始。
图3 基站软件设计流程Fig.3 Flow chart of base station software
首先进行系统初始化,包括NRF24L01的初始化和串口的初始化。再通过NRF24L01对负责基站的所有器件的工作频道进行搜索,如果频道没有数据便继续进行频道搜索,如果频道有数据便将数据接收,然后将接收到的数据通过串口发送到上位机。至此,一个流程结束,下个周期重新从搜索频道开始。
在一个无线传输系统中,包括若干个发射基站和一个接收总站,每个基站系统挂载多个传感器,负责纵向或者该区域的粮情信息采集并将数据发送到特定的无线频段。总基站采用动态巡检的方式搜集各个基站的数据完成信息的一次汇总。
发射基站上包括主控、若干个温度传感器和一个射频模块,其简易结构如图4所示。在测温电缆内部间隔一定距离设有一个DS18B20温度传感器,最上端为无线模块的传输天线。
图4 基站结构图Fig.4 Structure diagram of base station
图5为基站在粮仓(以平方仓为例)的应用示意图,将适当数量的基站按照粮油储藏粮情测控通用技术要求(LS/T 1809—2017,平方仓水平方向测温电缆行列间距不大于5 m,垂直方向粮温传感器间距不大于2 m,距离粮面、仓底、仓壁0.3~0.5 m)进行布点,各基站工作时将各个检测点的数据记录并发送到特定工作频道。考虑到平房仓的占地面积广,总站以固定方式难以获取稳定的数据,因此以动态巡检的方式搜集数据,总站在粮仓长中线上进行巡检,将获取的信息发送给服务器处理。
图5 基站在粮仓的应用示意图Fig.5 Application diagram
测试方法为单片机对单总线上的所有器件进行ROM码搜索并保存,最后将单总线上所有器件的ROM码通过串口打印显示出来。对单总线上挂载4个DS18B20进行测试,结果如图6所示。
图6 ROM码搜索结果Fig.6 ROM search results
本文使用CRC校验码计算器对接收到的ROM码进行了重新计算验证。比如将第一个接收到的ROM码序列的信息码进行计算,将得到的CRC校验码结果与接收到的结果比较,它们均为41H,表明该ROM码无误,结果如图7所示。同样的方式,对其他3位也进行了验证,均表明ROM码正确。
图7 CRC计算验证结果Fig.7 CRC calculation verification results
目前本系统最大可以检测750根测温电缆,测试条件为室温约26.4 ℃,综合测试选取任意两个基站进行测试。每个基站搭载4个DS18B20温度传感器,将测量得到的数据发送到特定频道。总站以动态扫频的方式对粮仓基站的频道数据进行搜索分时接收。
接收到的综合测试数据如图8所示。基站1的频道为F5(2.405 GHz),它挂载的1到4号温度传感器温度分别为26.56、26.50、26.46、26.40 ℃;基站2的频道为F15(2.415 GHz),它挂载的1到4号传感器温度分别为26.26、26.37、26.44、26.51 ℃。
图8 综合测试数据Fig.8 Comprehensive test data
经过实测12组48个粮仓测温点,获得粮仓测温点的温度,对比粮仓实际温度26.40 ℃,由图9可以看出,实测温度接近粮仓实际温度,平均误差率为0.28%,满足LS/T 1813—2017中误差不超过0.5%的基本要求,达到可以在粮情监测系统方面应用的预期目的。
图9 粮仓实测温度与粮仓实际温度对比Fig.9 Comparison curve of actual test and actual temperature in grain warehouse
本文结合平房仓的特点,完成了一种基于动态无线传输的粮情监测系统的设计,验证了一种适用于粮情监测的无线传输方法。基于二叉树算法的粮情监测系统测试和利用CRC校验码计算器对接收到的ROM码进行计算验证的结果表明,该系统性能优良、误码率低、误差率低,能够实现对各个基站的节点温度及时采集、传输等,验证了动态无线传输方法在粮情检测系统方面应用的可行性和优势,有效地降低了后期维护及升级成本。