基于STM32的智能垃圾分类识别系统设计(论文)_kaic

摘  要
智能垃圾分类技术逐渐受到了政府的重视和支持,越来越多的城市开始推行垃圾分类政策。因此设计一款能够对垃圾进行识别并分类的控制系统具有一定的现实意义。本设计采用STM32单片机作为整个系统的控制核心,利用K210开发板作为图像识别控制系统,两个核心采用UART串行通信方式连接。对于垃圾训练集采用K最近邻分类法对MAIX BIT官网提供的训练集进行训练,得到的样本作为库导入SD卡中。本设计具有人体检测模块、容量检测模块、垃圾仓/门控制模块以及语音播报模块,分别采用HC-SR501人体红外传感器、对射式红外传感器、SG90舵机以及WT588D作为各模块的主要工作元件。通过采用python语言在Maixpy IDE中对图像识别分类控制系统进行编译,并采用C语言对整个控制系统进行程序编译,实现了能够在有人时打开垃圾总门,并对放置的垃圾进行类型识别,若对应垃圾仓未满时,根据识别结果开启所对应的垃圾仓门。实现了对垃圾分类识别和控制的智能化、便捷化。
关键词:垃圾分类;单片机;K210开发板;图像识别;语音播报

Abstract
Intelligent garbage classification technology has gradually received the attention and support of the government, and more and more cities began to carry out the garbage classification policy. Therefore, it is of certain practical significance to design a control system that can identify and classify the garbage. This design adopts STM 32 SU as the control core of the whole system, uses K210 development board as the image recognition control system, and the two cores are connected by UART serial communication. For the garbage training set, the K-nearest neighbor classification method is used to train the training set provided by the MAIX BIT official website, and the obtained samples are imported into the SD card as libraries. This design has human body detection module, capacity detection module, garbage bin / door control module and voice broadcast module, using HC-SR 501 human infrared sensor, radiation infrared sensor, SG 90 steering machine and WT588D as the main working components of each module. By using python language in Maixpy IDE to compile the image recognition classification control system, and use C language for the whole control system, can open the garbage door when someone, and put the garbage type identification, if the corresponding trash is not full, according to the corresponding trash door identification results. The identification and control of garbage classification are intelligent and convenient.
Key words: garbage classification; SCM; K210 development board; image recognition; voice broadcast
 
目  录
摘  要
Abstract
1 绪论
1.1 研究背景
1.2 研究目的及意义
1.2.1 研究目的
1.2.2 研究意义
1.3 国内外研究现状
1.3.1 国外研究现状
1.3.2 国内研究现状
1.4研究内容及方法
1.4.1研究内容
1.4.2 研究方法
1.5 拟解决问题
2 系统构成及方案设计
2.2 硬件系统整体结构设计
2.3 主控模块选择
2.3.1 采用Arduino
2.3.2 采用单片机
2.4 识别模块选择
2.4.1 采用Open MV模块
2.4.2 采用K210模块
2.5 人体检测模块选择
2.6 容量检测模块选择
2.7 驱动模块选择
3 智能垃圾分类识别系统硬件电路设计
3.1 STM32F103C8T6简介
3.2 识别模块通讯方式选择
3.2.1 三种通信方式
3.2.2 UART串行通信
3.2.3 串行通信的实现
3.2.4 串行通信的仿真
3.3 人体检测模块
3.3.1 HC-SR501工作原理
3.3.2 人体检测模块电路设计
3.4 容量检测模块
3.4.1 红外对管工作原理
3.4.2 容量检测模块电路设计
3.5 垃圾仓/门驱动模块
3.5.1 SG90舵机工作原理
3.5.2 垃圾仓/门驱动电路设计
3.6 语音播报模块电路设计
3.6.1 WT588D工作原理
3.6.2 语音播报模块电路设计
4 智能垃圾分类识别设计
4.1 开发板简介
4.2 训练集简介
4.3 K最近邻分类法简介
4.4 训练流程设计
5 智能垃圾分类识别系统软件部分设计
5.1 控制系统主程序
5.2 识别控制系统主程序
5.3 人体检测子程序
5.4 仓门控制子程序
6 系统调试
6.1 软件调试
6.2 仿真调试
结论
参考文献
致谢
附录


1 绪论

