一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于农林业病虫害和小气候气象信息远程监测的方法与流程

2021-09-15 00:35:00 来源:中国专利 TAG:病虫害 应用于 设计 农林 气象


1.本发明涉及农林病虫害及气象监测领域,目的是设计一套包括客户端、服务器、采集端的农林病虫害图像及气象信息远程自动监测方法。具体涉及系统集成设计,用于数据采集、自动控制系统、远程控制、数据交互、多点访问;网络通信及多线程处理设计,应用于服务器处理、转发信息与指令;客户端技术开发,应用于终端设备。


背景技术:

2.目前,我国为加强农林业信息化建设,促进农林业可持续发展,已经出台了相关政策,用于支持农林业信息化技术研究,信息化、自动化、智能化也成为了现代农林业的突出特点。物联网技术通网络连接各个硬件设备,汇集各类数据,并进行数据的分析处理工作,最后结果由终端展示或优化终端行为,其技术结构与流程特别适用于农林业信息化的发展。通过农林业物联网技术,可以轻松的、自动化的获取各类作物生长的环境数据,包括气象数据、病虫害图像数据、地理位置数据等,再结合互联网技术,将采集数据进行中央汇总,并可由网页、手机 app等进行访问查看,最后通过数字图像处理技术,对汇集的数据进行分析处理,实现对作物生长的智能化识别、预警与跟踪等。农林业物联网、互联网与数字图像处理技术的发展,将迅速推动农林业信息化的进程,加快我国向现代化农林业强国的转变,实现农林业生产力的大幅度提升,促进农林业经济的不断发展。
3.现有代表性技术如下:
4.一种基于mcu单片机的智能农业监测及控制系统(申请号:cn 211043983 u)
5.本发明公开一种基于mcu单片机的智能农业监测及控制系统,包括主控网关、传感器组件、摄像头组件、控制器组件、云服务器、移动客户端;主控网关,负责与云服务器、移动客户端数据对接,负责下发控制指令到控制器组件, 负责上传传感器组件的数据,负责摄像头组件的数据处理以及传输;传感器组件, 负责采集环境数据;摄像头组件,负责采集当前环境画面;控制器组件,负责设备控制功能,控制设备开关以及设备状态;云服务器,负责数据处理,负责与移动客户端对接数据;移动客户端,负责实时显示画面、环境参数,负责环境参数调节。本发明能够实时查看环境参数及实时查看监控画面,使得使用者能够更详细掌握作物生长情况以及病害情况。
6.但是本系统存在数据无法保存的缺陷,另外本系统采用的摄像头为固定位置、固定角度,对于实时处于成长的农作物,无法满足全角度的观测。
7.经调研发现,现有的农林病虫害图像及气象信息监测系统功能较为单一,数据的采集及推送以实时为主,覆盖即销毁,无法进行数据分析。大多数系统不具备图像采集能力,尤其是全角度,全生长周期的图像数据。


技术实现要素:

8.本发明应用于农林业病虫害防治预警领域,需要的数据来源主要由作物图像及作物所处的气象环境构成。对于作物图像,考虑到植物的生长,本发明需要满足能够拍摄不同
生长时期下的作物图像,包括叶面、根茎及叶面背部等;对于气象环境,本发明需要实现自动化的采集全要素数据。在使用上,本发明面向普通用户和农业专家,所以需要实现远程控制和查询,满足实地和异地观测需求。且采集到的数据需要做持久化保存,以供数据分析与研究。
9.综上,本发明解决的主要技术问题是采集端图像及气象信息的远程受控或自动化采集、存储与发送;服务器开发及数据库设计;多客户端的开发;以及三个子系统之间的数据通信,采集数据的自动化分析及预警等功能。
10.主要包括以下五个部分:
11.1、信息采集端功能设计
12.(1)气象数据采集:本系统选取了空气温湿度、气压、风向、风速、浅\中\ 深层土壤温湿度、日照时数、辐射量、降雨量等气象要素。于数据采集器汇总后,通过有线/无线串口发送至stm32控制板,stm32控制板将气象数据进行本地备份,随后通过有线\无线方式发送至局域网\广域网服务器。采集间隔由用户预先自定义,设备即可按照设置自动完成上述操作。
13.(2)图像数据采集:除了与上述气象数据采集同时进行的定时图像采集。 stm32控制板还可以实时接收并解析客户端指令,控制步进电机带动云台摄像头上下移动至合适位置,为用户提供实时全角度的视频预览功能。
14.本子系统的特点在于:能够按照预设参数进行全自动、全要素的图像及气象信息的采集、存储及发送功能;能够由客户端实时控制云台的移动,实现全角度的视频预览功能,其中云台移动范围为高度:0.1

