高翔 熊伟杰 徐韬颖 余丰 吴垒
摘 要:项目所设计研制的水质检测无人船是一款基于IoT技术,以各类中小型湖泊或河流为场景,将远程控制、自动路径巡航、实时监测水质和预警功能结合为一体的水质检测无人船系统。该无人船调用百度地图中的API,让用户可以远程在网页端的地图上绘制路径、发送指令,使无人船根据指定绘制路径自动巡航,同时在微信小程序上实时获取传感器数据。该项目设计集成自动坐标巡航、水质检测,数据交互传输和微信小程序开发。通过测试,已实现在小型湖泊的现实场景中无人船按指定轨迹巡航,实时在小程序中检测水质数据的系统功能。
关键词:物联网;绘制路径巡航;微信小程序;数据传输;低成本
中图分类号:U674 文献标识码:A 文章编号:1674-1064(2021)05-041-04
DOI:10.12310/j.issn.1674-1064.2021.05.020
湖泊作为人类的一种宝贵的自然资源,在我国经济社会可持续发展中起着重要作用。然而,由于经济的快速发展,工业化、城镇化的快速推进,人类对湖泊资源的掠夺性开采和开发已经对湖泊造成了严重破坏,导致湖泊现状十分严峻,如湖面萎缩、水质恶化、生态功能退化、资源急剧减少等[1]。对此,建立详细可靠的水质检测系统并及时做出应对措施,就显得极为重要。
然而,目前市面上的水质检测无人船系统,大多具有搭建和维护成本高昂,控制系统设计较为复杂,巡航功能较为单一等问题,对于渔业、林业等领域的个体用户不是很友好。所以,针对现有问题,文章结合国内外移动在线水质监测系统的研究现状,设计了一个集远程通信、微信小程序平台监控、坐标定位、自定义绘制路径自主巡航等技术于一体,基于物联网的可远程操控的水质检测无人船系统。
1 水质监测无人船系统的整体设计思路
整体系统大致分为两大部分,硬件部分设计和软件部分设计。如果按照功能来分类,可分为数据传输部分和自定义路径巡航和控制部分。数据部分涉及到船体的姿态及位置数据的获取和水质检测传感器数据的获取,以及姿态位置数据的处理和传感器数据的传输问题。自定义绘制坐标路径巡航和控制系统,由网页端和树莓派中笔者搭建的服务器和电机驱动文件实现。水质检测无人船系统的基本框架如图1所示。
2 无人船硬件设计
2.1 无人机硬件结构组成
无人船主要由密封防水船壳、电机、传感器、控制主板、电源等部分构成,以下是一些部件的具体信息和功能介绍。
主控芯片:树莓派4B。树莓派负责承载驱动电机运转的脚本文件,用bottle库建立的电机控制服务端,应用在坐标巡航的Nginx网页服务器,以及各个水质传感器数据和姿态位置传感器的数据储存文件。目前,在互联网企业实际生产环境中,Nginx作为一款开源的高效解决高并发、高負载问题的Web反向代理服务器而被广泛应用,是实现集群负载均衡技术的有效方式[2]。
Arduino:Arduino结合传感器实现数据的精准提取,利用Arduino作为数据中转站,再利用Arduino和树莓派的串口通信进行数据交互,使用户能更加方便地修改传感器和代码,只需要在Arduino替换上传商家的新传感器数据提取和串口传输代码,再换上新的传感器便可以进行新的传感器数据的提取和显示。
姿态传感器:GY955是一款高稳定性的九轴导航AHRS模块,其中电子罗盘自带倾角补偿算法,融合了卡尔曼滤波。通过改写代码将纯文本的电子罗盘数据提取并发送到串口。
GPS模块:通过GPS模块和天线收集GPS数据,通过Arduino与树莓派串口通信并将位置数据作为数组形式储存在树莓派上面。
水质检测传感器:PH传感器,浊度传感器,溶解氧传感器等。
电源:采用可充电的12V和5V的锂电池供电,为主板、电机和电机驱动器供电。
2.2 无人船动力系统设计
无人船的动力推进装置由两个可正反转的无刷直流电机组成,两个电机位于船体尾部两侧,配合电机驱动器,通过树莓派主板GPIO引脚直接进行PWM控制。利用双电机差速运转改变和控制船的方向,当船直行时两电机同速运转。
2.3 硬件架构
硬件架构如图2、图3所示。
3 无人船软件设计
3.1 巡航路径绘制网页的设计
百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助用户在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特性的地图开发[3]。
为增强用户使用体验,该设计决定摒弃直接输入GPS坐标的方式,采用用户手动绘制路径的方式。主要通过调用百度地图JavaScript API v1.0中的Polyline类和LocalResultPoi类配合JavaScript,使用户观察到地区实景以便路径的绘制,满足本项目的功能需求。
网页后端部分,通过网页前端调用百度API获取的路径坐标,利用编写的php后端文件将自动获取的坐标数据作为JSON格式传到树莓派本地文件中并储存起来,此数据方便之后巡航算法文件和电机控制文件的调用。巡航路径绘制网页设计整体结构如图4所示。
3.2 基于物联网平台和微信小程序的数据监测系统设计
3.2.1 水质检测传感器数据传输
水质传感器数据的传输过程如图5所示。传感器数据实时由Arduino获取并进行数据类型转化处理和校准,并实时通过串口通信传输到树莓派主控板上,然后由树莓派主控板中的数据上传程序,将传感器数据上传到OneNET物联网平台进行数据的统计和储存,微信小程序调用物联网平台的API,实现实时水质检测传感器数据的获取和刷新。
3.2.2 微信小程序设计
微信小程序使用和开发的简便性备受用户和开发者青睐,该小程序项目一共实现了以下四大主要功能:
实时查询水质传感器收集的最新数据,并附加数值报警提醒功能。
根据不同的传感器数据分类,给予用户相应的水质改善方案。
用户通过账号登录来获取无人船手动控制页面和导航页面的域名。
提供水质检测科普知识。
3.3 基于GPS的自定义坐标路径巡航系统设计
无人船的自动沿路径巡航建立在手机移动终端的无线远程操控系统下,利用手机移动终端登录网页客户端,在百度地图上自定义绘制坐标路径,并通过无线网络发送路径坐标,无人船接收到坐标数据后开始执行巡航程序。
3.3.1 自定义坐标路径巡航系统工作流程
自定义坐标路径巡航系统流程如图6所示。在通过网页端调取设定路径点的经纬度坐标、GPS坐标数据、电子罗盘方向角数据后,需要利用路径点的经纬度坐标计算巡航路径相邻点之间的方向角及行驶距离。在程序设计中,当无人船主控系统从网页获取并发送船体当前的方向角、GPS坐标、目标路径初始点的坐标后,程序就会开始计算船体当前位置和初始点(巡航路径设定的第一个坐标位置)位置之间的方向角和距离,并运行电机控制的程序进行目标靠近。在靠近初始路径点的过程中,由于船在水面上具有惯性,所以需要实时计算当前位置与目标位置的距离与方向角,并根据计算数据调整电机运转。当程序检测到船到达目标位置(初始点)后,自动停止计算初始点的数据信息,并开始计算当前船体坐标与巡航路径中的第二个设定点之间的距离及方向角。程序周而复始直至检测到船体到达最后一个目标点,即完成巡航任务,程序恢复等待状态,等待下一次巡航命令。
3.3.2 坐标数据计算过程的重要理论依据
在以上过程中,运用到了利用GPS坐标计算方向角和距离的公式,可以近似将地球看作球体计算[4],如图7所示。
参数说明。地球上任意两点A和B的经纬度坐标分别为A(Aj,Aw)和B(Bj,Bw),A和B之间的方位角就是Lab的切线与地球纬线之间的夹角[5]。且A和B两点间球面距离为Lab,地球半径为R,O为地球球心,C为北极点。
角A即點A与B连线的方位角。
4 无人船系统测试
在系统搭建完成后进行功能测试,选取了学校一个人工湖作为测试水域,测试持续两周。
4.1 基于GPS的自定义绘制坐标路径巡航系统的测试
在网页客户端地图上找到学校的人工湖,依次用手点击希望巡航经过的坐标点,坐标点依次根据点击顺序连接成设定好的巡航路径。之后点击发送按钮,将开始巡航的指令和坐标数据发送至树莓派服务器并开始执行巡航程序。如图8、图9所示,分别为路径绘制网页页面和无人船测试实拍图片。
4.2 基于物联网平台和微信小程序的数据监测系统的测试
当无人船在按照绘制的路径巡航的时候,打开微信小程序当无人船按照绘制的路径巡航时,打开微信小程序,进入到无人船检测控制主页面,如图10所示,带年纪实时数据查询,查询浊度传感器的数据,点击重新获取网络数据,刷新最新的浊度传感器数据。此时数据为625,根据后台设定的阈值对比超标显示报警,如图11所示。之后,可以返回主页面到水质改善方案页面中寻找解决方案,如图12、图13所示。
5 结语
文章介绍了当前湖泊环境污染问题,并针对湖泊水质检测技术的现存问题提出了一种多模块的基于物联网技术的水质检测无人船系统,以实现水质监测、实时数据上传、自主巡航、远程控制等任务。通过对系统的测试,水质检测智能无人船可以按照用户绘制的路径进行定点自主巡航,实现水质检测及实时预警等功能。此外,无人船系统仍存在改进空间,由于GPS误差较大,可采用GPS差分技术提高精度,建立更加精确的无人船巡航系统。
参考文献
[1] 谭飞帆,王海云,肖伟华,等.浅议我国湖泊现状和存在的问题及其对策思考[J].水利科技与经济,2012,18(4):57-60.
[2] 吴陈.基于Nginx的服务器集群负载均衡策略的研究与改进[D].广州:华南理工大学,2020.
[3] 夏军.基于百度地图API的快速制图系统的设计与实现[J].测绘工程,2019,28(4):42-48.
[4] 刘力荣,李菡.GPS坐标与方向、距离相互转换的计算公式推导[J].南方农机,2018,49(14):106.
[5] 周建郑.GPS定位原理与技术[M].郑州:黄河水利出版社,2005.