1.1 研究背景
垃圾分类装置的设计源于对环境保护和可持续发展的迫切需求。随着城市化和人口增长,垃圾产生量不断增加,垃圾的处理和回收成为一项重要任务。传统的垃圾处理方法效率低下、资源浪费且对环境造成了严重的污染。为了解决这一问题,垃圾分类装置被设计出来,旨在通过自动化和智能化技术,将垃圾分为可回收物、有害垃圾、湿垃圾等不同类别,从而提高回收率、减少污染、节约资源,并促进环境可持续发展。这样的设计背景以人们对环境保护和资源利用的关注为基础,力图实现更加高效、便捷和可持续的垃圾管理体系。
1.2 研究目的及意义
1.2.1 研究目的
对智能垃圾分类装置的硬件和软件设计,智能垃圾分类在社会、经济和政策方面也得到了进一步的推广和应用。在社会方面,越来越多的人开始关注垃圾分类和环保问题,有更多的人开始采取主动措施,如分类投放垃圾、回收利用、减少浪费等,同时也有越来越多的社会组织和志愿者参与到城市垃圾分类和环保活动中。在经济方面,智能垃圾分类技术不仅可以降低城市垃圾处理的成本,同时也可以促进垃圾回收和资源再利用,增加相关产业的发展和就业机会。
1.2.2 研究意义
智能垃圾分类装置的意义在于帮助解决城市垃圾分类和处理问题。随着城市化的进程加速,城市垃圾量也日益增加,如何高效地分类和处理垃圾成为了一个迫切的问题。智能垃圾分类装置通过运用物联网、传感器、人工智能等技术手段,能够对垃圾进行智能化分类、回收、处理,具有以下几个意义:
1.提高垃圾分类的准确性和效率。传统的垃圾分类需要人工干预,因此分类效率较低,而且分类标准存在一定的主观性,智能垃圾分类装置可以根据物体的形状、颜色、材料等特征自动进行分类,可以避免人为干扰导致的分类错误。
2.实现垃圾资源化利用。智能垃圾分类装置可以将可回收垃圾、有害垃圾、湿垃圾等不同类型的垃圾分别回收处理,可以有效地促进资源的循环利用,降低环境污染。
3.减轻城市垃圾处理压力。智能垃圾分类装置可以将垃圾分类处理得更细致,有助于降低垃圾处理的成本,缓解城市垃圾处理压力,同时也可以提高城市居民的环境意识和垃圾分类意识。
4.促进城市可持续发展。智能垃圾分类装置的应用可以帮助城市实现可持续发展,减少环境污染、提高资源利用率,有助于推进绿色发展和循环经济,为城市的长期发展奠定基础。
1.3 国内外研究现状
1.3.1 国外研究现状
智能垃圾分类技术主要需要用到机器学习、深度学习等技术。目前已经有很多研究机构和企业在这个领域进行了深入研究,提出了很多创新性的解决方案。例如,麻省理工大学相关学者利用卷积神经网络(CNN)来进行垃圾图像分类,利用循环神经网络(RNN)来对垃圾进行文本描述分类等等。
1.3.2 国内研究现状
智能垃圾分类装置的传感器、机器视觉、人工智能等方面的技术已经非常成熟,目前已经有多家国内外企业推出了自己的智能垃圾分类产品,如小米、华为、腾讯、京东等。这些产品主要采用的是多传感器融合、图像处理、机器学习等技术,能够自动识别并分类垃圾。
一些研究机构还在探索如何将智能垃圾分类技术与智慧城市建设、环境监测等技术结合起来,从而更好地应对城市垃圾处理和环境保护等方面的问题。总体来说,智能垃圾分类技术已经取得了一定的进展,但是仍然存在着一些挑战,如垃圾分类数据不够全面、质量不够高、分类准确率不够高等问题。未来随着技术的不断进步和应用的不断扩大,智能垃圾分类技术有望在城市垃圾处理和环保方面发挥越来越大的作用。
1.4 研究内容及方法
1.4.1 研究内容
本文针对智能垃圾分类识别控制系统进行设计,主要利用单片机和K210设备作为整个控制系统的硬件设备。
首先对智能垃圾分类系统的构成以及整体方案进行设计及选择,主要包括主控模块、识别模块、人体检测模块、容量检测模块、舱门驱动模块等。其次对整个系统的硬件电路部分进行设计,由于本设计采用的是两块MCU,一块为图像识别MCU,另一块为控制系统部分的STM32 MCU,另外对于人体检测模块、容量检测模块、舱门驱动模块以及语音播报模块进行电路设计;另外对于智能垃圾分类识别,即图像识别模块如何实现的进行阐述。主要采用的是K210视觉开发板(maixpy bit)的识别过程以及所采用到的算法进行介绍,本设计主要采用K最邻近分类算法作为垃圾训练算法,采用maix hub模型训练平台找到了平台提供的“Self_Learning_Classifier”自学习分类器;接下来对于智能垃圾分类识别系统的软件实现部分进行设计,包括系统主程序以及各部分子程序,对于垃圾识别部分采用的是Python语言进行设计,利用Maixpy IDE脚本编辑器对程序进行编译;垃圾控制部分采用的是C语言进行设计,利用Keil UDK软件;最终通过Proteus 8.9软件建立智能垃圾分类识别系统的仿真设计,由于仿真无法对识别模块进行模拟,因此该部分通过按键代替,其余功能能够按照预期设计实现。
1.4.2 研究方法
本设计采用以下研究方法:
1.文献综述法:通过查阅国内外相关学者对于垃圾分类、垃圾分类处理算法、硬件设计以及软件设计等相关内容,构建智能垃圾分类识别系统的整体框架。
2.硬件调试法:在设计完整体硬件电路之后,通过AD15软件自带的调试方法查找硬件电路引脚名称、电源极性等是否出现问题;
3.仿真调试法:通过proteus 8.9软件建立垃圾分类识别系统,对仿真进行描述以及分析,确定本设计的可行性。
1.5 拟解决问题
1.利用红外传感器检测人体,以利用红外反射原理进行垃圾桶顶部桶盖的自动合闭工作;
2.具有图像识别分类功能,对可回收垃圾、有害垃圾、厨余垃圾、其他垃圾进行分类;
3.对每次投放垃圾进行容量检测;
4.具有语音播报功能,对每次投放的垃圾进行识别后,能够播报其垃圾种类。
5.对整体电路、程序进行设计;
6.了解垃圾分类算法的基本原理,完成系统调试。

