本文作者:立创开源硬件平台 OSHWHub 用户@
u8xx
,禁止商用,未经许可禁止转载,点击查看原文章
1、项目说明
本团队基于NB-IOT设计了无人水质监测小船。
旨在解决水质监测作业环境恶劣、重复性强、采样时间长的作业特点和任务需求。
2、项目功能
在STM32F4 系列的MPU芯片上搭载FreeRTOS,具有——水质监测、自主巡航、双重运动遥控、数据云传输、微信小程序等功能。
作者视角:
1、
以无人小船为监测平台,能够通过GPS和北斗双模模块的定位,通过电子罗盘和GPS配合PID算法和贪心算法实现自主巡航。
2、能够监测多种水质气象信息,包括:水温,pH值,浊度,TDS,气压,海拔,环境湿度温度,光照强度等。
3、
能够通过NB-IOT模块实现数据的远程传输。
4、
通过距离传输的433M模组进行远程控制,无限制距离控制采用微信小程序,二者可随意切换。
通过mqtt服务器与微信小程序通信,实时显示船体位置和运动轨迹以及下达船体运动命令,完成地图寻路。
5、
采用水泵监测水质,可装上清洁网通过规划湖面地图点位进行多点巡航。
6、
小程序上带有电量显示,船体当前状态提示,低电量报警值等功能。
3、设计图
小船的硬件系统主要分为4个部分:
1、
船体框架和动力螺旋桨电机。
2、
主电路和外围传感器器件等组成的电路驱动系统。
3、
4G调制解调器和UVC摄像头组成的图传系统。
4、
遥控器。
这是小船的电路设计图:
原理图(点击进入嘉立创EDA编辑器打开)
PCB图(点击进入嘉立创EDA编辑器打开)
无人船设计历程
值得注意的是:
为了保证船体行驶稳定,我们将图传模块和主电路分开。
船体的控制信息和数据通过NB-IOT模块传输给云服务器,而图像信息通过4G调制解调器直接传输给上位机,网络传输部分使用了两条链路同时工作,从而避免图传线路异常时,船体失联。
虽然会增加整体系统的功耗,但我们认为这是必要的取舍。
4、规格参数
尺寸:60x20cm
重量:1.3KG
巡航速度:1m/s-3m/s
最大航行时间:≥ 30分钟
搭载传感器类型:pH,TDS,水温,光照,海拔,环境湿度,环境温度
通信方式:2.4GHz, NB-IOT, 4GLTE
电池容量:5400mAh
工作温度范围:0~+70℃
5、船体组装与改造
01、
船体组装
将购买后的散件组装完成即可。
螺旋桨的安装图:
02、
船体钻孔
为了让船体具备水质采集与检测能力,必须在现有的船体框架上进行钻孔并安放传感器和采样装置。
上图可以看出,我们在船的盖板上安装了一个亚克力平台,平台上放置了一个密封的采样盒,并将传感器放入采样盒进行水质采样。
当然,你也可以直接将传感器外置进行采样,不过必须做好相应的放水措施。
注意:pH传感器比较脆弱,浸泡时间过长可能导致测量数据不准或损坏。
03、
添置浮力棒
船体内部放有各种器件,使得船体质量变大,在无人船航行的过程中可能会因为速度过快引起沉船风险。
需要在船体两侧加装浮力棒增加船体浮力。
04、
电路组装
按照项目的电路原理图进行焊接。
将电路板放入船仓内并连接上电源和各种线缆,船体上方的盖子一定要盖好再下水。
电子罗盘建议将它的接线出来,安装到船体尾部中间。
传感器需要放置在抽水系统盒子里面,打孔后采用防水胶704将其粘好,不会漏水即可。
抽水系统由两个水泵组成的:
一个是抽水进盒子的水泵、
一个是盒子里排水的水泵。
盒子里面不能完全封闭,所以在盒子上方开了两个孔连接管道用于空气流通,防止难以抽水。
抽水泵电机方向的正负极需要注意一下不能接反,否则也无法抽水进来。
抽取水面上的那个水泵的水管需要做一下处理,以防湖水的渣质抽到水泵里卡住水泵,无法工作。
如果堵住了,需要拆卸下面的螺丝,将头拿去用水冲洗薄膜。
电源的开关在船体尾部。
船体上方的盖子一定要盖好后再下水。
小心不要让水溅到主控板上,或者电路线上,建议是准备好纸张擦一下船壳上方的水。
04、
图传模块安装
相较于传统的图传模块,这个4G图传可以在任何4G信号覆盖到的地方工作。
真正摆脱了对于距离的限制。
项目中使用的4G调制解调器,使用了UFI设备改造而成。
这类设备通常是用来作为便携上网设备使用,其内部运行的是安卓系统。我们将设备改成常规的Linux系统,再搭载通用的摄像头即可实现图像获取功能。
改装方式如下:
①刷入armbian系统。
②连接UVC摄像头,这里有两种方法:
使用USBhub1拖4电路拓展主板的USB口。将设备插入usb口并从核心板上的摄像头接口拉电源线接上,并把UVC摄像头插上即可。
直接使用USB母对母转接头接入UVC摄像头。
这样虽然不方便后期的功能拓展,但无需焊接转接板,只要焊两根电源线。
06、微信小程序上机位说明
打开微信小程序列表搜索:“IOT太阳能水质船”,即可获取无人水质检测船的微信小程序上位机。
01、遥控器模式
使用2.4G遥控器控制船体。
在小程序上点击手动监测控制,直接驱动抽水泵将水槽灌满,进行水质监测,将传感器数据上传小程序。
02自主航行模式
用该模式采样往地图上设置坐标点,控制船体自主航行到坐标点自动进行水质检测,完成检测完后无需人为控制,自主返回出发点。
自主航行步骤:
①点击航行矫正按钮。注意:罗盘矫正成功,小程序上会提示Compass_Successful。
如果是Compass_error请重新矫正,直到看到Compass_Successful,不然无法进行下一步。
②点击设置路径点按钮,在地图上设置坐标点。
③点击开始任务,船体开始自主航行。
④状态提示。
07、MQTT服务器搭建
要使船体具备云功能,就需要搭建一个专门为船体提供MQTT服务的平台,这个平台必须具备公网IP环境。
可以通过以下两种方式获取MQTT服务器。
①使用EMQX Cloud的试用额度(不推荐):每月1百万分钟连接数和1GB流量的试用额度。
②搭建EMQX开源版私人MQTT服务(推荐):自己搭建MQTT服务器的好处是——无限制的流量和设备连接数。
在此之前你需要一台运行Linux操作系统的公网VPS。
08、图传软件安装
01、
安装motiion
首先需要在图传里面安装motion监控软件,用来驱动UVC摄像头。
①使用ssh进入图传的shell终端。
②在终端输入命令:apt install motion。
③编辑配置文件。
02、
安装zerotier软件
因为图传和上位机使用的网络环境并非公网,所以无法进行点对点访问,只能通过P2P远程组网的方式,将微信小程序上位机和图传,进行远程组件局域网来进行相互之间的访问。
①使用ssh进入图传的shell终端
②在终端中输入命令:curl -s | sudo bash
这个命令会自动安装zerotier所需要的组件和程序本体。
09、
成本公布
项目成本:921.52元。
更多详情及附件,可从原工程查看。
本文作者:立创开源硬件平台 OSHWHub 用户@u8xx,禁止商用,未经许可禁止转载