FPGA|CPLD|ASIC论坛
直播中

FPGA技术江湖

3年用户 656经验值
私信 关注
[经验]

基于PYNQ的智能垃圾分类系统


1.png



第一部分 设计概述 /Design Introduction

1.1 设计目的

         随着现代社会的高速发展,其带来的环境压力也越来越大,对于日益剧增的垃圾产量已经成为世界关注的焦点。垃圾分类成为制约我国环保产业发展的瓶颈,也是造成环境污染、资源再利用困难的根源之一,所以推进垃圾分类刻不容缓。然而垃圾分类总是 “屡试屡败”工作推进难度巨大,“垃圾分类难”也同样困扰着大众,为了缓解垃圾分类的问题,减轻社会和居民的压力,如果可以实现可回收垃圾二次分类,对生活垃圾自主分类就显得尤为重要。于此,我们决定设计这样一个作品—智能识别自动投递分类垃圾箱,方便垃圾回收和利用。本作品是基于赛灵思公司的 pynq 开发平台设计,同时结合了机械控制和神经网络等知识,拥有可以自主识别垃圾并分类的功能,以 FPGA 作为核心处理器最大程度的实现了垃圾识别与分类。该智能垃圾桶将人工分类垃圾转为智能化,大大节省了人力、物力,降低垃圾分类的烦恼,具有长远的利用价值和非常巨大的市场前景。该作品有两种操作模式,可在图像识别和语音识别两种模式之间自由切换。

1.2 应用领域

         本作品应用前景广泛,智能识别自动分类系统实现用摄像头取代了人类的眼睛,人工智能取代了大脑,电机取代了双手。实用性强且可使用范围广,既推动我国环保事业,又减轻社会对垃圾处理的压力,节约资源降低处理垃圾资金投入。

1.3 适用范围

         有效减少环境污染,提高资源的再利用,可以适用于生活中的方方面面。例如,在家庭中使用,解决居民垃圾分类的烦恼,或是运用各大商场或人流量密集的地方,可以大大缓解垃圾分类的问题,减轻社会环境压力。此外,本作品可适用于可回收垃圾的二次分类,即加大资源的回收利用,有着促进社会可持续发展具有一定的市场经济价值。

第二部分 系统组成及功能说明 /System Construction & Function Description

2.1 系统介绍

2.png



         本系统主要由 Xilinx Zynq-7000 系列的 PYNQ-Z2 开发板作为主控中心,主要包含:摄像头采集模块、图像处理模块、实时显示模块、实时数据采集模块、信息提醒 发送模块、驱动控制模块组成。总体结构如图 2.1 所示。

流程图讲解:

         主控 PYNQ 开发板主要为提供神经网络的加速识别,搭载 USB 的网络摄像头进行数据的采集和功能参数的显示,同时在这个 ARM+FPGA 平台,为了最大化主控板优势,我 们针对软件算法进行了相应的硬件实现进行提速,解决了在有限的资源内实现了资源 利用和效率的最大化,同时在 PYNQ 端,为了保证产品的功能完整性,设计了两种识别 模式,图像识别模式和语音识别模式。待识别完成后,我们将通过设置的通信协议进行数据的传输,使得辅助开发板可以进行自动投递。

         辅助开发板主要对各种传感器进行数据采集、数据分析、数据处理、控制设备的驱动、以及串口通信,实现不同开发板之间信息传输。接收所识别垃圾的信息,控制 数字舵机的转动,将垃圾投入相应垃圾桶内。通过 FPGA 开发板将温度传感器测得的垃圾桶内温度值、超声波测得的桶内垃圾含量、是否存在有害气体、是否检测到火焰等数据经过处理发送给显示模块,最终在显示终端显示摄像头采集得到的照片、垃圾桶内温度、桶内垃圾含量、系统目前状态等数据。当检测到火焰,有害气体以及满桶警告时,将通过短信模块给管理员发送短信提醒。

         垃圾桶内部空间大,外部结构稳定,设置安全提示和自我保护功能,超声波和红外传感器实现智能检测桶内环境,遇到特殊情况,系统将自动发送信息至管理员进行相应的处理。

2.2 FPGA 开发板

