2026 M-Design设计竞赛-基于k210的智能水域垃圾收集系统
该项目使用了K210 视觉识别模块,ESP8266开发板,L298N驱动板+两个12V可变速电机,MPU6050陀螺仪等,实现了智能水域垃圾收集系统的设计,它的主要功能为:水域垃圾的自动化识别、定位、拦截收集及上位机数据可视化。
标签
嵌入式
K210
2026 M-Design设计竞赛
水域垃圾收集
yuanjx
更新2026-06-09
桂林电子科技大学
35

本项目针对任务三工业控制方向完成。


一、项目介绍与创意介绍

项目背景:针对城市景观水域、农村小溪等小型水域漂浮垃圾清理难、人工打捞效率低/风险高、大型设备成本高的问题,设计一款低成本、智能化的自主水面垃圾收集系统。

核心创意

  • 边缘AI赋能:采用“ESP8266+K210”异构架构,K210负责本地实时视觉识别(无需云端,低延迟),ESP8266负责控制与通信,兼顾性能与成本。
  • 被动式收集结构:双体船+导流进水口+尾部滤网设计,利用船体前进的相对水流自动吸入垃圾,无额外机械抓取机构,低功耗、零故障。
  • 轻量化路径规划:基于单目视觉测距+贪心算法,在ESP8266有限算力下实现多目标快速决策,路径长度接近全局最优。

二、简短硬件介绍

硬件模块

型号/规格

功能说明

主控芯片

ESP8266-12F

核心控制:传感器数据融合、电机PID控制、Wi-Fi通信(AP模式,手机APP交互)。

视觉处理

K210边缘计算模块

运行YOLOv2模型,实时检测塑料瓶、树枝、树叶、塑料袋(20FPS,准确率≥80%)。

摄像头

OV5640

采集水面图像,分辨率320×240,适配K210接口。

运动控制

L298N电机驱动+12V直流减速电机

驱动双体船推进,PWM调速,支持差速转向。

姿态反馈

MPU6050六轴陀螺仪

检测船体偏航角,结合PID算法校正航向,抵抗水流干扰。

船体结构

5mm PVC发泡板(双体船)

浮力≥4kg(含1kg垃圾载荷),前端导流口+尾部可拆卸尼龙滤网(网孔5mm)。

电源

3串18650锂电池(11.1V 2200mAh)

续航≥1小时,支持ESP8266、K210、电机供电。

三、方案框图与设计思路

方案框图

image.png



设计思路

  1. 需求导向:聚焦“低成本、轻量化、自主作业”,放弃高成本激光雷达/机械臂,采用单目视觉+被动收集结构。
  2. 分层架构:感知层(K210视觉)、决策层(ESP8266逻辑)、执行层(电机+船体)、交互层(APP),各层独立优化。
  3. 算法轻量化:YOLOv2模型剪枝+8位量化(模型缩小75%),贪心算法替代A*(计算量降低90%),适配边缘设备算力。


完整硬件连接图如下:

2824fa63530b4164b695698479b6c79.jpg

四、软件流程图与关键代码

软件主流程(下位机)

image.png

垃圾识别原理:

为了使路径规划更准确,首先要解决的是我所在位置以及垃圾所在位置。因为考虑到成本以及功耗问题,在此项目中并未使用昂贵的激光雷达或者双目立体视觉系统来获取环境信息,而是通过K210 视觉模块中的摄像头来进行测距。主要使用单目定位原理,用到以下式子:

image.png

从物理意义上讲,这个式子很形象地描述了人的视觉成像的过程,如果垃圾与船的距离越大,在照片中就越小,它的Y 轴坐标就越往上的方向靠近(即 Y 值越小),这时(Ymax-Y)的差值就越大,从而得到的L 也就越大;反之,如果垃圾离船越近,在照片中的大小就越大,Y 轴坐标就越往下靠近(即Y 值越大),(YmaxY)差值就越接近于零,因此得到L 也接近于L0,而这个方程就把一个二维平面的坐标转换成了一维的实际距离。同时采用贪心算法针对多垃圾情况。

image.png

定位原理示意图


关键代码片段(ESP8266 Arduino)

  1. 单目测距公式
float calculateDistance(int y_pixel) {  
float K = 1.88; // 标定的比例因子(实验室拟合)
int Y_max = 240; // 图像竖直分辨率
float L0 = 20.0; // 最近距离(cm)
return K * (Y_max - y_pixel) + L0; // 距离L(cm)
}
  1. 贪心路径选择(多目标最近邻)
int findNearestTarget(float distances[], int num_targets) {  
int nearest_idx = 0;
float min_dist = distances[0];
for (int i = 1; i < num_targets; i++) {
if (distances[i] < min_dist) {
min_dist = distances[i];
nearest_idx = i;
}
}
return nearest_idx; // 返回最近目标索引
}


对于K210的模型训练,在网上爬虫收集300余张水上垃圾图片,并自己拍照200余张,共同标注成训练集进行训练,模型准确率高于87%

image.png

模型训练部分成功图集


五、功能展示图及说明

测试在宿舍静态水池和动态湖面进行,均取得不错效果。

image.pngimage.png

宿舍静态水池测试



校园湖泊中,连续收集1个塑料瓶、2根树枝、一个塑料袋,三片树叶,续航72分钟左右

image.png

动态湖面测试


六、设计中遇到的难题与解决方法

难题

解决方法

K210模型部署内存不足

对YOLOv2剪枝(压缩主干网络至20层)+8位量化(FP32→INT8),模型大小从20MB→5MB,推理速度提升至22FPS。

船体受水流干扰偏航

加入MPU6050姿态反馈,用互补滤波融合加速度计/陀螺仪数据,增量式PID(Kp=15.2,Ki=0.8,Kd=4.5)校正航向,直线行驶误差≤5°。

单目测距误差大

实验室标定比例因子K(用标准矿泉水瓶在不同距离拟合),加入近端基准距离L0(20cm),实测距离误差≤8cm。

电池低压时电机动力不足

软件加入电压监测(ADC读取电池电压),电压<10.5V时自动提升PWM占空比上限,补偿扭矩损失。

七、竞赛心得体会与建议

心得体会

  • 工程落地比理论更重要:初期追求“高大上”算法(如A*),实际因ESP8266算力不足被迫改用贪心算法,反而验证了“合适的技术才是好技术”。
  • 跨学科融合是关键:机械(双体船流体设计)、硬件(电路稳定性)、软件(视觉+控制)需协同优化,例如船体过重会导致电机堵转,需反复调整结构重量。
  • 测试驱动开发:静态水池调试→动态湖面试错,每个模块单独测试后再集成,避免“一次性联调翻车”。

建议

  • 赛前明确硬件限制:提前评估主控算力、电池容量,避免过度设计(如本项目中机械臂方案因功耗/成本被否决)。
  • 重视数据标注质量:视觉识别准确率依赖数据集多样性(如水面反光、遮挡样本),建议实地采集真实场景数据。
  • 预留扩展接口:设计时保留GPS、太阳能板接口,方便后续升级(如本项目的流动水域抗扰改进)。
附件下载
BoatController9.aia
上位机项目文件
BoatController9.apk
上位机apk
14.ino
ESP8266代码
005
K210代码
det.kmodel
k210模型文件
团队介绍
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号