葛海波, 李彩虹, 安文喆, 吴 昊
(西安邮电大学 电子工程学院, 陕西 西安 710121)
关于智慧农业信息系统设计方面的研究,文献[2]设计并实现了基于Zigbee的智慧农业监控系统,对农业管理中温度及光照等参数进行实时监控,该系统组网灵活、网络容量大,但Zigbee技术所在的频段衍射能力较弱,该技术的农业监控系统通信稳定性有待提高。文献[3]基于Ipv6的低速个人域标准(ipv6 over low-power personal area networks, 6LoWPAN)无线传感网络,设计了农业环境实时监控系统,完成对特定农业信息的实时监测和控制,但该设计数据采集量有待提高。文献[4]基于通用分组无线服务技术(general packet radio service, GPRS)实现了一套农业远程灌溉系统,该系统稳定性高和功耗低及成本低,可改善传统灌溉监测系统在实际应用中存在的缺陷,但在实际的应用场景中部署的终端节点,无法直接与蜂窝网络之间实现点对点通信,通信速率受到限制。由于传统通信方式的制约,利用物联网等现代通信技术实现对农业生产进行监测和智能化管理,是提高农业精细化生产和智能化生产的重要方法。
LwM2M(lightweight machine-to-machine)协议主要为受限设备以及实现低功耗功能而设计。相对于传统的超文本传输协议(hyper text transfer protocol, HTTP),使用LwM2M协议可以大大提高通信效率[5-6]。并且LwM2M协议具有低功耗性能,适用于点到点的通信,能够满足所设计的智慧农业信息系统的要求,本文拟依据LwM2M协议,设计基于设备域、平台域和应用域的智慧农业信息系统。系统由硬件和软件部分构成,硬件部分由具有基于蜂窝网的窄带物联网(narrow band internet of things, NB-IoT)通信能力的数据传输单元组成,软件部分是基于万维网(world wide web, WWW)应用的软件服务平台[7-8]。采用自封装的LwM2M协议软件开发工具包 ( software development kit, SDK)在STM32平台上设计数据传输单元[9]。数据传输单元中芯片DFN6SHT20和BH1750完成空气温湿度、土壤温湿度以及太阳光照度的采集,通过其中的NB-IoT模组将数据上传给服务端的Web应用,Web应用端对数据传输单元进行传感器数据资源一系列功能性操作,实现对农作物生长环境信息进行感知和监测,进而控制农作物的生长条件。
智慧农业信息系统包括感知层、传输层和应用层,系统结构示意图如图1所示。智慧农业信息系统采用端到端的开发模式,即设备域-平台域-应用域。设备域完成传感器数据,包括空气温度、湿度、光照强度的采集,NB-IoT网络将采集的数据上传至平台域,平台订阅到硬件资源数据后,对数据资源进行缓存、入库和实时处理等一系列操作,应用域则对物联数据资源进行业务逻辑开发,并将主要的数据进行监测和调控。
图1 智慧农业信息系统结构示意图
数据传输单元硬件是智慧农业信息系统的硬件组成部分,数据传输单元硬件包含温湿度传感器、微控制器及NB-IoT模组等。数据传输单元XY-475LME3616的硬件结构如图2所示。
图2 数据传输单元XY-475LME3616的硬件结构
数据传输单元XY-475LME3616硬件采用“传感器+微控制单元(microcontroller unit, MCU)+模组”的方式进行数据处理。温湿度传感器、光照传感器对农作物生长环境信息进行采集,并将数据通过微控制单元,内置集成电路(inter-integrated circuit, IIC)或串行外围接口(serial peripheral interface, SPI)的通信方式,传输给单片机STM32,STM32利用内部编写的规则进行计算,筛选提取传感器采集的数据,并保存有效数据。通过透传方式将有效数据传输至模组,模组上报数据到管理平台。在数据传输单元XY-475LME3616硬件结构中,单片机STM32内嵌自写的LwM2M通信协议栈,对传感器的对象资源模型创建提供便利[10]。微控制单元采用意法半导体的STM32L475RCT6,它是32位带数字信号处理(digital signal processor, DSP)单元和浮点单元(floating-point unit, FPU)的ARM Cortex-M4内核超低功耗单片机,工作频率为80 MHz,提供256 KB闪存,片内外设丰富,主要应用于低功耗物联网场景中。
在数据传输单元XY-475LME3616硬件结构中,NB-IoT模组采用高新兴物联ME3616模组,它是一款支持NB-IoT通信标准的窄带蜂窝物联网通信模组。在NB-IoT制式下,该模块可提供高达66 Kbps上行速率和34 Kbps下行速率,其与STM32单片机通过异步串口可实现数据透传。由于ME3616模组异步串口工作电压为1.8 V,STM32单片机的异步串口工作电平为3.3 V,因此,为实现两者之间的异步串口通信必须要进行电平匹配。STM32与ME3616的串口电平匹配电路如图3所示。
1.2 调查方法 参照卫生部规划教材,人民卫生出版社出版【口腔预防医学】口腔流行病学问卷调查项目要求,自行编制的封闭式调查问卷,内容包括受检者一般情况如年龄、文化程度、城乡户口和受检者口腔知识、行为及希望获得口腔保健知识的渠道等。共发出问卷1 100份,收回有效问卷989份。根据年龄、文化程度和城乡差别进行分组:22~29岁组和30~41岁组;低学历组(大专及以下)和高学历组(本科及以上);城市户口组和农村户口组。
图3 MCU与NB模组的串口电平匹配电路
在MCU和NB-IoT模组的串口通信中,MCU采用3.3 V电平域的微控制器,而NB-IoT模组因为功耗的原因,采用1.8 V工作电平,导致在串口通信时两个不同电平域的器件无法直接相连,通过TXB0102D电平可转换芯片,实现不同工作电平的转换。TXB0102D芯片是一款不可转置的电平转换器,通过在其电源电压VCCA引脚接入1.2~3.6 V的电平,电源电压VCCB引脚接入1.65~5.50 V的工作电压,可实现1.8~3.3 V工作电压的双向转换。以此满足MCU和NB-IoT模组之间的串口通信电平需求。
针对农业环境数据监测高功耗问题,根据LwM2M协议进行对象-资源数据模型建立,数据传输单元XY-475LME3616采用定时休眠的方式进入超低功耗模式,以此进一步降低终端节点的整体功耗。数据传输单元硬件端基于STM32的程序设计流程如下。
步骤1首先对单片机片内和NB-IoT模组进行初始化设置。
步骤2设备终端通过与运营商基站建立无线资源控制(radio resource control, RRC)连接,进行NB-IoT网络附着,以便于实现数据传输。
步骤3调用协议SDK,创建基于智能对象数据模型(Internet protocol for smart objects, IPSO)的传感器资源,以此实现低功耗。
步骤4判断平台注册成功与否。注册成功,则进入下一个流程;注册失败,则重新注册,直到注册成功为止。
步骤5将收集到的农业信息资源上传,平台进行接收。
步骤6判断数据传输硬件单元是否进入休眠。若已进入休眠状态,则进行下一个流程;未进入休眠状态,则返回上一个流程。
步骤7数据传输单元XY-475LME3616进入休眠,15分钟后自动唤醒。
针对数据传输单元板载温湿度传感器、光照传感器、微控制器及NB-IoT模组,对NB-IoT模组进行初始化设置,并进行网络附着,建立智能对象数据模型传感器资源,将传感器采集的数据进行传输,以此实现低功耗。判断平台注册成功与否,若成功,则平台接收上传的数据资源,若注册失败,重新注册。数据传输完成后,判断数据传输单元是否进入休眠状态,若进入休眠状态,15分钟后自动唤醒。
为实现超低功耗并提高系统的稳定性,采用LwM2M协议进行对象-资源数据模型创建,将对象属性结构体进行优化。对象资源数据模型将LwM2M客户端的每一条信息都抽象成为一个资源,资源在逻辑上被组织为对象,每个资源对象都有一个唯一的标识符身份(identification, ID),且每个对象都可根据实际需求拥有若干个资源,每个资源根据认证可拥有一个识别码。每个资源对应一个传感器对象某个具体的可操作属性。在进行实际操作时,必须先对对象进行实例化,然后调用其属性。
将采集到的数据例如空气温湿度、土壤温湿度、太阳光照度,利用LwM2M协议建立对象-资源数据模型。每一个数据作为一个对象,都有唯一的ID。温度、湿度、太阳光照度分别对应不同的ID,每个对象有不同的资源实例,例如空气温度和土壤温度属于同一对象的不同资源实例。采用LwM2M协议进行对象-资源数据模型建立,可提高上下行数据在传输中有效负载的占比,提高系统稳定性。
LwM2M协议中的客户端、对象和资源三者之间的关系如图4所示。
根据IPSO下的资源数据模型[11],创建一个数据传输单元XY-475LME3616的硬件对象数据库。将空气温湿度、土壤温湿度和光照作为具体对象,分别赋予其ID号。例如将空气温度与土壤温度的ID号均设置为3303,而空气温度与土壤温度作为对象ID的不同资源实例,用数字1和数字2表示,此外,设定系统中资源量代码为5700。硬件对象数据库如表1所示。
图4 LwM2M客户端、对象和资源三者关系
对象ID编号对象资源实例编号资源量代码空气温度330315700土壤温度330325700空气湿度330415700土壤湿度330425700光照度 330115700
为简化数据传输单元软件的开发流程,基于受限CoAP(constrained application protocol)协议和LwM2M协议的开源实现,提取其核心协议内容,实现CoAP协议内容二次封装。在该过程中屏蔽协议具体实现的复杂性,给出协议实现的应用程序接口,第三方开发者移植SDK到自写的工程目录下,在硬件端业务逻辑中调用由“LwM2M.c”源文件提供的“LwM2M_Resource_add(device,object,objectIns, res) ”函数即可完成基于IPSO对象资源数据模型的创建。调用“iot_SendData(int8_t *buff,uint32_t len) ”和“iot_ReceiveData(uint_t *buff,uint16_t *read)”两个函数可实现资源数据的上行、下行处理。LwM2M协议SDK中C源文件组成描述如表2所示。C源文件实现了LwM2M协议硬件端注册到服务器流程,实现LwM2M观察者和发现者模式[12]。
表2 LwM2M协议SDK中C源文件组成描述
应用软件端采用基于浏览器/服务器(browser/server, B/S)架构的Web开发方式[13],利用SSM(Spring+Spring MVC+Mybatis)框架搭建出农业环境物联信息监测系统后台业务逻辑层,结合商业级数据图表ECharts(enterprise charts)前端可视化技术[14],实现基于B/S架构的智慧农业信息监测系统。
针对物联管理系统数据量庞大,对数据可操作性要求高的特点,在管理界面中引入ECharts进行数据渲染,生成各种可视化交互图表,进行农作物生长环境信息的可视化呈现。通过可视化管理界面,查询各个终端设备的远程数据和分析数据图表,进行监测与控制等操作。例如在无人值守时开启自动管理模式,对大棚内温度进行监控,该模式下系统各组件会协同工作,将棚内温度进行调节。对温度进行监控,数据可视化参考界面如图5所示。
图5 数据可视化参考界面
图5作为数据可视化界面的一个参考模板,以温度状态为例,横坐标为温度变化值,纵坐标为时间的变化值,表示在一天内温度随时间变化发生的改变情况。
在实验室环境下,测试数据传输单元XY-475LME3616的休眠电流值仅为10 uA;正常工作时,整板的工作电流为22 mA,该值包含板载空气温湿度传感器及光照传感器的工作电流。由于本文中的数据传输单元都是XY-475LME3616,因此在一个农业生产大棚区内布置5个XY-475LME3616数据传输单元,数据传输单元XY-475LME3616实物如图6所示。。
图6 数据传输单元XY-475LME3616实物
数据传输单元XY-475LME3616板载多个传感器,对数据传输单元XY-475LME3616上电开机后终端首先附着到NB-IoT网络环境中,进而注册到物联管理平台,物联管理平台的IP为“coap://39.108.189.40”,端口号为5683。设定传感器采样间隔为5分钟,数据采集传输完成后数据传输单元XY-475LME3616进入休眠状态。
系统硬件端包括温湿度传感器、水泵和通风控制端传感器等。温湿度传感器采集棚内空气和土壤的温湿度数据值,并将其上传至平台端,连续监测7天,系统上行数据丢包率如表3所示。
表3 系统7天上行数据丢包率
由表3可以看出,在连续监控7天时间里,空气温湿度和土壤温湿度以及光照度的上传数据是2 016条,平台接收到的数据却不相同。在平台接收到的数据中,光照度的数据最多,为2 010条;土壤温度与湿度的数据最少,为2 000条。光照度在上行数据传输中丢包率最小,为0.298%;土壤温湿度在上行数据传输中丢包率最高,为0.794%。系统上行数据平均丢包率为0.575%。
为使大棚内的温湿度值保持在适合农作物生长的范围内,需要实时监控并动态调控棚内温湿度值,并通过下发指令给水泵和通风控制端的传感器进行调节。连续监测7天,系统指令实时下发的丢包率如表4所示。
表4 系统7天指令实时下发丢包率
由表4可以看出,在连续监控7天时间里,用户系统给水泵控制及通风控制端的指令数据都为300条。水泵控制端收到的指令数据为298条,丢包率为0.667%。通风控制端收到的指令数据为299条,丢包率为0.333%。系统实时下发指令的平均丢包率为0.5%。
在大棚内外分别放置一个数据传输进行数据采集,开启无人值守模式,连续监测3天,记录3天时间里大棚内外空气温湿度的变化,大棚内外3天时间里空气平均温湿度对比如图7所示。
(a) 3天棚内外空气温度平均值对比
(b) 3天棚内外空气湿度平均值对比
从图7可以看出,棚内空气平均温度的值始终在26 ℃左右以较小幅度上下波动,而棚外空气平均温度值波动幅度较大,最高温度与最低温度的温差较大。棚内空气平均湿度波动幅度较小,棚内空气湿度占比一直维持在58%左右,而棚外空气湿度波动幅度较大。
针对现有农业物联信息系统通信方式的数据精准性差、功耗高等问题,基于物联网的感知层、传输层和应用层结构,利用数据传输单元完成空气温湿度和太阳光照度等信息的采集,通过具有NB-IoT的模组将数据上报给服务端Web应用,设计了一种智慧农业物联信息系统。结果表明,利用该系统对大棚内上下行数据采集7天,该系统上行数据平均丢包率为0.575%,系统实时下发指令的平均丢包率为0.5%,该系统上下行数据的平均丢包率为0.537 5%,丢包率低,数据精准度高。对于整个系统而言,系统休眠时电流为10 uA,正常工作时电流为22 mA,系统休眠时的电流小于工作时的电流,满足低功耗要求,符合预期设计目标。