3.png


4.png


         本系统主要由 Xilinx Zynq-7000 系列的 PYNQ-Z2 开发板作为主控中心,如图2.2.1 所示。其主芯片为 XC7Z020CLG400-1,该芯片是 FPGA+ARM 架构且可用 python 开发,同时提供了丰富的 python API 和完善的硬件设计流程,能实现较复杂的逻辑设计,13300 个逻辑 Slices,高达 650MHZ 的工作频率,630K 的快速 Block RAM,220 个 DSP 切片,资 源十分丰富。同时使用 Spartan6 核心开发板作为辅助显示控制中心,如图 2.3 所示。

2.3 各模块介绍

2.3.1 数字电机模块

5.png



         数字电机是将电脉冲信号转变为角位移开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率,而不受负载变化的影响, 当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一定的角度,它的旋转的角度可以通过控制脉冲的占空比进行改变调整。如图 2.3.1 所示, 这是数字电机模块图。

         DS3225 数字舵机是电路板(微小控制)、防水防烧(有硅胶圈)、金属齿轮(不 容易扫齿)、支持高电压(6v~7.4v 可以直接 2s 锂电供电)、中间金属(散热效果很好)

6.png


本系统利用数字电机控制垃圾桶的底部旋转和识别云台翻转。

2.3.2 GY-MCU90615 模块

7.png



         GY-MCU90615 是一款低成本红外温度模块。工作电压 3-5v 功耗小,体积小。其 工作原理,是通过 FPGA 读取红外温度度数据,串口(TTL 电平) 通信方式输出。串 口的波特率有 9600bps 与 115200bps 有连续输出与询问输出两种方式,可适应不同 的工作环境

产品应用:人体测温、发热物体表面温度检测、非接触温度检测。
①.Byte0: 0x5A 帧头标志
②.Byte1: 0x5A 帧头标志
③.Byte2: 0X45 本帧数据类型(0X45:温度数据)
④.Byte3: 0x04 数据量(以下 4 个数据 2 组为例)
⑤.Byte4: 0x00~0xFF 数据 1 高 8 位
⑥.Byte5: 0x00~0xFF 数据 1 低 8 位
⑦.Byte6: 0x00~0xFF 数据 2 高 8 位
⑧.Byte7: 0x00~0xFF 数据 2 低 8 位
⑨.Byte8: 0x00~0xFF 校验和(前面数据累加和,仅留低 8 位)

2.3.3 GSM 模块

本模块设计 UART 通信协议与 SIM800A 通信,用于收发短信和存储短信内容。


8.png

SIM800A 模块简介

SIM800A 模块通过发送和接受国际电信联盟规定的 AT 指令集来进行控制和数据接收,本系统用到的 AT 指令集有:


9.png

UART 协议简述:

         通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作 UART,是一种异步收发传输器。将数据由串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片 UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。

         UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一 位地传输。其中每一位(Bit)的意义如下:

         起始位:先发出一个逻辑“0”的信号,表示传输字符的开始。

         数据位:紧接着起始位之后。数据位的个数可以是 4、5、6、7、8 等,构成一个 字符。通常采用 ASCII 码。从最低位开始传送,靠时钟定位。

         奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇 校验),以此来校验数据传送的正确性。

         停止位:它是一个字符数据的结束标志。可以是 1 位、1.5 位、2 位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

         空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。UART 协议传输时序如图 2.3.4 所示:

10.png


         发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间 T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。
         
         接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续 设备准备接收数据或存入缓存。

         由于 UART 是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,UART 采用 16 倍数据波特率的时钟进行采样。每个数据有 16 个时钟采样,取中间的采样值, 以保证采样不会滑码或误码。一般 UART 一帧的数据位数为 8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。

         UART 的接收数据时序为:当检测到数据的下降沿时,表明线路上有数据进行传输, 这时计数器 CNT 开始计数,当计数器为 24=16+8 时,采样的值为第 0 位数据;当计数器的值为 40 时,采样的值为第 1 位数据,依此类推,进行后面 6 个数据的采样。如果需要进行奇偶校验,则当计数器的值为 152 时,采样的值即为奇偶位;当计数器的值为 168 时,采样的值为"1"表示停止位,一帧数据接收完成。

         一个标准的 10 位异步串行通信协议(包含 1 个起始位、1 个停止位和 8 个数据位) 收发时序,如图 2.2.5 所示:


