參賽作品分享-基於PYNQ的智能垃圾分類箱

這個作品算是我大學期間的end show吧,其實也算是第一次做那麼大的工程,逛博客看到別人在亂髮我們的作品,也是無語…
但是還是歡迎大家評論交流。

版權聲明

本設計由本人及其團隊共同完成,其他出處標註原創,均爲faker。
自證截圖工程文件夾,帶製作,可信賴。
在這裏插入圖片描述

項目視頻

該項目參加了2019年全國大學生FPGA創新設計大賽,獲得一等獎。視頻鏈接指路。

https://www.bilibili.com/video/BV1VJ411R7DE/

2019FPGA創新設計大賽-基於PYNQ的智能垃圾分類箱

第一部分 設計概述 /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)可以升級使用更加高級的算法和網絡使得分類更加的精準和高效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章