鱼菜共生系统智能监测与联动控制的设计与实现
2022-04-20刘永军田志新宋妙龙陈锐徐震
刘永军田志新宋妙龙陈锐徐震
(1.上海绿椰农业种植专业合作社,上海 201715;2.上海工程技术大学,上海 201620;3.青浦区水产技术推广站,上海 201799)
引言
我国对鱼菜共生监测控制系统研究起步较晚,发展缓慢[1],国内现有的鱼菜共生农业生产方式仍是以人工观测和经验判断为主,耗费人力、时间,而且出错率比较高。随着科学技术的发展和物联网技术的兴起,数字化养殖应运而生,将互联网、物联网、通信技术等新兴技术结合起来,让智能化、信息化、机械化逐渐取代人工,保证农产品质量安全的前提下大大提高了生产效率,从而提高了农业经济效益。杨世凤等[2]设计了一套控制系统,实现了溶氧监测的同时具有自动调控功能;但其仅能调控单参数,多参数下还是需要手工调控,对于多参数管理性能较差。赵月玲等[3]设计出一种基于传感器技术的低功耗的鱼菜共生系统实现对pH数据进行监测与调控。
本文设计的智能监测与联动控制系统从鱼菜共生系统的水质参数入手,实时获取到水质参数信息,运行稳定可靠。保证食用鱼的正常生活环境。实现鱼菜共生系统的多参数智能化调控管理,对于规模化养殖有十分重要的意义。
1 系统设计
系统功能由3个关键模块组成,通信模块,UPS模块,报警模块。系统流程如图1所示。
图1 实验流程图
1.1 通信模块设计
考虑到需要用到多个串口进行数据通信,主控芯片部分选用STM32F103ZET6,芯片共有144个引脚,包括5个串行接口,本文设计的联动控制系统主机需要用到3个串口进行数据通信。以水体溶解氧、水温、pH值3个参数为例,实现联动控制。
串口1用于PC端与STM32主机之间进行通信,串口3和BC20模块之间通信信息可以通过printf函数输出到串口1,从而可以通过串口调试助手在PC端查看到BC20模块的初始化以及运行信息。传感器并联走485总线,数据通信协议为Modbus协议。传感器地址默认为01,为了防止地址冲突造成数据读取失败,将溶解氧传感器的地址设置为02。Modbus协议是一种国际标准的通讯协议,每台从机由用户设定地址以实现访问操作,地址范围为0~255[4]。标准的Modbus协议采用2种模式进行通信,ASCII模式和RTU模式[5]。
相比于ASCII模式,RTU模式在同等速率下能够传输更多的信息,所占空间小,传输时间短,因此选取RTU模式进行传输。
地址帧编码为1~255,1个主机可接255台从设备。同一时间,主设备只能和1台从设备进行通信。从机接收完毕后,生成接收数据(CRC码除外)的CRC校验码,并与主机发送的CRC码比较,若相同则认为接收正确。
STM32主机通过485总线接收到的数据采用iEEE754格式,CDAB换顺序为ABCD,以温度测量值为例,顺序交换后的数据为0x41、0xC6、0x47、0xBC。需要将这4个数据转换为浮点数,在计算机中,浮点数的存储均采用4字节的iEEE754格式。下位机应答数据式如表1所示。
表1 接收数据包格式
表2 IEEE754格式
将ABCD数据转换为二进制形式,第1位为符号位s,1表示负数,0表示正数,第23~30位是阶码n,第0~22位是尾数。转换为浮点数的计算公式:
(-1)s×2n-127×(1+m)
(1)
式中,s=0,n化成十进制数为131,偏移量为127,尾数m需要各个位乘以权重再相加,每个位的权重系数为2i-23,如第22位的权重系数为2-1,第0位的权重系数为2-23。计算公式:
(2)
式中,j为各个位的数值。如表2所示数据计算得:
m=1×2-1+0×2-2+...+0×2-23=0.5491
(3)
代入公式得最后的浮点数为(-1)0×2131-127×(1+0.5491)=24.7856,所以数据最终的结果为24.7856℃。同理,取到pH值为4.2018,溶解氧的值为10.9103mg·L-1。
各个传感器实时监测水体参数,将数据存储至寄存器,主机通过485总线向各个传感器发送Modbus指令码,实现对各个传感器数据寄存器的数据读取,在主程序内可以进行轮询周期的设置,从而达到对各参数的实时查询。
从传感器读到的数据发送至NB模块,NB模块通过AT指令将数据进行打包处理,发送至云平台或服务器进行数据远程监测。本文设计的联动控制系统,数据上传到阿里云物联网平台。主机通过串口3向NB模块发送AT指令,进行NB模块的初始化入网配置,并通过AT指令配置模块MQTT协议版本,通过MQTT协议连接至阿里云平台。
1.2 UPS模块设计
考虑到系统在停电时需要持续运行,需要给系统加装UPS不间断供电电源,如图2所示。
图2 UPS不间断供电流程图
主电源是一个220V转12VDC的开关电源,12VDC下游接1个电压转换模块,可以将12VDC转换为3.3V、5V等,可以通过MCU的GPIO引脚接在3.3V输出的引脚上,时刻检测电压值,当主电断开时,电压由3.3V降到0V,此刻,在主程序里可以设定当电压值小于0.5V时,判定主电源断电,并发出报警信息。电压转换模块12V接口接UPS不间断供电模块,该模块另一路接12VDC锂电池,可以实现在主电断电的时候,切换到锂电池供电,从而实现不间断供电。
图3 UPS不间断供电模块
1.3 语音报警模块设计
设备在运行过程中,难免会监测到异常数据,此时需要通过语音报警功能提醒工作人员,一旦设备联动控制出现故障,工作人员可以在第一时间进行人工干预,从而将风险降到最低。
图4 语音模块
语音模块IO0-IO7 8个引脚可以选择为组合模式或者独立模式,独立模式下0~7引脚每个引脚可以通过低电平触发1首MP3音频,而组合模式可以通过0~7引脚组合电平,可以播放0~255首MP3音频。由于设备报警信息少,因此选择独立模式即可满足功能需求。事先录制好每个报警信息对应的报警音频,按照要求各市存放在TF储存卡内,通过向引脚发送低电平来触发报警音频。
2 实验测试与结果分析
本文选用的传感器为瑞蒙德厂家生产的智慧型传感器如图5、图6所示。
图5 PH传感器 图6 溶解氧传感器
按照系统原理图以及流程图将主机与传感器设备以及打氧泵,加热棒等连接好进行实验测试,测试发现主机给设备发送指令码后读取不到设备数据,通过使用别的厂家设备进行收发数据正常,排除代码错误的可能。通过万用表电压档和电阻档通过测量485信号线AB间的电压,测量数据如表3所示。
表3 485传感器测试电压电阻值
通过对比,猜想可能跟主机电路板485接口AB间并联的匹配电阻有关。在RS485通信中,有一种阻抗不连续现象。为了消除这种阻抗不连续现象,需要在电缆的末端跨接1个与电缆的特性阻抗大小相等的匹配电阻,使电缆的阻抗连续[6]。这种阻抗不连续现象往往在远距离传输或者多设备传输时产生,考虑到本文使用的传感器只有10m左右,设备数不超过3台,加装匹配电阻反而会拉低设备接入时的电平,导致数据无法正常接收。
后续将STM32开发板的485接口AB线间的跨接电阻去掉后,传感器可以正常传输数据。
故障排除后,设备正常运行,初始化界面显示BC20 is initializing...,字体不断变色,等待BC20的初始化配置,如图9所示。
初始化结束后,系统进入主界面,实时显示传感器的收发数据信息,并将数据结果以及各个参数报警信息显示在LCD屏上,供工作人员现场查看,如图10所示。
温度预设值为20~25℃,温度低于20℃会自动开启加热器,使水升温,温度达到25℃后,自动关闭加热器。溶解氧预设值为10.5mg·L-1,当测得溶氧值低于该值时,系统自动启动打氧泵,使水中溶解氧升高,到达10.5mg·L-1后自动关闭打氧泵。如图11所示为设备正常运行状态。
图7 打氧泵 图8 加热器
图9 系统初4始化
图10 数据显示界面
图11 控制设备启动
阿里云物联网平台是一个为开发人员推出的设备管理平台,该平台可以实现传感器设备、嵌入式设备等终端与云端的双向数据通信[7]。设备接入物联网平台流程如图12所示。
图12 阿里云接入流程
终端设备与云端通过MQTT协议进行通信,在MQTT协议下,平台作为消息代理,终端设备作为消息发布者,而电脑或者移动端作为消息订阅者。创建设备最后得到了设备认证三元组信息,通过三元组信息,建立设备与物联网平台的连接,将数据通过BC20上发给阿里云物联网平台,实时监控数据,监控界面如图13~15所示。
图13 温度曲线
图14 溶氧量曲线
图15 pH曲线
为了保证系统开发的完整性,联动控制系统数据同时上传到自建服务器。NB-IoT支持4种常用协议TCP、MQTT、COAP、UDP,采用MQTT协议或者COAP协议可以对接阿里云平台、电信云平台等平台。而采用TCP协议或者UDP协议与自建服务器进行数据通信。
UDP(User Datagram Protocol)用户数据包协议,简称UDP。IP通过IP地址信息把数据包发送给指定的电脑,然后UDP协议通过端口号就能把数据包发送给指定的程序。
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。相比于UDP而言,TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议[8]。
对比了2种协议优缺点,在传感器数据收发过程中,需要保证数据的完整性和可靠性,因此考虑使用TCP协议建立连接。
测试阶段,由于NB-Io T模块与自建服务器进行通信时,只能通过公网IP地址和端口号与自建服务器建立连接,而PC端是通过路由网关连接到Internet网络的,此时给电脑分配的IP地址称为内网IP,NB-Io T模块不能通过内网IP来与自建服务器进行连接的。想要进行通信必须将自建服务器的IP地址和端口号映射到公网上,将内网中的PC端IP地址映射到公网中的过程被称为内网穿透,又称NAT穿透[9]。PC端上安装“花生壳”软件,可以实现把内网IP地址和端口号映射到云端。
图16为花生壳软件进行内网穿透的结果。
图16 利用花生壳进行内网穿透
本机地址为127.0.0.1,端口号为8081,映射公网IP为103.46.128.49,端口号为56430,如图17所示。
通过实验测试,各个设备间的联动控制与报警实现功能运行正常,UPS不间断供电运行正常,数据上传下发功能正常,云平台数据收发正常,使得工作人员可以远程监控,节约人力成本,较好地实现了对鱼菜共生系统的智能化管理,同时,在此系统基础上可以开发更多的参数监测以及联动控制,而不局限于水质参数的监测。对将来的集成化、规模化、智能化发展具有十分重要的意义。
图17 建立TCP连接
3 结论
本文设计的智能监测与联动控制系统从鱼菜共生系统的水质参数入手,实时获取到水质参数信息,运行稳定可靠。从以下几个方面实现了鱼菜共生系统的智能化管理,对于规模化养殖有十分重要的意义。
3.1 关键参数监测模块化设计
针对鱼菜共生系统需要监测的关键参数,利用stm32单片机,利用RS485总线传输,进行了模块化设计,即分成水质参数监测、云平台数据交互、语音报警、LCD彩屏显示、设备控制等模块,在每一个模块中,同时方便增删单个传感器,方便以后的二次开发。
3.2 数据参数的远程监控
利用STM32和NB-IoT,对鱼菜共生系统中所需的参数进行监测,实现了远程监测。
3.3 多参数融合下设施设备的智能联动控制
通过对关键参数的监测,对影响鱼菜共生系统涉及的设施设备运行的参数进行了融合,基于STM32和物联网技术,实现了多参数融合下设施设备的智能联动控制。
3.4 数据监测与联动控制一体化
市面上的DTU设备只考虑到数据监测,没有实现数据的分析与联动控制。本系统针对鱼菜共生系统中比较重要的几个参数入手,不但实现数据检测,同时实现联动控制。
本文中涉及到的是养殖水体的pH值、溶解氧、温度等参数,在这个模式的基础上可以进一步开发,将蔬菜生长环境参数,如温湿度、光照度、CO2浓度、气压等重要参数考虑进去,从而实现鱼菜共生的多参数智能化监测与联动控制。