11.png


         波特率发生器:波特率是衡量数据传输速率的指标,表示每秒传送数据的字符数, 单位为 Baud。UART 的接收和发送是按照相同的波特率进行收发的。波特率发生器产生 的时钟频率不是波特率时钟频率,而是波特率时钟频率的 16 倍,目的是为在接收时进 行精确地采样,以提取出异步的串行数据。根据给定的晶振时钟和要求的波特率,可以算出波特率分频计数值。

2.3.4 一氧化碳传感器

12.png


         我们采用的 MQ-7 一氧化碳传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。采用高低温循环检测方式,低温(1.5V 加热)检测一氧化碳,传感器的电导率随空气中一氧化碳气体浓度增加而增大,高温(5.0V 加热)清洗低温时吸附的杂散气体。使用简单的电路即可将电导率的变化,转换为与该气体浓度相对应 的输出信号。传感器对一氧化碳的灵敏度高,这种传感器可检测多种含一氧化碳的气 体,是一款适合多种应用的低成本传感器。

特点:
1、具有信号输出指示。
2、双路信号输出(模拟量输出及 TTL 电平输出)
3、TTL 输出有效信号为低电平。(当输出低电平时信号灯亮)
4、模拟量输出 0~5V 电压,浓度越高电压越高。
5、对一氧化碳具有很高的灵敏度和良好的选择性。
6、具有长期的使用寿命和可靠的稳定性通过传感器回传的数据,进行分析,对一氧化碳有毒气体进行检,适应多种环境下的气体检测。


2.3.5 超声波模块


13.png



模块工作原理:

1、采用 IO 触发测距,给至少 10us 的高电平信号;(发送周期不小于 60ms)
2、模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
3、有信号返回,通过 IO 输出一高电平,高电平持续的时间就是超声波从发 射 到返回的时间;
4、测试距离=(高电平时间*声速(340M/S))/2;

         超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而采用超声波 模块进行距离的测量。HC-SR04 是一款性能稳定的超声波传感器,用于距离的测 量。该模块发出超声波时,并不是直线发出,而是以扇形的形式发出。具体使用时, 左右两边的障碍物也会对结果产生影响。超声波模块适用于障碍物与超声波模块角 度小于 15 度之内,否则超声波将发生折射现象,无法精确测量距离。

时序:
1、提供 TRING 一个 10us 以上的的脉冲触发信号;
2、模块内部将发出 8 个 40Khz 周期的电平并检测回波;
3、当有回响信号时,通过 ECHO 输出一个高电平,高电平持续时间就是超声波发 射和收回的时间间隔。


14.png



电气特性及注意事项:
1、建议测量周期 60MS 以上,以防止发射信号对回响信号影响;
2、测距时,被测物体面积要大于 0.5 平方米且平面尽量平整;
3、电源供电不要低于 5V,否则会影响测试结果。


15.png



2.3.6 火焰模块


16.png


         该模块可以检测火焰或者波长在 760 纳米~1100 纳米范围内的光源,探测角度在 60 度左右,对火焰光谱特别灵敏(灵敏度可通过电位器调节),对火焰的探测距离:跟灵敏度和火焰强度有关,一般 1m 以内适用(以打火机 火焰测试,半米内能够触发传感器),工作电压 3.3V-5V。
输出形式 :
1、模拟量电压输出;
2、数字开关量输出(0 和 1)当附近有火源时输出低电平。

通过火焰传感器,对垃圾桶内微小火源进行检测,预防火灾的发生。

2.3.7 语音播报模块

17.png