2 系统构成及方案设计

2.2 硬件系统整体结构设计
依据上述功能,本设计考虑采用两块MCU作为整个控制系统的开发板,分别为控制图像分类识别和控制垃圾箱检测和驱动的两部分。两块MCU采用串口通讯的方式进行连接,图像分类识别的MCU将识别结果传输控制系统,由控制系统根据此结果执行相对应的功能,即人体检测、容量检测、舱门控制、语音播报等。整体设计框图如图2-1所示:
 
图2-1  系统整体设计框图
2.3 主控模块选择
2.3.1 采用Arduino
树莓派是一款功能非常强大的控制模块,可以当作一种小型主机使用,其在处理速度、性能与其它控制板具有非常大的优势,因此其主要适用于可靠性较高、处理速度快的场景中,另外该控制板的价格非常昂贵。
2.3.2 采用单片机
单片机是一种高性能芯片,其强大的集成、运算、扩展等优良性能是其它单片机所不能比拟的。该芯片工作时频能够达到72MHz,而随着工作时频的提升,所带来的问题必将是高功耗。
单片机与Arduino控制模块、树莓派相比,在硬件设计、软件设计都具有一定的优势,该控制模块接口种类丰富,开源文件较多,在利用arduino进行软件设计时,只需要在库文件中找到Arduino即可。可是对于本设计的智能垃圾分类识别分类系统来说,采用Arduino价格比较昂贵,性价比较低;而采用STM32单片机,既能够实现整个控制系统的功能,价格低廉且开源程序较多。因此本设计选择STM32系列单片机作为控制模块。
2.4 识别模块选择
2.4.1 采用Open MV模块
采用Open MV模块对垃圾进行识别,Open MV官方为数字识别提供了一个教程,在该教程的基础上进行一定程度上的改进就能够实现本设计的垃圾识别。但是通过实际发现,而由于垃圾种类众多,采用Open MV模块对其进行识别,其处理速度相对较慢,因此对于垃圾进行识别最好采用卷积神经网络算法对此进行改进,这样能够进一步提升数字识别的正确率以及速度。
2.4.2 采用K210模块
采用K210对垃圾进行类型识别,这个方案需要在Maixpy IDE软件上进行模型训练,首先通过在anoconad使用conda create命令创建虚拟环境,其次对模型进行建立和训练,在这一环节通常采用KNN算法对模型继续搭建,以此提高识别精度。
考虑自身使用情况,KNN算法较容易掌握,卷积神经网络算法虽然识别精度稿,但是其过程较为复杂,不易实现。因此本设计采用K210视觉开发板(maixpy bit)作为识别模块。
2.5 人体检测模块选择
为了实现当有人体靠近时,打开垃圾桶门这个功能,必须要采用一款传感器用于检测人体。通常情况下,在我们生活的环境中,任何物体都会相环境释放一定数量的红外光谱信号,不同物体所能产生信号的峰值是不同的,红外光谱的峰值是由物体的性质以及物体的温度所决定的,同时不同物体释放的红外信号的能量是不一样的,这也就导致了波长会不一样。可以采用热释红外传感器。
通过调节热释红外传感器的阀值,能够改变传感器的灵敏度,也就是所能接收到信号的范围。将其调整至一个较为合适的阀值时,当人体经过红外传感器时,由于人体表面的温度是37℃,与周围环境之间存在一定的差值,这就使得红外传感器能够检测出这个差值,并判断是有人通过,通过内部电路设计,对外输出高电平及实现传感器的控制过程。
2.6 容量检测模块选择
红外对管在对物体检测以及障碍物检测中得应用较为广泛。红外对管主要包括两部分,一部分是发射端、另一部分是接收端,其工作特性是不断向外发射红外射线,其红外射线是不能够被肉眼看见;红外对管主要分为两种,其中一种是直射,另一种是反射,反射式红外对管是计算发射红外与接受红外信号的时间,来判断是否有物体。根据本设计中的容量检测这个功能,采用反射式红外对管较为合适;同时红外对管是根据工作电流得调制信号进行工作的,对于外界环境所产生得扰动是比较小的;并且在本设计中,对物体进行检测的距离大致为1-2cm,红外对管对小距离的物体检测较为合适。
2.7 驱动模块选择
根据本设计的垃圾分类功能,本设计考虑采用舵机来控制垃圾仓门的开启。其主要包括垃圾门和垃圾仓门两部分,本设计均采用舵机来实现。舵机本身就是一种伺服电机,其工作方式主要是通过PWM信号来控制舵机工作,同时舵机能够实现0°-180°范围内旋转功能,而本设计功能,可以通过编写程序,控制舵机的PWM调制信号使舵机的旋转角度在0°-90°范围内,当无垃圾时,舵机在0°,有垃圾时,对应舱门的舵机在90°。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/551793.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Postgres中,如何有效地管理大型数据库的大小和增长

