这个作品算是我大学期间的end show吧,其实也算是第一次做那么大的工程,逛博客看到别人在乱发我们的作品,也是无语…
但是还是欢迎大家评论交流。
版权声明
本设计由本人及其团队共同完成,其他出处标注原创,均为faker。
自证截图工程文件夹,带制作,可信赖。
项目视频
该项目参加了2019年全国大学生FPGA创新设计大赛,获得一等奖。视频链接指路。
https://www.bilibili.com/video/BV1VJ411R7DE/
第一部分 设计概述 /Design Introduction
1.1 设计目的
随着现代社会的高速发展,其带来的环境压力也越来越大,对于日益剧增的垃圾产量已经成为世界关注的焦点。垃圾分类成为制约我国环保产业发展的瓶颈,也是造成环境污染、资源再利用困难的根源之一,所以推进垃圾分类刻不容缓。然而垃圾分类总是“屡试屡败”工作推进难度巨大,“垃圾分类难”也同样困扰着大众,为了缓解垃圾分类的问题,减轻社会和居民的压力,如果可以实现可回收垃圾二次分类,对生活垃圾自主分类就显得尤为重要。于此,我们决定设计这样一个作品—智能识别自动投递分类垃圾箱,方便垃圾回收和利用。
本作品是基于赛灵思公司的 pynq 开发平台设计,同时结合了机械控制和神经网络等知识,拥有可以自主识别垃圾并分类的功能,以 FPGA 作为核心处理器最大程度的实现了垃圾识别与分类。该智能垃圾桶将人工分类垃圾转为智能化,大大节省了人力,物力,降低垃圾分类的烦恼,具有长远的利用价值和非常巨大的市场前景。该作品有两种操作模式,可在图像识别和语音识别两种模式之间自由切换。
1.2 应用领域
本作品应用前景广泛,智能识别自动分类系统实现用摄像头取代了人类的眼睛,人工智能取代了大脑,电机取代了双手。实用性强且可使用范围广,既推动我国环保事业,又减轻社会对垃圾处理的压力,节约资源降低处理垃圾资金投入。
1.3 适用范围
有效减少环境污染,提高资源的再利用,可以适用于生活中的方方面面。例如,在家庭中使用,解决居民垃圾分类的烦恼,或是运用各大商场或人流量密集的地方,可以大大缓解垃圾分类的问题,减轻社会环境压力。此外,本作品可适用于可回收垃圾的二次分类,即加大资源的回收利用,有促进社会可持续发展具有一定的市场经济价值。
第二部分 系统组成及功能说明 /System Construction & Function Description
2.1 系统介绍
图 2.1 系统流程图
本系统主要由 Xilinx Zynq-7000 系列的 PYNQ-Z2 开发板作为主控中心,主要包含:摄像头采集模块、图像处理模块、实时显示模块、实时数据采集模块、信息提醒发送模块、驱动控制模块组成。总体结构如图 2.1 所示。
流程图讲解:
主控 PYNQ 开发板主要为提供神经网络的加速识别,搭载 USB 的网络摄像头进行数据的采集和功能参数的显示,同时在这个 ARM+FPGA 平台,为了最大化主控板优势,我们针对软件算法进行了相应的硬件实现进行提速,解决了在有限的资源内实现了资源利用和效率的最大化,同时在 PYNQ 端,为了保证产品的功能完整性,设计了两种识别模式,图像识别模式和语音识别模式。待识别完成后,我们将通过设置的通信协议进行数据的传输,使得辅助开发板可以进行自动投递。
辅助开发板主要对各种传感器进行数据采集、数据分析、数据处理、控制设备的驱动、以及串口通信,实现不同开发板之间信息传输。接收所识别垃圾的信息,控制数字舵机的转动,将垃圾投入相应垃圾桶内。通过 FPGA 开发板将温度传感器测得的垃圾桶内温度值、超声波测得的桶内垃圾含量、是否存在有害气体、是否检测到火焰等数据经过处理发送给显示模块,最终在显示终端显示摄像头采集得到的照片、垃圾桶内温度、桶内垃圾含量、系统目前状态等数据。当检测到火焰,有害气体以及满桶警告时,将通过短信模块给管理员发送短信提醒。
垃圾桶内部空间大,外部结构稳定,设置安全提示和自我保护功能,超声波和红外传感器实现智能检测桶内环境,遇到特殊情况,系统将自动发送信息至管理员进行相应的处理。
2.2 FPGA 开发板
神经网络实现:PYNQ
辅助开发板:均可。
第三部分 完成情况及性能参数 /Final Design & Performance Parameters
本系统由摄像头模块、显示器模块、语音识别和语音播报模块、电机驱动模块、传感器等共同组成。具有摄像头拍照识别垃圾种类、实时检测温度、火焰、有害气体、垃圾含量多少、满桶警告、特殊情况短信提醒、语音播报、语音识别以及屏幕实时显示等功能,同时附加了语音识别和语音播报功能增加识别的准确率。市民将垃圾投入到垃圾桶后,桶内的摄像头会对垃圾进行拍照,通过数据库对比识别垃圾的种类,判定结果通过开发板回传至垃圾桶,控制舵机转动隔板完成分类。
可实现功能:
(1)在图像识别模式下,可以对可回收垃圾进行二次分类回收利用,可识别塑料、金属、玻璃、硬纸板、废纸并进行分类;
(2)在语音识别模式下,可以直接对一些生活中常见垃圾进行可回收垃、厨余垃分类圾、其他垃圾、有害垃圾四种分类,投入相应垃圾桶内。
目前,两个功能均已实现且可以随意切换使用,各模块之间依功能连接。
传感器采集得到的数据经过处理之后发送给显示器模块,在串口屏显示终端显示垃圾桶内垃圾含量、系统安全性以及传感器实时监控环境数据。
两种垃圾识别模式:语音识别模式和图像识别模式(1)使用图像识别,可以对可回收垃圾进行二次识别;(2)使用语音识别模式,可以直接对一些生活中常见垃圾进行可回收垃、厨余垃圾、其他垃圾、有害垃圾四种识别。
将传感器检测一氧化碳、火焰传感器、红外温度的数据经过分析过后作是否开启的报警提示信号。
系统还可以根据垃圾桶内垃圾的含量、是否出现火焰、存在有害气体等,通过短信发送给管理员进行及时处理。
摄像头部分
在摄像头采集模块中,我们将 python 内部 opencv 模块的图像处理函数加载至摄像头端,当摄像头采集视频流时可在显示屏实时观看所采集到的视频流。摄像头采集效果如下所示:
语音识别模块
我们可以很简便的配置语音命令,实现语音识别功能。首先需要通过软件设置词条,后将词条烧录至模块中。其次,利用 UART 通信协议发送启动指令驱动语音识别模块,当使用者对模块说话时,模块对说出的话进行识别并且与烧录进去的词条进行对比,若两者一致,则会向开发板发送信号,信号经过处理后控制震动和语音播报的开关。
语音播报模块
语音模块可以采样简单的io置数的播报模块也可以采样串口控制的模块。
通过串口发送指令控制模块外置 SD 卡或 U 盘中预先存储的语音及音乐,串口屏发送过来的指令使用状态机检测,然后触发语音发送指令模块,触发语音播报。
完全支持 FAT16、FAT32 文件系统,最大支持 32G 的 U 盘,TF 卡。U 盘和 SD 卡,
需要格式化为 FAT16、FAT32 文件系统。
通讯格式:起始位 0x7E + len 后面字节个数 + 命令(播放或暂停) + 查询歌曲序号(数据高字节) + 查询数据低字节 + 结束位 0xEF。
直接发送的指令, 每发一条正确指令都会返回 “OK”错误返回“err”,修改指令第三、四位十六进制数据,即可播放指定文件夹语音。
在此我们采用的时指定文件夹播放的方式进行播放,在外置存储器中新建文件夹,文件夹名必须为 01-99 文件号,内总曲目名字必须改 1-255。建好文件夹并且存储好要播放的语音后,就可以通过开发板发送播报指令,语音模块便开始工作播报语音。
若想要播放 01 文件夹中文件名为 008 的语音,则发送指令:7E 04 41 01 08 EF(其中 7E 为起始地址,04 为位长度,41 为指令,01 08 表示 01 文件夹第文件名为 008 的语音)。
显示模式
多种显示供你选择~~~~
通过 pynq 实现对相关资源进行调用进行实现图片的显示功能。
舵机驱动模块
本系统设计中所使用的数字电机为如图所示。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一定的角度,它的旋转的角度可以通过控制脉冲的占空比进行改变调整。位置控制是通过发脉冲来控制的,位置控制模式一般是通过外部输入的脉冲的频率来确定转动速度的大小,通过脉冲的个数来确定转动的角度。一个周期是 20MS,一个周期的高脉冲范围在 0 到 2.5MS 其对应的舵机转动角度范围是 0 到 270 度。只要设定相应转动角度对应的计数值,则可以实现相应的角度旋转。其 RTL 如图 3.所示:
串口屏显示模块
我们在串口屏与 FPGA 信息交互时使用了 UART 通信协议。计算机和外部设备的连接,基本上使用了两类接口:串行接口和并行接口。并行接口是指数 据的各个位同时进行传送,其特点是传输速度块,但当传输距离远、位数又多 时,通信线路变复杂且成本提高。串行通信是指数据一位位地顺序传送,其特点是适合于远距离通信,通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本。当传感器测得数据,会有指令数据通过 UART 通信协议发出,将传感器发出的信息传送给 FPGA 进行综合处理,串口屏会根据接收到的信息输出相应的数值。在这样的信息传输过程中是以 UART 通讯协议进行通信的。
我们的作品主要是通过串口屏进行显示,我们采用 UART 通信协议的接受模块接收,根据发来的传感器检测的数据,使 FPGA 中状态机的状态与串口屏的显示界面一致,会向串口屏发送相应的显示信息进行显示,例如垃圾桶内温度、桶内垃圾含量、是否检测到火焰或者有害气体等。
本模块负责接收串口屏发来的信息。我们可以在界面的看到垃圾桶内环境监测,环境正常显示绿色的数值,当出现异常时,显示红色的数值,如图 3.6 所示。
MCU90615 红外测温模块
此 MCU90615 模块通过发送对应的 AT 指令集设置读取数的时间和波特率
命令指令:
连续输出指令:
0xA5+0x45+0xEA----------------温度数据(模块返回数据类型为 0x45)
查询输出指令:
0xA5+0x15+0xBA ---------------温度数据(模块返回数据类型为 0x45)
配置指令:(掉电重启后生效)
波特率配置:
0xA5+0xAE+0x53 ---------------9600
0xA5+0xAF+0x54 ---------------115200(默认)
上电是否自动发送温度数据配置:
0xA5+0x51+0xF6---------------上电后自动输出温度数据
0xA5+0x52+0xF7---------------上电后不自动输出温度数据(默认)
0xA5+0xAF+0x54 ---------------115200(默认)
通过状态机截取对应位数据输出,将数据发送给串口屏,从而完成显示,RTL 图
GSM 短信模块
SIM800A 模块通过发送和接受国际电信联盟规定的 AT 指令集来进行控制和数据接收,本系统使用了 UART 通信协议的发送模块进行指令的发送。本系统短信模块的功能主要体现在 当垃圾桶的环境异常时,会给管理员及时通知异常情况,以便处理。
超声波测距模块
该模块我们通过超声波传感器实时的检测垃圾桶内垃圾含量,进行实时数据监测和满桶警报当垃圾桶即将装满时会及时发送短信至垃圾管理员。可以实时在串口屏上显示垃圾桶内垃圾含量,并且当垃圾桶内可用高度小于 5cm 时认定垃圾桶即将装满时会及时并自动发送短信至垃圾管理员。RTL 图如图
串口
该部分不做赘述。
第四部分 总结 /Conclusions
4.1 主要创新点
(1)在使用 PYNQ 核心板作为主要处理器处理数据时,使用 hls 对卷积和池化层的硬件电路设计,实现了 cnn 卷积神经网络在 pynq 的复现。
(2)对于已经训练的垃圾进行识别其准确率可达 90%以上。
(3)增加了语音识别和图像识别两种模式,两种操作随意切换,适用于不同场景,对应相同的功能,增加识别精准度。
(4)增加自启动功能。
(5)使用硬件加速,提高了识别速度。
(6)增加卷积和池化的硬件电路设计,增强网络实现的效率。
(7)增加传感器进行环境监测,数据实时显示,保证出现异常情况进行报警,数据及时反馈给管理员。
(8)利用摄像头采集垃圾的图像后 PYNQ 使用在 PC 端训练并保存的神经网络在该数据集下的权值。
4.2 可扩展之处
(1)扩大数据集,对不同种类垃圾图片进行收集、训练,增加可识别垃圾种类,提高识别精准度。
(2)对于云台旋转的角度精确值可以更为精确,通过对于器件、参数的调整,预计达到肉眼不可见的误差。
(3)可以升级使用更加高级的算法和网络使得分类更加的精准和高效。