模块工作原理:

         此模块是一个提供串口控制的 MP3 模块,模块有多种控制模式,完美的集成了 MP3、MAV 的硬 解码。同时软件支持 USB/TF 驱动,支持 FAT16\FAT32 文件系统。在此我们使用其串口模式对其进行控制,模块功能完善,有广播语插播功能、音频 文件播放功能等,在此我们通过简单的串口指令即可完成播放指定的语音。其中 USB 当作读卡器使用,将需要播放的语音存至 USB 中,通过 UART 通信协议将语音指令发送至板子中进行测试。用 3.3V-5.4V 电压、9600Hz 波特率。另外该芯片 也是深度定制的产品,专为 USB 读卡器,TF 卡播放器固定播放领域开发的低成本解决方案。广泛应用于车载导航语音播报、多路语音告警或设备操作引导语音、机电设备故障自动报警,音乐播放等领域。

技术参数:
1、支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
2、24 位 DAC 输出,动态范围支持 90dB,信噪比支持 85dB
3、完全支持 FAT16、FAT32 文件系统,最大支持 32G 的 U 盘,TF 卡
4、多 种控制模式,串口模式、AD 按键控制模式
5、广播语插播功能,可以暂停正在播放的背景音乐
6、音频数据按文件夹排序,最多支持 255 个文件夹,每个文件夹可以分配 1000 首歌曲
7、30 级音量可调,5 级 EQ 可调
8、连接电脑可以显示盘符进行更新内容
9、可以通过单片机串口进行控制播放指定的音乐
10、在按键模式下,可以进行播放模式选择:单曲循环,大循环。

硬件参数:语音播报模块的硬件参数


18.png


2.3.8 语音识别模块


19.png


模块介绍:

         1.模块采用非特定人语音识别技术,可对用户的语音进行识别。支持中文音素识别, 可任意指定中文识别词条(小于 8 个字)。单次识别可支持 1000 条以上的语音命令,并支持识别命令分组。可对 0.2 秒至 3.2 秒的语音命令进行响应,响应时间约为 0.4 秒至 1.2 秒。安静环境下,标准普通话,识别率大于 95%。LD3320 是一颗基于非特定人语音识别 (SI-ASR:Speaker-Independent Automatic Speech Recognition)技术的语音识别/声控芯片。提供了真正的单芯片语音识别解 决方案。
         2. LD3320 芯片上集成了高精度的 A/D 和 D/A 接口,不再需要外接辅助的 Flash 和 RAM,即可以实现语音识别/声控/人机对话功能。并且识别的关键词语列表是可以动态编辑的。
         3.基于 LD3320,可以在任何的电子产品中,甚至包括简单的 51 作为主控芯片的系统中,轻松实现语音识别/声控/人机对话功能。为所有的电子产品增加 VUI(Voice User Interface)语音用户操作界面。

硬件参数:

1.内置单声道 mono 16-bit A/D 模数转换
2.内置双声道 stereo 16-bit D/A 数模转换
3.内置 20mW 双声道耳机放大器输出
4.内置 550mW 单声道扬声器放大器输出
5.支持并行接口或者 SPI 接口
6.内置锁相电路 PLL,输入主控时钟频率为 2MHz - 34MHz
7.工作电压:(VDD: for internal core) 3.3V
8. 48pin 的 QFN 7*7 标准封装
9.省电模式耗电:1uA


2.3.8 串口屏模块


20.png


串口屏原理:

         串口屏将复杂的事情变简单,用户只需要通过串口发送一个命令字符串完成汉字以及图片的显示。串口屏是由液晶屏+单片机+ 存储器三部分构成的,串口是单片机中 最普遍的一种接口,具有广泛的用户基础和资料普及。常言道,把复杂的事情变简单就是价值,串口屏正遵循了这个原则,只需要通过串口发送一个命令字符串,比如 "CLS(1);" 就可以将屏幕清成红色;同样发送其他的命令就可以完成汉字以及图片的 显示。


21.png




通信原理 :

         在串口屏与 FPGA 信息交互时使用了 UART 通信协议。计算机和外部设备 的连接,基本上使用了两类接口:串行接口和并行接口。并行接口是指数据的各个位同时进行传送,其特点是传输速度快,但当传输距离远、位数又多时,通信线 路变复杂且成本提高。串行通信是指数据一位位地顺序传送,其特点是适合于 远 距离通信,通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本。当串口屏被操作者触摸,会有一系列指令数据发出,将发出的信息传送给 FPGA 进行综合处理,FPGA 也会反馈给串口屏一系列数据。在这样的信息传输过程中是以 UART 通讯协议进行通信的。

