基于深度学习的生活垃圾智能分类装置(K210开发板实现)

2024-02-20 15:20

本文主要是介绍基于深度学习的生活垃圾智能分类装置(K210开发板实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.核心功能与流程图

2.硬件框图

3.设计原理

4.开发过程

5.项目原型

6.主要元器件介绍

7.资料、源码分享链接:


1.核心功能与流程图

针对上述提出的目标,该项目核心功能如下:

功能1:对垃圾进行基于深度学习的精准分类

功能2:通过旋转垃圾桶自动分类垃圾

该装置的具体工作流程如下:

2.硬件框图

  硬件框图

该装置由以下2部分组成:

识别模块:K210

分类模块:Arduino UNO、舵机

3.设计原理

基于深度学习和AI视觉的生活垃圾智能分类装置利用深度学习算法和AI视觉技术,能够对生活垃圾进行智能分类。

识别模块设计原理:装置需要大量的标记好的生活垃圾图片数据集,每种生活垃圾都有对应的标签,用于训练深度学习模型。数据集应该包含不同角度、光照条件和遮挡情况下的垃圾图片,以确保模型的泛化能力。通常使用卷积神经网络作为深度学习模型。可以选择已经预训练好的模型,如ResNet、Inception,或者自行设计和训练模型。使用标记好的数据集对深度学习模型进行训练。通过将图片输入模型,让其逐渐学习提取垃圾的特征,然后将这些特征映射到对应的垃圾分类标签。训练过程中需要合理设置学习率、损失函数和优化算法,以提高模型的准确率和收敛速度。当装置接收到垃圾图片时,深度学习模型会对其进行预测和分类。模型会输出一个概率分布,表示图片属于每一类垃圾的概率。根据概率分布,装置会选择概率最高的类别作为该垃圾的分类。[3]

分类模块设计原理:分类装置通过舵机旋转装置,将相对应的垃圾桶旋转至投放者面前。这里需要根据模型的输出结果,控制舵机的旋转,实现智能分类。

4.开发过程

结合实际应用需求设计的基于物联网技术的智能垃圾回收系统,其核心控件为Arduino,结合K210模块的神经网络模型实现垃圾智能分类,通过驱动舵机将相对应的垃圾桶旋转至投放者面前;通过实际组装和软硬件联合测试,验证了装置整体功能的合理性[2]。

制作过程如下:

硬件装置部分:

第一步:根据我们想要的外形通过Auto CAD画出该装置的外壳组装图,设计完成后再用激光切割进行切割,然后进行组装。

  外壳CAD图纸

第二步:用SolidWorks设计出垃圾桶,并进行3D打印

  垃圾桶3D打印模型

Arduino部分:

第一步:在Arduino上编写舵机控制部分,将垃圾种类分为四种,可回收垃圾,干垃圾,湿垃圾,有害垃圾,并将其对应四种信号A、B、C、D,当Arduino收到来自K210的四种信号时,控制舵机旋转至四个方向,以下为代码部分。

  舵机控制代码

第二步:添加Arduino信号引脚,我们设置9号引脚为舵机信号引脚,并且需要初始化串口,此外,我们将波特率规定为9600,以下为代码部分。

  添加舵机信号引脚代码

因此,Arduino部分整体代码如下:

#include <Servo.h>Servo servo;void setup() {// 初始化串口,波特率为9600Serial.begin(9600);// 附加舵机信号引脚servo.attach(9);
}void loop() {if (Serial.available() > 0) {char signal = Serial.read();// 根据收到的信号控制舵机转向不同方向if (signal == 'A') {// 控制舵机转向方向Aservo.write(0);} else if (signal == 'B') {// 控制舵机转向方向Bservo.write(60);} else if (signal == 'C') {// 控制舵机转向方向Cservo.write(120);} else if (signal == 'D') {// 控制舵机转向方向Dservo.write(180);}}
}

  Arduino部分整体代码

K210部分:(注意!!若Maixhub模型训练用不了,可选择嘉楠科技的模型训练,操作方法与Maixhub大体一致)

第一步:浏览器搜索MaixHub并点击。

  浏览器搜索MaixHub

第二步:点击Maixhub:AI平台和共享社区。

  MaixHub主页

第三步:点击模型训练中的开始训练。

  MaixHub模型训练平台页面

第四步:点击新建训练

  MaixHub模型训练页面

第五步:填写信息

  填写信息页面

第六步:点击去准备数据集

  准备数据集页面

第七步:先点击创建数据集,再完成信息填写,后点击确定

  新建数据集页面

第八步:点击上传图片后,再点击添加标签

 上传图片页面

第九步:先选中标签,然后点击选中图片,选中该垃圾的训练图片然后点开始上传,同样方法上传完四个标签

  添加标签页面

第十步:勾选随机处理的三个选项,部署平台选中合适的平台,点击最下方的创建训练任务

  开始训练页面

第十一步:等待训练完成后点击部署模型

  训练完成页面

第十二步:点击下载模型

  下载模型页面

第十三步:修改main.py的部分代码

将发送信息部分代码添加进mian.py,然后保存

烧录固件部分:

第一步:打开以下网址,下载最新版固件

下载站 - Sipeed

  固件页面

第二步,下载kflash_gui,并打开,将K210用type-c与电脑连接,选择刚刚下好的固件,地址为0x00000,端口选择与K210想连接的端口,波特率选择115200

  烧录软件界面

如果出现以下报错:

按照如下进行排查:

1.检查PC是否有权限打开端口,对于 win10,需要以管理员身份运行 kflash_gui 。

2.检查端口是否选择正确(如果出现两个设备端口,通常选择端口号小的那一个)。

3.检查端口是否被其他应用占用(如Maixpy IDEputty等),应当关闭其他程序占用。

将如下图的压缩包内文件解压放到K210里的sd卡当中。

  程序界面

运行程序,可通过K210上的屏幕,看到所识别的垃圾种类,通过输出可以看到识别率。

组装部分:

按照下图进行组装:

  装置组装图

接线部分:

舵机的黑线接Arduino的GND接口,红线接5V接口,白线接9号接口,Arduino的0号引脚接K210的10号引脚,Arduino的1号引脚接K210的11号引脚,Arduino的另一个GND引脚接K210的GND引脚,Arduino的3.3V引脚接K210的3.3V引脚。

5.项目原型

6.主要元器件介绍

  1. Arduino UNO

  Arduino UNO

  Arduino UNO的处理核心是ATMEGA328P,有14个数字输入/输出引脚,其中有6个可用作PWM输出,6个模拟输入,16MHz晶振时钟,USB连接,电源插孔,ICSP接头盒复位按钮。通过USB数据线连接电脑就能供电、程序下载和数据通信。

2.K210开发板

 K210开发板

K210是一款由中国公司思必驰(Sipeed)开发的人工智能处理器。它是一款低功耗、高性能的处理器,专门设计用于边缘计算和物联网设备。

K210由于其低功耗、高性能和适用于AI推理的能力,被广泛应用于各种智能硬件设备,例如智能摄像头、智能家居设备、机器人、智能监控系统等。作为边缘计算的代表之一,K210的发展在推动物联网和人工智能技术在嵌入式系统中的应用方面发挥着积极的作用。

3.舵机

  舵机

DSServo达盛舵机DS3218MG是一种数字舵机,是达盛舵机(DSServo)系列产品中的一员。舵机是一种电动执行元件,通常用于模型、机器人和其他自动控制系统中,用于控制角度位置的精准转动。

7.资料、源码分享链接:

链接:https://pan.baidu.com/s/1z6P3owHLP78L1pwykBbHJQ 
提取码:bmfy 
--来自百度网盘超级会员V2的分享

这篇关于基于深度学习的生活垃圾智能分类装置(K210开发板实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/728650

相关文章

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u