文章目录 一、定期清理和维护1. VACUUM和ANALYZE2. 删除旧数据和归档 二、分区表三、压缩数据四、配置优化1. 调整维护工作负载2. 监控和日志 五、使用外部存储和扩展1. 外部表和FDW2. 扩展和插件 六、定期备份和恢复测试结论 管理大型数据库的大小和增长是数据库管理员&#x…

如何看懂电路图,理解电流回路

任何电器都需要电源来供电。电源有正极(+)和负极(-),为了向负载提供电力,电流必须从正极流出,通过负载后再回到负极。这构成了一个供电电流回路,负载得到电力供应后才能开始工作。如果其中的某个环节断开,就无法形成供电电流回路,负载将得不到供电,也无法正常工作。 在一…

Typescript 总结3——类

一、是什么 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础 类是一种用户定义的引用数据类型,也称类类型 传统的面向对象语言基本都是基于类的,JavaScript …

机器学习与深度学习 --李宏毅(笔记与个人理解)Day 20

Day 20 RNN 2 实际使用和其他应用 在实际的学习(training)过程中是如何工作的? step 1 Loss step 2 training Graindent Descent 反向传播的进阶版 – BPTT CLIpping 设置阈值~ 笑死昨天刚看完关伟说的有这玩意的就不是好东西 Why&#xff1…

window轻松使用k8s

Docker Desktop安装篇 1、win安装 1、下载安装包 https://www.docker.com/products/docker-desktop/ 官网下载安装包 2、配置win支持虚拟化 不勾选Hyper-V,它和Windows Subsystem for Linux (WSL) 是两套功能,这里不选他 3、安装WSL配置window支持lin…

2024电容笔专业对比评测:西圣、倍思、绿联哪款平替电容笔更好用?