硬件连接:

         串口屏使用四个管脚。+5V 和 GND 及其供电管脚,直接接上 5V 电源,系统即可点亮并演示可实现上述相关功能。RX 是串口屏的数据接收管脚, 需要连接 TTL 线的 TX 数据发送端。TX 是串口屏的数据发送管脚,需要连接 TTL 线的 RX 数据接收端。

2.3.9 USB 摄像头模块



22.png




         该 USB 摄像头免驱动,可在 FPGA 开发板上调用对应的 python API 来控制摄像 头使用。在摄像头采集模块中,我们将 python 内部 opencv 模块的图像处理函数加载至摄像头端,当摄像头采集视频流时可在显示屏实时观看所采集到的视频流。


第三部分 完成情况及性能参数 /Final Design & Performance Parameters


23.png


         本系统由摄像头模块、显示器模块、语音识别和语音播报模块、电机驱动模块、传感器等共同组成。具有摄像头拍照识别垃圾种类、实时检测温度、火焰、有害气体、垃圾含量多少、满桶警告、特殊情况短信提醒、语音播报、语音识别以及屏幕实时显示等功能,同时附加了语音识别和语音播报功能增加识别的准确率。市民将垃圾投入到垃圾桶后,桶内的摄像头会对垃圾进行拍照,通过数据库对比识别垃圾的种类,判定结果通过开发板回传至垃圾桶,控制舵机转动隔板完成分类。


可实现功能:

(1)在图像识别模式下,可以对可回收垃圾进行二次分类回收利用, 可识别塑料、金属、玻璃、硬纸板、废纸并进行分类;
(2)在语音识别模式下,可以 直接对一些生活中常见垃圾进行可回收垃、厨余垃分类圾、其他垃圾、有害垃圾四种分类,投入相应垃圾桶内。

目前,两个功能均已实现且可以随意切换使用,各模块之间按功能连接。

         传感器采集得到的数据经过处理之后发送给显示器模块,在串口屏显示终端显示垃圾桶内垃圾含量、系统安全性以及传感器实时监控环境数据。

两种垃圾识别模式:

语音识别模式和图像识别模式

(1)使用图像识别,可以对可 回收垃圾进行二次识别;
(2)使用语音识别模式,可以直接对一些生活中常见垃圾进行可回收垃、厨余垃圾、其他垃圾、有害垃圾四种识别。

将传感器检测一氧化碳、火焰传感器、红外温度的数据经过分析过后作是否开启 的报警提示信号。

系统还可以根据垃圾桶内垃圾的含量、是否出现火焰、存在有害气体等,通过短 信发送给管理员进行及时处理。


3.1 摄像头模块
         
         在摄像头采集模块中,我们将 python 内部 opencv 模块的图像处理函数加载至摄像头端,当摄像头采集视频流时可在显示屏实时观看所采集到的视频流。摄像头采集效 果如下所示:

24.png

25.png


3.2 语音识别模块

         我们可以很简便的配置语音命令,实现语音识别功能。首先需要通过软件设置词条,后将词条烧录至模块中。其次,利用 UART 通信协议发送启动指令驱动语音识别模块,当使用者对模块说话时,模块对说出的话进行识别并且与烧录进去的词条进行对比,若两者一致,则会向开发板发送信号,信号经过处理后控制震动和语音播报的 开关。


26.png


3.3 语音播报模块

         语音模块通过串口发送指令控制模块外置 SD 卡或 U 盘中预先存储的语音及音乐,串口屏发送过来的指令使用状态机检测,然后触发语音发送指令模块,触发语音播报。RTL 图如图 3.16 所示。

         完全支持 FAT16、FAT32 文件系统,最大支持 32G 的 U 盘,TF 卡。U 盘和 SD 卡, 需要格式化为 FAT16、FAT32 文件系统。

         通讯格式:起始位 0x7E + len 后面字节个数 + 命令(播放或暂停) + 查询歌曲序号(数据高字节) + 查询数据低字节 + 结束位 0xEF。

         直接发送的指令, 每发一条正确指令都会返回 “OK”错误返回“err”,修改指 令第三、四位十六进制数据,即可播放指定文件夹语音。如图 3.17 所示:


27.png


         在此我们采用的指定文件夹播放的方式进行播放,在外置存储器中新建文件夹, 文件夹名必须为 01-99 文件号,文件内总曲目名字必须改 1-255。建好文件夹并且存储好 要播放的语音后,就可以通过开发板发送播报指令,语音模块便开始工作播报语音。若想要播放 01 文件夹中文件名为 008 的语音,则发送指令:7E 04 41 01 08 EF(其 中 7E 为起始地址,04 为位长度,41 为指令,01 08 表示 01 文件夹内文件名为 008 的语音)。

3.4 显示模块


28.png

29.png


通过 pynq 实现对相关资源进行调用进行实现图片的显示功能。

3.5 舵机驱动模块

         本系统设计中所使用的数字电机为如图所示。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率,而不受负载变化的影响,当步进驱动器接收到 一个脉冲信号,它就驱动步进电机按设定的方向转动一定的角度,它的旋转的角度可以通过控制脉冲的占空比进行改变调整。位置控制是通过发脉冲来控制的,位置控制模 式一般是通过外部输入的脉冲的频率来确定转动速度的大小,通过脉冲的个数来确定转动的角度。一个周期是 20MS,一个周期的高脉冲范围在 0 到 2.5MS 其对应的舵机转动角度范围是 0 到 270 度。只要设定相应转动角度对应的计数值,则可以实现相应的角度旋转。其 RTL 如图 3.所示:



30.png


3.6 串口屏显示模块

         我们在串口屏与 FPGA 信息交互时使用了 UART 通信协议。计算机和外部设备的连接,基本上使用了两类接口:串行接口和并行接口。并行接口是指数 据的各个位同时进行传送,其特点是传输速度快,但当传输距离远、位数又多时,通信线路变复杂且成本提高。串行通信是指数据一位位地顺序传送,其特点是适合于远距离通信, 通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本。当传感器测得数据,会有指令数据通过 UART 通信协议发出,将传感器发出的信息传送给 FPGA 进行综合处理,串口屏会根据接收到的信息输出相应的数值。在这样的信息传输 过程中是以 UART 通讯协议进行通信的。

         我们的作品主要是通过串口屏进行显示,我们采用UART通信协议的接受模块接收, 根据发来的传感器检测的数据,使 FPGA 中状态机的状态与串口屏的显示界面一致,会 向串口屏发送相应的显示信息进行显示,例如垃圾桶内温度、桶内垃圾含量、是否检 测到火焰或者有害气体等。图 3.5 为串口屏指令接收模块 RTL 图:


31.png


         本模块负责接收串口屏发来的信息。我们可以在界面的看到垃圾桶内环境监测, 环境正常显示绿色的数值,当出现异常时,显示红色的数值,如图 3.6 所示。

3.7 MCU90615 红外测温模块[tr]此 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 图 如图 3.7 所示:



32.png


3.8 GSM 短信模块

         SIM800A 模块通过发送和接受国际电信联盟规定的 AT 指令集来进行控制和数据接收,本系统使用了 UART 通信协议的发送模块进行指令的发送。本系统短信模块的功能主要体现在 GSM 接收到 DES 密码模块产生的密码后通过短信发送给管理员,管理员通过输入 GSM 产生的密码,检测到正确信号后,天窗打开。此外,该模块 1 还设有温度报警模块,通过红外体温传感器检测温度,当温度大于 38 摄氏度时,则发送短信提醒。RTL 图如图 3.8 所示:



33.png


3.9 超声波测距模块

         该模块我们通过超声波传感器实时的检测垃圾桶内垃圾含量,进行实时数据监测和满桶警报当垃圾桶即将装满时会及时发送短信至垃圾管理员。可以实时在串口屏上显示垃圾桶内垃圾含量,并且当垃圾桶内可用高度小于 5cm 时认定垃圾桶即将装满时 会及时并自动发送短信至垃圾管理员。RTL 图如图 3.9 所示:



34.png


