马晗旭,刘忠富,刘子洋,赵宏宇
(大连民族大学 信息与通信工程学院,大连116600)
随着城市化的发展, 科技技术的不断革新,居民的生活垃圾不再是毫无用处的废弃物,它拥有巨大的开发价值。 但是,目前在我国城市街道上的分类垃圾桶大部分只是贴有标签的普通垃圾桶,需要人为去识别垃圾种类。 再加上很多人不知道垃圾分类的知识,无法进行正确投放,这使垃圾分类没有达到预期的效果。 因此垃圾分类的智能化已然成为必然的趋势。
近些年来,国内外的科研技术人员对垃圾分类进行了较多的研究。 文献[1]对垃圾回收分类进行了研究,该系统主要通过金属传感器,红外对管传感器等进行垃圾识别分类,可以基本实现一些简单的垃圾分类。 文献[2]利用卷积神经网络对垃圾分类进行了研究。
针对人们不能正确进行垃圾分类,人工分类耗时耗力等问题, 本文设计了一种智能垃圾分类系统。 系统进行高效的垃圾分类,使人们不用考虑所扔垃圾的种类。 系统通过语音交互,能够普及人们对垃圾分类的认识,对社会中垃圾分类起到促进作用,具有一定的实际意义和研究价值。
本系统采用STM32F103RCT6 作为核心控制芯片,此芯片具有高性能、低功耗和造价低等特点。 在垃圾识别环节使用了OpenMV 模块,通过训练垃圾数据库,采用SSD 算法进行垃圾的识别,识别之后,通过单片机串口接收识别的数据,进行控制语音识别芯片LD3320 进行对应垃圾种类的播报, 同时单片机驱动电机旋转, 使内桶精准旋转到对应的位置。 旋转完成后,通过单片机控制放有垃圾的舵机板旋转,使垃圾落入对应的内桶。 系统结构设计图如图1 所示。
图1 系统结构设计图Fig.1 System structure design
本系统主要由STM32 单片机最小系统电路、OpenMV 垃圾识别电路、 超声波测距电路、 电源电路、语音交互电路及控制电路组成,如图2 所示。 整个系统主要以STM32 单片机最小系统为主要处理器。 垃圾通过OpenMV 模块训练数据进行识别,将识别的数据信息传递给单片机,通过单片机控制电机、舵机的旋转,完成整个垃圾分类系统。
图2 硬件电路设计图Fig.2 Hardware circuit design
本系统的主控芯片采用STM32F103RCT6 单片机,选用这种芯片组成单片机最小系统主要由于其构成的电路设计较为简单,并且反应速度快,程序存储量相对于51 单片机来说较大。 本文中所设计的系统主要以其作为主控芯片,通过串口接收并处理数据,从而对整个系统功能进行实现。 电路图如图3 所示。
OpenMV 摄像头是一款小巧、低功耗、低成本的电路板, 可以通过高级语言Python 实现处理算法。在小巧的硬件模块上,用C 语言高效地实现了核心机器视觉算法,提供Python 编程接口。 Python 的高级数据结构很容易在机器视觉算法中处理复杂的输出。 而且可以完全控制OpenMV,包括IO 引脚。
该部分用于检测箱内垃圾的高度,判断是否需要清理桶内垃圾。 设计的垃圾箱为90 cm,因此根据人为合理划定,认为当R<30 cm 时,为垃圾较少;当30 cm 电源电路包括两部分,一部分是将太阳能转化的12 V 直流电转换为5 V 直流电供红外传感器和超声波模块使用, 另一部分是将5 V 转换为3.3 V供STM32 使用。 2.4.1 12 V 转5 V 电路设计 图3 单片机最小系统电路Fig.3 Minimum system circuit of single chip microcomputer 图4 超声波测距原理Fig.4 Principle of ultrasonic ranging 该电路采用LM2596-5 芯片进行降压得到5 V,LM2596 属于常用的开关电源芯片,造价便宜。 12 V接入IN 端, 在输出端接一个470 μF 电解电容和105 电容, 进一步滤除纹波得到5 V 稳压电源。 图中发光二极管起指示作用, 转换效率可达80%~90%左右。该电路原理如图5 所示。 图5 12 V 转5 V 电路Fig.5 12 V to 5 V circuit 2.4.2 5 V 转3.3 V 电路设计 STM32 单片机稳定工作需要稳定的电压,因此将5 V 转换为稳定的3.3 V 电压供单片机使用。 本设计采用线性稳压芯片AMS1117-3.3 V,该芯片可以将输入的5 V 电压转换为3.3 V 输出,此部分电路原理如图6 所示。 VCC5为5 V 电压,IN 为稳压芯片的输入引脚,OUT 是3.3 V输出引脚, 左侧104 电容、220 μF 电容起滤波作用,发光二极管起指示作用。 图6 5 V 转3.3 V 电路Fig.6 5 V to 3.3 V circuit 本设计采用了语音识别芯片LD3320,该芯片采用ASR 技术,提供了一种脱离按键、键盘、鼠标、触摸屏等GUI 操作方式且基于语音的用户界面VUI,使得用户对该系统的操作更简单、快速和自然[3-4]。 只需把识别的关键词语以字符串的形式传送进芯片,即可以在下次识别中立即生效。如:使用者问“干电池属于什么垃圾?”,本系统回答“属于有害垃圾”,或者当使用者把干电池放入桶内,本系统会播报“属于有害垃圾”。 该电路原理图如图7所示。 图7 LD3320 语音识别模块原理图Fig.7 Schematic diagram of LD3320 speech recognition module 2.6.1 舵机电路设计 采用2 个TD-8120MG 型舵机, 固定在识别挡板两侧,使识别挡板可以水平放置和竖直放置。 该种型号舵机内含先进的ASIC IC 来处理单片机的信号,具有很强的解析度,扭矩更大,可以完全托住识别挡板及挡板上面的待识别垃圾。 两舵机采用同一个单片机信号,使两舵机可以同步进行。 2.6.2 电机驱动电路设计 采用A4988 模块驱动电机工作,A4988 是一款带转换器和过流保护的DMOS 微步驱动器,该产品可在全、半、1/4、1/8 及1/16 步进模式时操作双极步进电动机。 只要在“步进”输入中输入一个脉冲,即可驱动电动机产生微步。 无须进行相位顺序表、高频率控制行或复杂的界面编程[5]。A4988 界面非常适合复杂的微处理器不可用或过载的应用。 该电路原理如图8 所示。 系统使用Keil 和PyCharm 开发软件作为开发环境,主要以C 语言和python 语言进行设计。 整个系统软件部分主要分为垃圾识别和控制电机、舵机。 前者使用python 语言,后者使用C 语言。 通过OpenMV 将识别到的垃圾传输到单片机, 然后单片机进行分析数据,单片机向语音交互模块发送驱动信号来播报垃圾的种类,并控制电机、舵机完成垃圾的自动分类。 图8 电机驱动电路Fig.8 Motor drive circuit 如图9 所示, 识别垃圾分类部分采用PyCharm进行大量垃圾样本信息的训练和积累,建立垃圾样本数据库。 通过OpenMV 识别被检测垃圾,判断被检测垃圾所属的种类,进而进行垃圾的自动分类处理。把垃圾放入识别挡板之上,OpenMV 开始识别垃圾样本,然后识别样本与垃圾样本库进行数据分析对比,判断垃圾所属种类。 若识别垃圾为可回收垃圾,系统进行数据的量化,把数据“1”,赋值给变量a。 进而单片机与OpenMV 开始建立串口通信,OpenMV 开始发送数据a 给单片机,直到完成发送,OpenMV 开始继续检测待测垃圾的种类。 图9 垃圾检测流程Fig.9 Waste detection flow chart 电机转动程序的设计主要通过判断a 的值,控制产生4 种指定脉冲个数的方波。 选择步距为1.8°的电机,为了精确地进行角度控制,采用1/16 步驱动。 角度与脉冲个数公式如下: 式中:N 为脉冲个数;θ 为旋转角度。 根据公式计算可得:旋转90°,需要800 个脉冲;旋转180°,需要1600 个脉冲;旋转270°,需要2400 个脉冲。 系统通电之后开始进行初始化,其他垃圾的内桶自动旋转至识别挡板之下,单片机循环等待接收OpenMV 即将发送的数据, 直到接收OpenMV 发送的值。 然后单片机进行数据判断处理。 若单片机接收a=“1”时,连接电机驱动器的PA0 口,产生800 个脉冲,使控制内桶位置的电机转动90°。 此时,可回收垃圾的内桶旋转至识别挡板之下,进行精准的垃圾分类。 该部分流程如图10 所示。 图10 电机转动流程Fig.10 Flow chart of motor rotation 给系统供电, 通过改变人体接近垃圾桶的距离, 检测系统是否正确打开垃圾桶投放口。 通过OPenMV 分别训练4 组垃圾样本,废纸(可回收垃圾)、菜叶(厨余垃圾)、电池(有害垃圾)、塑料袋(其他垃圾),每组采集50 张图片存入垃圾样本库中,系统对每一种垃圾进行了100 次识别,经过实践统计得到下表。 表2 内桶旋转统计表Tab.2 Statistics of inner barrel rotation 由上面的表格可以看出,系统识别单一垃圾的功能是稳定可靠的,识别成功率均大于90%。 系统正确旋转成功率大于99%,具有可靠精确旋转的能力。 本文所设计的太阳能供电的智能垃圾分类处理系统,使用了STM32 单片机作为主控芯片,实现了垃圾桶智能识别垃圾种类并自动分类的功能。 比传统意义上的分类垃圾箱更智能、更便捷。 该系统基本可以满足单一垃圾的分类处理,同时系统具有语音交互功能,提高系统的实用性以及普及人们的知识。所以本系统具有一定的市场研究价值和应用价值。2.4 电源电路设计
2.5 语音交互电路设计
2.6 控制电路设计
3 系统软件设计
3.1 OpenMV 垃圾分类程序设计
3.2 电机转动程序设计
4 系统调试
5 结语