在当今学习和工作环境中,iPad作为一种多功能的学习和生产力工具,受到越来越多人的青睐与需求。然而,要充分发挥iPad的功能,一个优质的电容笔是必不可少的配件之一。电容笔不仅可以帮助用户进行手写笔记、绘画创作,还能…

包装类的认识

前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&#x1…

48.基于SpringBoot + Vue实现的前后端分离-雪具销售系统(项目 + 论文PPT)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的雪具销售系统设计与实现管理工作系统…

探索分布式系统监控zabbix-------------监控Windows

扩展windows 10 server2012 server2016 server2019 监控 一、在虚拟机中安装zabbix的客户端 下载网站 Download and install Zabbix 安装系统一直托不进虚拟机中;因为没安装Tools组件 点击虚拟机,选择安装VMware Tools 查看主机名 二、在web页…

ArcGIS在洪水灾害普查、风险评估及淹没制图中的技术应用

2020年国务院办公厅印发《关于开展第一次全国自然灾害综合风险普查的通知》,定于2020年至2022年开展第一次全国自然灾害综合风险普查。水旱灾害风险普查是全国自然灾害综合风险普查的重要组成部分。其中,我国有超过 60%的国土面积、90%以上的人口均受到不…

FFmpeg: 自实现ijkplayer播放器--01项目简介

文章目录 项目介绍流程图播放器实现过程界面展示项目代码 项目介绍 此项目基于FFmeg中 ffplay.c进行二次开发,实现基本的功能,开发软件为Qt 项目优势: 参考ijkplayer播放器,实现UI界面和播放器核心进行解耦,容易添加…

SpringBoot3 函数式web 小记

说明:函数式web是spring5.2之后的一个新特性,Spring Boot 3 进一步优化了这一模型,为开发现代 Web 应用提供了更加灵活、简洁的方法; 函数式web的四大核心对象 - RouterFunction:定义路由信息 - RequestPredicates&am…

15_SpringBoot

文章目录 SpringBoot创建SpringBoot应用官网IDEApom.xml文件启动类 整合SpringMVC整合配置类静态资源处理FilterTomcat其他配置 整合MyBatis约定大于配置的原理配置文件中的值的获取yml形式的配置文件约定大于配置的说明注解配置文件配置项 SpringBoot SpringBoot简化Spring阶…

强化网络安全防线,您的等级保护措施到位了吗?

在这个信息化飞速发展的时代,网络安全已经成为我们每个人都需要关注的问题。无论是企业还是个人,我们的工作和生活都越来越依赖于网络。确保网络环境的安全,防止信息泄露和网络攻击,已经成为了一项至关重要的任务。等级保护制度作…

现货白银的止损:原始止损和移动止损

止损是我们做现货白银必备的工具,它的主要功能是控制投资者的亏损,进而控制我们在交易中的风险。而现货白银的止损主要有两种,一个是原始止损,另外一个是移动止损。 原始止损是我们现货白银止损的基本方法。原始止损的意思就是初次…

Git回滚版本并push到远端master

1、查看日志 git log 2、还原最近的版本 () --git reset --hard commit-id 如:git reset --hard d84da14bf2743683eca7a015f56114faaa344f42 3、覆盖分支版本 git push -f origin dev 回滚本地master完成后,将回滚后的代码push到远端master&#xf…

C++ | Leetcode C++题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; class Solution { public:// 翻转一个子链表&#xff0c;并且返回新的头与尾pair<ListNode*, ListNode*> myReverse(ListNode* head, ListNode* tail) {ListNode* prev tail->next;ListNode* p head;while (prev ! tail) {ListN…

C++练级之路——类和对象(中二)

1、运算符重载 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也是具有其返回值类型&#xff0c;函数名字以及参数列表&#xff0c;其返回值类型和参数列表与普通的函数类似。 函数名字为&#xff1a;关键字operator后面接需…

华为ensp中静态路由和默认路由的原理及配置

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月17日17点37分 默认路由 [Router] ip route-static <目的网络> <目的网络掩码> <下一跳地址>默认路由的作用是将无法匹配路由表中其他路由表项的…

储能的全生命周期成本即平准化度电成本的计算方法及python实践

1. 平准化度电成本&#xff08;LCOE&#xff09;是一种衡量电力项目经济性的指标 LCOE&#xff08;Levelized Cost of Energy,&#xff09;的概念最早由美国国家可再生能源实验室&#xff08;NREL&#xff09;在1995年提出&#xff0c;它是通过将一个项目生命周期内的所有成本…