3.10 UART 通信协议

         Uart 通信协议每次只能发送和接收 8 位数据,而投入到实际使用当中,往往发 送和接收的不只是 8 位数据,可能是 48 位,可能是 64 位,也有可能是 72 位。此时, 发送和接收的处理方法如下。

         1> 发送:
         例如:发送 7E 04 41 01 08 EF 将这 48 位数据强行拆分成 6 个 8 位数据,分别 用 6 个 reg 型寄存器寄存。也就是说将 7E 04 41 01 08 EF 这一条指令拆为 7E、 04、41、01、08、EF 6 条指令,然后将其按顺序进 行发送。看起来好像很容易,就 只是将这 6 条指令按顺序发送就可以了,但是如何才能让其按顺序发送,这里边牵扯 到了很多使能端的问题。在 此,由 Uart 通信协议受到了启发,Uart 通信协议的发 送模块中,就是将 并行的 8 位数据转化成串行将其一位一位地输出,同样的道理, 将 7E、04、41、01、08、EF 分别看成 6 个整体,每个整体有 8 位,将这并行的 6 个 整体转化成串行将其一个一个发送即可。而每两个整体发送中间的间隔是需要计算的, Uart 通信协议一共有 10 位,1 位起始位,1 位终止位和 8 位数据位。那每两个整体发 送中间就间隔着发送 10 位数据,通过计算 50MHz/9600Hz * 10 = 52084。建立一个计 数器,每当计数器计数到 52084 时,选择一个需要发送的整体,将其传送给发送模块 的输入端,然后进行发送。对于发送模块,将并行的位数据转化成串行一位一位输出 即可。

         2> 接收:
         接收多位数据相对来说比较简单,一共接收多少位数据便设置一个多少位的移位 寄存器(例如需要接收 48 位数据,便设置一个 48 位的移位寄存器),使用 Uart 接收模块每次接收 8 位数据,然后将这 8 位数据存储到移位寄存器当中,每接收到一 次数据,移位寄存器向左移 8 位,接收完毕后停止并且将寄存器中的数据输出便可完 成接收。



35.png



第四部分 总结 /Conclusions

4.1 主要创新点
(1)在使用 PYNQ 核心板作为主要处理器处理数据时,使用 hls 对卷积和池化层的硬 件电路设计,实现了 cnn 卷积神经网络在 pynq 的复现。
(2)对于已经训练的垃圾进行识别其准确率可达 90%以上。
(3)增加了语音识别和图像识别两种模式,两种操作随意切换,适用于不同场景,对 应相同的功能,增加识别精准度。
(4)增加自启动功能。
(5)使用硬件加速,提高了识别速度。
(6)增加卷积池化的硬件电路设计,增强网络实现的效率。
(7)增加传感器进行环境监测,数据实时显示,保证出现异常情况进行报警,数据及 时反馈给管理员。
(8)利用摄像头采集垃圾的图像后 PYNQ 使用在 PC 端训练并保存的神经网络在该数据 集下的权值。


4.2 可扩展之处

(1)扩大数据集,对不同种类垃圾图片进行收集、训练,增加可识别垃圾种类,提高 识别精准度。
(2)对于云台旋转的角度精确值可以更为精确,通过对于器件、参数的调整,预计达 到肉眼不可见的误差。
(3)可以升级使用更加高级的算法和网络使得分类更加的精准和高效。


         该作品初衷是想为社会做出一些贡献,减轻日益剧增的环境压力。现如 今垃圾分类已经成为加强生态文明建设、促进绿色发展的重要举措。但实际上,我国城市生活垃圾分类推广工作也历时十几年,但效果依然不显著。我国经济的高速发展同时带来了社会资源的过度使用,所以对国家的长久发展和环境保护事业而言,垃圾分类是一项必须推进的工作。既有利于资源的循环利用,也有利于城市的人居环境, 如果成功推行,所有人类都将是受益者。然而有人提出如此严格的规章制度突然降临, 难免给公众带来显著的不便,违规者与监管者之间的冲突将会经常出现,社会很可能要付出很高的成本,才能维持新规的有效性,所以设计这个作品旨在解决当前社会问题,节约社会资源,为公众带来便利。

更多回帖

发帖
×
20
完善资料,
赚取积分