基于深度学习与单片机的智能垃圾分类系统设计
2021-12-14余骁,刘硕
余 骁,刘 硕
(江苏科技大学,江苏 镇江 212000)
0 引 言
查阅相关数据发现,我国2019年生活垃圾的清运量高达24 206.19万吨[1]。之前,由于人们缺乏垃圾分类意识,导致大部分垃圾未进行合理有效分类就被扔进垃圾桶,造成资源的大量浪费。自从《上海市生活垃圾管理条例》正式实施之后,垃圾分类再次成为全国人民关注的焦点[2]。垃圾可划分为4种不等的类别,可分为可回收垃圾、厨余垃圾、有害垃圾、其他垃圾。垃圾分类是对传统垃圾收集和处理方法的改革,是有效进行垃圾处理的科学管理方法,通过进一步挖掘垃圾蕴含的潜在价值,从而达到变废为宝、保护环境的目的[3]。
针对垃圾分类的现状与存在的问题,本论文提出了基于深度学习和单片机的智能垃圾分类系统设计,可以实现垃圾的自动识别与自动投放、LCD显示以及满载检测等功能。
1 系统设计
本系统主要搭载了基于Pytorch的深度学习框架进行视觉识别,利用STM32嵌入式单片机作为微控制器进行功能拓展。通过摄像头采集图像信息,利用视觉识别算法对图像信息进行处理,然后通过串口将处理后的数据发送给STM32单片机,经过单片机对数据作进一步处理后控制步进电机与舵机运转,实现垃圾的自动识别与自动投放,以及LCD显示屏的显示功能,最终实现垃圾的自动分类。还可在垃圾桶上外加对射红外开关进行满载检测。系统整体装配如图1所示。
图1 系统整体装配图
2 硬件结构设计
智能垃圾分类系统硬件结构涉及的主要模块有视觉识别模块、舵机模块、步进电机模块、LCD显示模块以及满载检测模块。系统硬件结构设计如图2所示。
图2 系统硬件结构设计
2.1 视觉识别模块
智能垃圾分类系统的视觉识别模块主要搭载基于Pytorch的深度学习框架进行视觉识别。通过摄像头采集垃圾图像数据,经过事先拟合好的函数进行数据处理,可以得出当前采集的垃圾数据与哪一类垃圾数据更为匹配。然后通过串口将处理好的数据传输给STM32单片机,从而对步进电机、舵机以及LCD显示屏进行控制。Pytorch相比Tensorflow而言,更加简洁直观[4]。视觉识别模块与STM32单片机的通信结构如图3所示。
图3 通信结构
2.2 舵机模块
智能垃圾分类系统采用MG90S舵机实现自动投放垃圾的功能。STM32单片机通过I/O口向舵机传送PWM信号,控制舵机运转,将200 mm×200 mm木板上的垃圾投放到垃圾桶中。舵机大体可分为壳体、减速器、驱动马达、位置检测部件和电路板。MG90S属于数字舵机,相比模拟舵机而言,数字舵机的控制电路具有更多的晶体振荡器和微处理器,极大地提高了舵机的驱动性能[5]。舵机驱动原理如图4所示。
图4 舵机驱动原理
2.3 步进电机模块
智能垃圾分类系统采用TB6600驱动器和57步进电机,实现了垃圾桶的自动选择功能。TB6600是一款专业的两相步进电机驱动器,兼容Arduino和其他主控器,可实现电机正反转控制、旋转角度控制等,具有振动小、噪声低、速度快等优势[6]。STM32单片机对通过串口通信接收到的数据进行处理,控制57步进电机旋转一定角度,选择有害垃圾垃圾桶、可回收垃圾垃圾桶、厨余垃圾垃圾桶、其他垃圾垃圾桶的其中一个进行垃圾自动投放。TB6600控制器、57步进电机以及STM32控制器的接线方式采用共阳极接法,具体如图5所示。
图5 步进电机模块接线图
2.4 LCD显示模块
智能垃圾分类系统采用2.8寸MCU电阻触摸屏模块,该模块依靠背光LED发光,每个点电压可以改变光线的方向,从而改变透光度(0~100%)。每个像素点对应红绿蓝RGB,RGB各自的亮度不同,组成的颜色自然也不同[7]。LCD显示模块实现了智能垃圾分类系统各项参数的显示,具体包括投放顺序、投放种类、四类垃圾的数量以及是否投放成功。对红外对射开关传来的数据进行检测与处理,实现垃圾桶的满载检测。
2.5 满载检测模块
智能垃圾分类系统采用红外对射开关进行垃圾桶的满载检测。实现原理:当红外对射开关之间无垃圾阻挡时,接收管的信号线输出0 V低电平;当红外对射开关之间有垃圾阻挡时,接收管的信号线输出5 V高电平。为避免垃圾在下降过程中因短时间阻挡红外光线为满载检测带来干扰,本设计采用延迟判断避免此类错判,类似按键消抖原理。该模块抗干扰能力强,价格低廉,应用前景广阔。满载检测模块原理如图6所示。
图6 满载检测模块原理
3 软件仿真设计
智能垃圾分类系统软件仿真设计主要涉及STM32单片机以及Pytorch。智能垃圾分类系统的整体流程如图7所示。
图7 系统整体流程
3.1 STM32单片机程序设计
STM32单片机程序主要由C语言编写,包括主程序、舵机程序以及电机驱动程序等各功能模块子程序。将智能垃圾分类系统的功能模块化,使得系统具有架构灵活、方便单个模块功能调试升级以及可维护性高等优点。
3.2 Pytorch程序设计
Pytorch程序主要由Python语言编写,Pytorch是Python软件包,其GPU促进了基于磁带autograd系统构建的张量计算[8]。智能垃圾分类系统采用基于Pytorch的深度学习框架进行垃圾识别,垃圾识别主要分为如下3部分:
(1)摄像头对垃圾图像数据进行采集与获取;
(2)将采集的图像数据放进预训练模型进行预处理及加工;
(3)将加工好的数据进行转换,转换后的数据遵守Pytorch与STM32单片机的串口通信协议[9],发送给STM32单片机。
系统识别流程如图8所示。
图8 系统识别流程
智能垃圾分类系统的功能模块化可能会导致功能模块在互通的过程中出现一些不可预知的问题与故障,因此需要不断调试与改进。
4 结 语
本论文主要介绍了基于深度学习和单片机的智能垃圾分类系统在硬件和软件上的设计,垃圾分类系统搭载基于Pytorch的深度学习框架进行垃圾识别,同时系统具备的自动投放、满载检测报警等技术可实现垃圾自动分类,一定程度上削弱了人为垃圾分类的繁琐性,提高了垃圾分类效率。
在今后的研究当中,可以对当前智能垃圾分类系统进行升级改造。比如,增加语音播报模块以及上位机,实现人机交互,进一步提高智能垃圾分类系统的智能化水平;增加大量数据集,实现精准识别更多种类的垃圾,凸显智能垃圾分类系统的人性化特点[10]。