2.1m、上下180
°
、左右360
°

15.2、系统服务端功能设计
16.(1)数据库设计:数据库是整个系统的基石,对于采集到的数据,气象数据直接保存至数据库,而图像数据则保存至指定文件夹,并将路径保存至数据库以方便查询。数据库中设计用户表、设备表、摄像头表、气象数据表、病虫害图片信息表,同时采用动态sql,根据摄像头和设备数量,动态调整检索数据的列数。
17.(2)socket服务:提供socket长连接服务,主要用于与信息采集端的通信以及用户客户端的预警消息推送,设置socket客户端缓存,当进行信息转发时,可以迅速获取转发目标的socket句柄,同时还可以将socket客户端进行区分,方便进行管理,防止恶意攻击,缓存机制还可以为数据库提供缓冲,当有信息采集设备连接时,每个设备仅需要查询一次数据库,然后写入缓存,之后的访问即可从缓存中获取,有效缓解数据库压力,显著提高程序运行效率。
18.(3)http服务:前后端分离模式中的后端服务,为所有客户端提供各类接口,包括用户信息获取、气象图片数据获取、权限数据获取、上传文件以及远程控制等,前后端分离的模式提高开发维护的效率。基于安全性考虑,采用ssl对http 传输进行加密,使用token机制进行客户端身份验证,使用md5进行用户密码的保存。当socket服务发来采集的数据时,自动进行图像数据的获取。
19.本子系统的特点在于:能够实现跨平台分布式部署,可以将http服务与 socket服务分别部署在不同的硬件设备上,减轻设备压力;能够实现局域网、广域网同时或独立部署,满足不同用户的需求;能够同时进行多客户端、多采集端的信息交互服务,依据不同数
据或指令进行转发、存储、查询等操作。
20.3、用户客户端功能设计
21.(1)用户登录:每次进入客户端后,需要进行登录,才能与服务器交互,使用系统的相关功能。
22.(2)权限管理:不同用户对数据的查看及参数的设置权限不同,这是为了保护远程控制的安全问题,一般用户仅具有查看数据的功能,管理者可以进行参数设置、硬件控制等功能。
23.(3)查询显示:用户可以按照时间段、数据种类及统计方式向服务器询问数据,并能够将数据以图表的方式直观展现。
24.(4)远程访问:用户可以在客户端上进行实时的视频查看和设备控制功能。
25.本子系统的特点在于:能够实时查看视频并控制硬件设备;能够根据不同权限提供不同的服务;能够对数据进行多样化处理,按照起止时间、显示间隔、数据种类进行气象数据的图表化显示。
26.4、数据通信功能设计
27.本功能的特点在于上述三个子系统之间的数据交互全部采用json数据格式进行封装,有利于数据的解析,提高数据通用性。
28.5、数据分析预警功能设计
29.本功能内嵌在上述第三点的socket服务中,能够根据预设阈值(这个阈值是指国家气象标准中对异常气象数据的规定),判断气象数据是否处于正常水平,当接收到超出阈值的异常数据时,就会及时向客户端推送预警信息。
附图说明
30.图1:系统结构图
31.图2:系统功能图
32.图3:信息采集端软件流程图
33.图4:数据库表结构图
34.图5:http服务端软件结构图
35.图6:控制器模块流程图
36.图7:业务模块部分流程图
37.图8:图像获取模块流程图
38.图9:socket服务功能设计
39.图10:基础socket模块流程图
40.图11:socket服务心跳检测流程图
41.图12:客户端认证流程图
42.图13:信息缓存模块读写流程图
43.图14:消息转发流程图
44.图15:客户端功能图
45.图16:客户端http请求流程图
具体实施方式
46.下面结合附图详细说明本实施例:
47.(1)本发明整体结构如图1所示,主要分为如图虚线所划分的三个子系统,包括客户端、服务器和采集端。其中客户端由android、ios、web三部分组成,服务器由数据库控制程序、http服务、socket服务及内嵌于其中的分析及预警程序组成,采集端由主控程序及传感器、电机、摄像头、路由器等硬件设备组成。
48.(2)本发明实现的全部功能如图2所示。
49.(3)本发明采集端控制系统流程如图3所示,下面对于该功能进行详细的步骤介绍:
50.步骤一:stm32控制板启动后,先初始化各个硬件设备,包括定时器、lcd 显示屏、外部中断、485控制器等。然后从sd卡读取采集及服务器配置,根据采集配置启动定时器3进行自动定时采集,启动lwip网络通信协议,根据服务器配置连接至云服务器。
51.步骤二:连接成功后,读取cpu的id发送至服务器,作为设备唯一标识符向服务器注册,然后启动定时器2,接着监听是否收到数据,若没有收到,则继续监听,同时判断连接是否断开,断开就重新连接;若收到数据,则先设置在线标志,方便进行心跳检测的判断,然后解析功能码,根据各个功能执行相关流程,最后返回各自功能的响应给外部。
52.功能码包括三类:心跳检测,控制板解析后回复心跳确认信息;参数更改,控制板解析后将新参数写入sd卡,并修改相应定时器阈值(这个定时器阈值指的是采集端多久获取一次传感器数据,一般在1分钟到10分钟,这是由用户在客户端定义的);电机控制,控制板解析后根据运动参数控制电机移动,具体操作见步骤三。
53.步骤三:电机的控制采用中断方式。电机参数包括是哪个电机、移动方向和距离,然后根据电机细分数将距离转换为脉冲数,接着根据pwm输出频率,计算定时器1需要定时的时长,最后启动pwm输出,同时启动定时器1,接着返回指令完成响应。此时电机的移动与主循环是异步执行的,主循环能够响应其它命令,定时器1中断用于判断时间是否到达,达到时即代表电机移动完成,此时应当关闭pwm输出,并关闭定时器1,根据需要发出电机移动完成的信号。同时,外部中断1则用于限制电机移动位置,当电机移动至最上方或最下方时,会命中限位器,触发外部中断1,此时只需要判断触发的io口,关闭对应电机即可。
54.(4)本发明设计了如图4所示的数据库表,能够满足多客户端,多采集端的使用需求。同时为了提高数据查询的效率,设计了动态sql联表查询,弥补了数据库因实现动态修改设备数和摄像头数导致联表查询出现大量重复数据的不足,使得本系统能够兼容各种信息采集设备,提高了系统的普适性,有利于广泛推广。
55.(5)http服务端软件结构如图5所示,分为基础支撑层、逻辑处理层和接口层,其中springboot框架提供了连接管理、事务管理、请求路由等,其它层则需要自行实现。根据功能设计,可以将所有功能抽象为四个模块,分别为数据持久模块dao,负责与数据库进行交互,对外提供操作接口;实体模块entity,主要用于定义与数据库对象对应的属性,使得可以直接匹配数据库查询结果;业务模块service,负责一些业务逻辑的实现,如增删改查数据、登录验证、获取网络摄像头数据等,对这些实现的封装,有利于业务逻辑的独立和重复利用;控制器模块controller,负责具体的接口执行流程,其函数映射到对应url,函数内部调用相关service实现。总体来讲,软件的流程为请求的url路由到对应controller模块的
方法,controller调用service模块中的方法,service调用 dao模块内的方法,而它们之间的参数传递是通过entity模块进行的。其中部分模块的具体步骤如下:
56.控制器模块:具体流程如图6所示,http请求到达后首先要进行的url 路由,接着,会从系统注册的处理列表中匹配外部请求的url路径和请求方法,若无匹配,就无法处理请求,直接返回错误信息,匹配时,即可获得列表中对应于本请求的执行链,执行链中包括了处理该请求的函数对象和拦截器对象列表;然后将会顺次执行拦截器对象列表中的拦截函数,其作用是对外部请求进行一些处理,以拦截部分请求,本设计中在此处进行token鉴权的工作,但是对于登录、注册等接口,其不需要身份认证,这里设计passtoken和userlogintoke两个接口,在拦截器中进行判断,凡是继承于前者的处理函数,不进行token鉴权,而继承于后者的处理函数,则要进行身份校验,由此实现http服务对客户端的身份认证;最终请求进入模块中对应的处理函数,可以从token中获取用户id 和操作权限,从而调用相关的service进行业务处理。例如对具有远程控制权限的用户,进行控制命令的转发,不具备该权限的用户,则返回提示信息。
57.业务模块:具体流程如图7所示,service模块中分为数据服务类、外部交互服务类、算法调用服务类和摄像头图像获取服务类。数据服务类是本系统实现的必要基础,其函数的一般流程如图7a)所示,因此进入函数后首先要进行权限判断,拒绝没有权限的非法操作;然后查看数据是否完整,对于增、改数据而言,数据必须完整才能修改数据库对应值,对于删、查而言,完整性指删除、查询条件的完整与否,对于不完整的数据,可补全的,如采集端采集到的数据中缺失虫害图像数据、数据缺失添加时间等,可以调用其它函数进行补全操作,从而继续流程,而对于无法补全的,则退出函数执行;接着判断数据是否需要加密,根据功能设计和数据备份需要,普通数据不进行加密,仅对用户密码进行md5 不可逆加密,当进行登录验证时,直接对比密码的md5进行校验;然后对于采集到的数据,将会调用相关算法进行处理;最后调用dao模块的相关函数进行实际数据库操作。外部交互服务类负责与服务端的socket服务进行交互,实现对socket服务内相关函数的调用,从而能够进行远程控制、采集设备信息缓存读写以及获取采集数据等。如图7b)所示,当软件启动时,就在单独的线程中连接服务端的socket服务,连接成功后,发送http标识,该标识是一个特定字符串,以方便和其它设备端区别,然后始终监听端口,实现心跳包的回应,并获取可供调用的函数列表,同时对于采集数据,在新线程中调用数据服务类中函数处理;当类内其它函数被调用时,首先检查是否已经建立连接,随后检查操作权限,对于满足权限的操作,从调用函数列表中获取要使用的函数名,加上参数和本线程号,发送至socket服务,接着循环检测结果中是否存在本线程的线程号,此时若异步的socket连接线程收到了执行结果,就会将线程号和结果以键值对的方式存入result,接着等待执行结果的线程将会继续执行,获取执行结果,并将结果从result中删除,对于共享变量result,在写入时加锁,整个转发流程便得以实现,为远程控制转发、采集端参数转发、缓存读取写入、预警信息下发等提供了基础。
58.图像获取模块:具体流程如图8所示,首先使用api初始化网络摄像头的 sdk环境;然后获取到当前设备的网络摄像头列表,并初始化结果哈希表result;接着开始遍历列表,对于每一个网络摄像头,都使用sdk相关函数进行登录,无法成功登录的,输出错误信息并进行下一轮循环,成功登录后,注册异常回调函数,用于错误信息的输出,同时设定码流参数,这里由于不需要预览,故设定为最高值,以拍摄更清晰的图片,然后根据摄像头名和时
间,生成唯一图片名称,用于图片文件的保存;最后调用sdk的抓图函数进行图像的抓取,若抓取失败,将图片文件名改为默认的none.jpg,表明暂无图片,无论是否抓图成功,都将摄像头名称和图片文件名放入result哈希表中,然后继续下一轮循环;当最终遍历完所有摄像头,将结果数据result返回。该业务流程用于自动采集虫害图像数据,当http服务获取到采集端发来的采集数据时,是缺失虫害图像数据的,根据图 7a)的流程,会进行数据补全操作,该操作中会调用本服务类进行虫害图像的获取,并最终将图片数据存入数据库中。
59.(6)socket服务功能如图9所示,功能的实现可以抽象为四个软件模块,分别为基础socket模块、通信协议模块、信息缓存模块、和业务逻辑模块。其中基础socket模块是实现其它模块的基础。接下来对四个模块进行具体介绍。
60.基础socket模块:流程如图10所示,首先主线程创建服务器对象,创建非阻塞socket实例,该实例为服务端socket,然后创建iocp线程池对象,为socket 绑定回调函数,并开始监听,接着初始化互斥锁,启动accept投递线程,此时主线程进入阻塞等待状态。服务端socket只进行accept监听,由于可能同时出现多个客户端连接,而每次accept只能接受一次连接请求,因此accept投递线程一直运行,维持maxpostaccept个投递。这里投递指的是启动异步io操作,在本系统中包括异步accept、异步send以及异步recv。当iocp监听到一个io 操作完成后,会调异步io回调函数来处理,在该函数中进行事件判断,并调用对应的onaccept、onrecv和onsend分别进行处理,这些函数都运行在iocp 内核线程池提供的线程中,如果处理时间过长,线程池中线程全部被占用,那么 iocp事件就无法得到及时处理,因此上述三个函数都只进行简单的处理,然后从外部线程池中启动线程,并传递ioevent中的client对象指针,以便进行相关业务处理。
61.通信协议模块:该模块包含数据帧格式、心跳包监测和客户端身份验证。
62.心跳包检测流程如图11所示,服务端设置一个间隔为30s的定时器,定时时间到达后,先从缓存中获取所有已连接的client实例列表,遍历该列表,检查其 online标志是否为true,若不是,关闭连接,调用onclose函数,onclose启动新线程进行关闭的处理工作;若是,则置online标志为false,投递send请求,以发送新的心跳包给当前客户端,由于所有耗时操作均异步执行,定时器回调函数将快速执行完毕,不影响下次检查。与此同时,接收数据的线程中,直接置 client实例中的online为true,因为只要接收到数据,就必定在线,然后判断是否是心跳包,如果是心跳包,则不进行任何处理,否则进行其它业务流程。
63.客户端认证流程如图12所示,当客户端连接本服务后,需要主动发送客户端类型和设备id信息;三种客户端中,信息采集设备发送cpuid作为设备id,用户客户端发送用户名作为设备id,http服务发送特定字符串作为设备id;对于信息采集设备,发送类型和设备id信息后,会从缓存中读取设备采集配置信息,并发回采集设备,若该采集设备没有绑定账号或没有配置采集信息,会读出

1值,即不进行采集;对于http服务的连接,则先匹配id,成功则发送本服务可调用的函数列表,否则就退出;对于用户客户端,则先查询预警信息队列中是否存在关于本账号的预警信息,有则下发预警信息,没有则退出。对于不先发送类型和设备id信息,而直接发送其它数据的,将被直接过滤,防止第三方伪装成客户端对本系统进行恶意操作,最后,在业务处理之前,还会验证该连接是否有进行本操作的权限,进一步提升系统安全性。
64.信息缓存模块:缓存模块的读取和写入流程如图13所示,读缓存时,先判断是否是
读取信息采集端对应的client中信息,若不是,直接读取对应哈希表或哈希集合即可,若是,则需要判断缓存中相关信息是否为空,为空则去检索数据库,并写回缓存,若数据库中也没有相关信息,则缓存中对应信息写为

1。写缓存时,要注意删除时的指针内存释放,同时对于修改摄像头信息的,要判断是否更改了从属设备,当从属设备更改时,要将camera指针从原有设备移除,并加入到新设备上。读操作可发生在业务流程的任意阶段,写操作一般发生在 socket客户端连接时以及用户客户端更改相关数据库内容时,例如socket客户端连接后,在未发送设备id前,对应的client实体将被写入缓存中的未识别设备集合中;用户客户端修改采集时间配置时,要修改缓存中的对应内容,以实时发送至信息采集端。
65.业务逻辑模块:向socket客户端转发消息的具体流程,如图14所示,当外部交互模块获取到转发消息的请求时,将在新线程中进行消息转发,首先判断消息转发的目标,若为用户客户端,则从缓存中获取对应的client,若获取不到,则说明用户客户端不在线,消息保存至预警信息队列,等待用户客户端上线后发送,并返回目标不在线的应答。若获取到了一个或多个client,则直接根据client 内的socket投递发送请求,并返回成功推送的应答;若为信息采集设备,则从缓存中获取对应的client,没有获取到则返回设备不在线应答。获取到client后,为保证采集设备操作的唯一性,要先根据client内的csforclient获取互斥锁,当无法获取到锁时,返回设备已被占用的应答。获取到锁之后,首先在client 内设置需要应答的标志,然后投递发送请求,异步等待应答,当设备应答后, onrecv线程中将重置该标志,同时应答信息也在client内的接收缓冲区中,消息转发线程得以进行工作,释放互斥锁并返回应答数据。
66.(7)客户端功能如图15所示,本发明实现了android、ios、web三种客户端,因为采用了前后端分离的开发设计思路,客户端基本功能一致,流程步骤基本一致,具体界面设计存在差异。具体http流程如图16所示。url参数为请求地址,para参数是一个哈希表对象,以键值对的方式存储了要提交的参数列表, handler参数则用于是在请求完成时,向其它线程发送通知,代码中首先创建了一个新的线程,然后对para参数进行了遍历,将其添加到请求体中,同时还对参数进行了检查,文件上传以uploadfile为标志,进行文件读取与上传。handler 的设置是由于在android中,主线程被禁止运行耗时较大的操作,而网络请求正是一个耗时的操作,因此需要在子线程中进行http请求,但是在android中,只有主线程能够修改app的视图界面,子线程操作会导致程序崩溃,此时就需要使用handler解决这个问题,handler是在主线程中注册的一个实例,并配置了相关回调函数,这样在子线程中,将网络响应转换为message对象,即可通过 handler发送信息,此时这些信息就会被放入主线程的消息队列中,进而调用对应的回调函数,以进行ui界面的更改操作。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