大俠好,歡迎來到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。“煮酒言歡”進入IC技術(shù)圈,這里有近100個IC技術(shù)公眾號。
第一部分 設計概述
1.1 設計目的
隨著現(xiàn)代社會的高速發(fā)展,其帶來的環(huán)境壓力也越來越大,對于日益劇增的垃圾產(chǎn)量已經(jīng)成為世界關(guān)注的焦點。垃圾分類成為制約我國環(huán)保產(chǎn)業(yè)發(fā)展的瓶頸,也是造成環(huán)境污染、資源再利用困難的根源之一,所以推進垃圾分類刻不容緩。然而垃圾分類總是 “屢試屢敗”工作推進難度巨大,“垃圾分類難”也同樣困擾著大眾,為了緩解垃圾分類的問題,減輕社會和居民的壓力,如果可以實現(xiàn)可回收垃圾二次分類,對生活垃圾自主分類就顯得尤為重要。于此,我們決定設計這樣一個作品—智能識別自動投遞分類垃圾箱,方便垃圾回收和利用。
本作品是基于賽靈思公司的 pynq 開發(fā)平臺設計,同時結(jié)合了機械控制和神經(jīng)網(wǎng)絡等知識,擁有可以自主識別垃圾并分類的功能,以 FPGA 作為核心處理器最大程度的實現(xiàn)了垃圾識別與分類。該智能垃圾桶將人工分類垃圾轉(zhuǎn)為智能化,大大節(jié)省了人力、物力,降低垃圾分類的煩惱,具有長遠的利用價值和非常巨大的市場前景。該作品有兩種操作模式,可在圖像識別和語音識別兩種模式之間自由切換。
1.2 應用領(lǐng)域
本作品應用前景廣泛,智能識別自動分類系統(tǒng)實現(xiàn)用攝像頭取代了人類的眼睛,人工智能取代了大腦,電機取代了雙手。實用性強且可使用范圍廣,既推動我國環(huán)保事業(yè),又減輕社會對垃圾處理的壓力,節(jié)約資源降低處理垃圾資金投入。
1.3 適用范圍
有效減少環(huán)境污染,提高資源的再利用,可以適用于生活中的方方面面。例如,在家庭中使用,解決居民垃圾分類的煩惱,或是運用各大商場或人流量密集的地方,可以大大緩解垃圾分類的問題,減輕社會環(huán)境壓力。此外,本作品可適用于可回收垃圾的二次分類,即加大資源的回收利用,有著促進社會可持續(xù)發(fā)展具有一定的市場經(jīng)濟價值。
第二部分 系統(tǒng)組成及功能說明
2.1 系統(tǒng)介紹
本系統(tǒng)主要由 Xilinx Zynq-7000 系列的 PYNQ-Z2 開發(fā)板作為主控中心,主要包含:攝像頭采集模塊、圖像處理模塊、實時顯示模塊、實時數(shù)據(jù)采集模塊、信息提醒 發(fā)送模塊、驅(qū)動控制模塊組成??傮w結(jié)構(gòu)如圖 2.1 所示。
流程圖講解:主控 PYNQ 開發(fā)板主要為提供神經(jīng)網(wǎng)絡的加速識別,搭載 USB 的網(wǎng)絡攝像頭進行數(shù)據(jù)的采集和功能參數(shù)的顯示,同時在這個 ARM+FPGA 平臺,為了最大化主控板優(yōu)勢,我們針對軟件算法進行了相應的硬件實現(xiàn)進行提速,解決了在有限的資源內(nèi)實現(xiàn)了資源 利用和效率的最大化,同時在 PYNQ 端,為了保證產(chǎn)品的功能完整性,設計了兩種識別 模式,圖像識別模式和語音識別模式。
待識別完成后,我們將通過設置的通信協(xié)議進行數(shù)據(jù)的傳輸,使得輔助開發(fā)板可以進行自動投遞。輔助開發(fā)板主要對各種傳感器進行數(shù)據(jù)采集、數(shù)據(jù)分析、數(shù)據(jù)處理、控制設備的驅(qū)動、以及串口通信,實現(xiàn)不同開發(fā)板之間信息傳輸。
接收所識別垃圾的信息,控制數(shù)字舵機的轉(zhuǎn)動,將垃圾投入相應垃圾桶內(nèi)。通過 FPGA 開發(fā)板將溫度傳感器測得的垃圾桶內(nèi)溫度值、超聲波測得的桶內(nèi)垃圾含量、是否存在有害氣體、是否檢測到火焰等數(shù)據(jù)經(jīng)過處理發(fā)送給顯示模塊,最終在顯示終端顯示攝像頭采集得到的照片、垃圾桶內(nèi)溫度、桶內(nèi)垃圾含量、系統(tǒng)目前狀態(tài)等數(shù)據(jù)。
當檢測到火焰,有害氣體以及滿桶警告時,將通過短信模塊給管理員發(fā)送短信提醒。垃圾桶內(nèi)部空間大,外部結(jié)構(gòu)穩(wěn)定,設置安全提示和自我保護功能,超聲波和紅外傳感器實現(xiàn)智能檢測桶內(nèi)環(huán)境,遇到特殊情況,系統(tǒng)將自動發(fā)送信息至管理員進行相應的處理。
2.2 FPGA 開發(fā)板
本系統(tǒng)主要由 Xilinx Zynq-7000 系列的 PYNQ-Z2 開發(fā)板作為主控中心,如圖2.2.1 所示。其主芯片為 XC7Z020CLG400-1,該芯片是 FPGA+ARM 架構(gòu)且可用 python 開發(fā),同時提供了豐富的 python API 和完善的硬件設計流程,能實現(xiàn)較復雜的邏輯設計,13300 個邏輯 Slices,高達 650MHZ 的工作頻率,630K 的快速 Block RAM,220 個 DSP 切片,資 源十分豐富。同時使用 Spartan6 核心開發(fā)板作為輔助顯示控制中心,如圖 2.3 所示。
2.3 各模塊介紹
2.3.1 數(shù)字電機模塊
數(shù)字電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰?a class="article-link" target="_blank" href="/baike/1549138.html">開環(huán)控制元步進電機件。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率,而不受負載變化的影響, 當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設定的方向轉(zhuǎn)動一定的角度,它的旋轉(zhuǎn)的角度可以通過控制脈沖的占空比進行改變調(diào)整。
如圖 2.3.1 所示, 這是數(shù)字電機模塊圖。DS3225 數(shù)字舵機是電路板(微小控制)、防水防燒(有硅膠圈)、金屬齒輪(不 容易掃齒)、支持高電壓(6v~7.4v 可以直接 2s 鋰電供電)、中間金屬(散熱效果很好)
本系統(tǒng)利用數(shù)字電機控制垃圾桶的底部旋轉(zhuǎn)和識別云臺翻轉(zhuǎn)。
2.3.2 GY-MCU90615 模塊
GY-MCU90615 是一款低成本紅外溫度模塊。工作電壓 3-5v 功耗小,體積小。其 工作原理,是通過 FPGA 讀取紅外溫度度數(shù)據(jù),串口(TTL 電平) 通信方式輸出。串 口的波特率有 9600bps 與 115200bps 有連續(xù)輸出與詢問輸出兩種方式,可適應不同 的工作環(huán)境產(chǎn)品應用:人體測溫、發(fā)熱物體表面溫度檢測、非接觸溫度檢測。
①.Byte0: 0x5A 幀頭標志②.Byte1: 0x5A 幀頭標志③.Byte2: 0X45 本幀數(shù)據(jù)類型(0X45:溫度數(shù)據(jù))④.Byte3: 0x04 數(shù)據(jù)量(以下 4 個數(shù)據(jù) 2 組為例)⑤.Byte4: 0x00~0xFF 數(shù)據(jù) 1 高 8 位⑥.Byte5: 0x00~0xFF 數(shù)據(jù) 1 低 8 位⑦.Byte6: 0x00~0xFF 數(shù)據(jù) 2 高 8 位⑧.Byte7: 0x00~0xFF 數(shù)據(jù) 2 低 8 位⑨.Byte8: 0x00~0xFF 校驗和(前面數(shù)據(jù)累加和,僅留低 8 位)
2.3.3 GSM 模塊
本模塊設計 UART 通信協(xié)議與 SIM800A 通信,用于收發(fā)短信和存儲短信內(nèi)容。
SIM800A 模塊簡介SIM800A 模塊通過發(fā)送和接受國際電信聯(lián)盟規(guī)定的 AT 指令集來進行控制和數(shù)據(jù)接收,本系統(tǒng)用到的 AT 指令集有:
UART 協(xié)議簡述:通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作 UART,是一種異步收發(fā)傳輸器。將數(shù)據(jù)由串行通信與并行通信間作傳輸轉(zhuǎn)換,作為并行輸入成為串行輸出的芯片 UART 是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。UART 作為異步串口通信協(xié)議的一種,工作原理是將傳輸數(shù)據(jù)的每個字符一位接一 位地傳輸。其中每一位(Bit)的意義如下:起始位:先發(fā)出一個邏輯“0”的信號,表示傳輸字符的開始。數(shù)據(jù)位:緊接著起始位之后。數(shù)據(jù)位的個數(shù)可以是 4、5、6、7、8 等,構(gòu)成一個 字符。通常采用 ASCII 碼。從最低位開始傳送,靠時鐘定位。奇偶校驗位:數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)應為偶數(shù)(偶校驗)或奇數(shù)(奇 校驗),以此來校驗數(shù)據(jù)傳送的正確性。停止位:它是一個字符數(shù)據(jù)的結(jié)束標志??梢允?1 位、1.5 位、2 位的高電平。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢??臻e位:處于邏輯“1”狀態(tài),表示當前線路上沒有數(shù)據(jù)傳送。UART 協(xié)議傳輸時序如圖 2.3.4 所示:
發(fā)送數(shù)據(jù)過程:空閑狀態(tài),線路處于高電位;當收到發(fā)送數(shù)據(jù)指令后,拉低線路一個數(shù)據(jù)位的時間 T,接著數(shù)據(jù)按低位到高位依次發(fā)送,數(shù)據(jù)發(fā)送完畢后,接著發(fā)送奇偶校驗位和停止位(停止位為高電位),一幀數(shù)據(jù)發(fā)送結(jié)束。
接收數(shù)據(jù)過程:空閑狀態(tài),線路處于高電位;當檢測到線路的下降沿(線路電位由高電位變?yōu)榈碗娢唬r說明線路有數(shù)據(jù)傳輸,按照約定的波特率從低位到高位接收數(shù)據(jù),數(shù)據(jù)接收完畢后,接著接收并比較奇偶校驗位是否正確,如果正確則通知后續(xù) 設備準備接收數(shù)據(jù)或存入緩存。由于 UART 是異步傳輸,沒有傳輸同步時鐘。為了能保證數(shù)據(jù)傳輸?shù)恼_性,UART 采用 16 倍數(shù)據(jù)波特率的時鐘進行采樣。
每個數(shù)據(jù)有 16 個時鐘采樣,取中間的采樣值, 以保證采樣不會滑碼或誤碼。一般 UART 一幀的數(shù)據(jù)位數(shù)為 8,這樣即使每個數(shù)據(jù)有一個時鐘的誤差,接收端也能正確地采樣到數(shù)據(jù)。
UART 的接收數(shù)據(jù)時序為:當檢測到數(shù)據(jù)的下降沿時,表明線路上有數(shù)據(jù)進行傳輸, 這時計數(shù)器 CNT 開始計數(shù),當計數(shù)器為 24=16+8 時,采樣的值為第 0 位數(shù)據(jù);當計數(shù)器的值為 40 時,采樣的值為第 1 位數(shù)據(jù),依此類推,進行后面 6 個數(shù)據(jù)的采樣。如果需要進行奇偶校驗,則當計數(shù)器的值為 152 時,采樣的值即為奇偶位;當計數(shù)器的值為 168 時,采樣的值為"1"表示停止位,一幀數(shù)據(jù)接收完成。一個標準的 10 位異步串行通信協(xié)議(包含 1 個起始位、1 個停止位和 8 個數(shù)據(jù)位) 收發(fā)時序,如圖 2.2.5 所示:
波特率發(fā)生器:波特率是衡量數(shù)據(jù)傳輸速率的指標,表示每秒傳送數(shù)據(jù)的字符數(shù), 單位為 Baud。UART 的接收和發(fā)送是按照相同的波特率進行收發(fā)的。波特率發(fā)生器產(chǎn)生 的時鐘頻率不是波特率時鐘頻率,而是波特率時鐘頻率的 16 倍,目的是為在接收時進 行精確地采樣,以提取出異步的串行數(shù)據(jù)。根據(jù)給定的晶振時鐘和要求的波特率,可以算出波特率分頻計數(shù)值。
2.3.4 一氧化碳傳感器
我們采用的 MQ-7 一氧化碳傳感器所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫(SnO2)。采用高低溫循環(huán)檢測方式,低溫(1.5V 加熱)檢測一氧化碳,傳感器的電導率隨空氣中一氧化碳氣體濃度增加而增大,高溫(5.0V 加熱)清洗低溫時吸附的雜散氣體。使用簡單的電路即可將電導率的變化,轉(zhuǎn)換為與該氣體濃度相對應 的輸出信號。傳感器對一氧化碳的靈敏度高,這種傳感器可檢測多種含一氧化碳的氣 體,是一款適合多種應用的低成本傳感器。
特點:1、具有信號輸出指示。
2、雙路信號輸出(模擬量輸出及 TTL 電平輸出)
3、TTL 輸出有效信號為低電平。(當輸出低電平時信號燈亮)
4、模擬量輸出 0~5V 電壓,濃度越高電壓越高。
5、對一氧化碳具有很高的靈敏度和良好的選擇性。
6、具有長期的使用壽命和可靠的穩(wěn)定性通過傳感器回傳的數(shù)據(jù),進行分析,對一氧化碳有毒氣體進行檢,適應多種環(huán)境下的氣體檢測。
2.3.5 超聲波模塊
模塊工作原理:1、采用 IO 觸發(fā)測距,給至少 10us 的高電平信號;(發(fā)送周期不小于 60ms)2、模塊自動發(fā)送 8 個 40khz 的方波,自動檢測是否有信號返回;3、有信號返回,通過 IO 輸出一高電平,高電平持續(xù)的時間就是超聲波從發(fā) 射 到返回的時間;4、測試距離=(高電平時間*聲速(340M/S))/2;超聲波指向性強,能量消耗緩慢,在介質(zhì)中傳播的距離較遠,因而采用超聲波 模塊進行距離的測量。
HC-SR04 是一款性能穩(wěn)定的超聲波傳感器,用于距離的測 量。該模塊發(fā)出超聲波時,并不是直線發(fā)出,而是以扇形的形式發(fā)出。具體使用時, 左右兩邊的障礙物也會對結(jié)果產(chǎn)生影響。超聲波模塊適用于障礙物與超聲波模塊角 度小于 15 度之內(nèi),否則超聲波將發(fā)生折射現(xiàn)象,無法精確測量距離。
時序:1、提供 TRING 一個 10us 以上的的脈沖觸發(fā)信號;2、模塊內(nèi)部將發(fā)出 8 個 40Khz 周期的電平并檢測回波;3、當有回響信號時,通過 ECHO 輸出一個高電平,高電平持續(xù)時間就是超聲波發(fā) 射和收回的時間間隔。
電氣特性及注意事項: 1、建議測量周期 60MS 以上,以防止發(fā)射信號對回響信號影響;2、測距時,被測物體面積要大于 0.5 平方米且平面盡量平整;3、電源供電不要低于 5V,否則會影響測試結(jié)果。
2.3.6 火焰模塊
該模塊可以檢測火焰或者波長在 760 納米~1100 納米范圍內(nèi)的光源,探測角度在 60 度左右,對火焰光譜特別靈敏(靈敏度可通過電位器調(diào)節(jié)),對火焰的探測距離:跟靈敏度和火焰強度有關(guān),一般 1m 以內(nèi)適用(以打火機 火焰測試,半米內(nèi)能夠觸發(fā)傳感器),工作電壓 3.3V-5V。輸出形式 :1、模擬量電壓輸出;2、數(shù)字開關(guān)量輸出(0 和 1)當附近有火源時輸出低電平。通過火焰?zhèn)鞲衅?/a>,對垃圾桶內(nèi)微小火源進行檢測,預防火災的發(fā)生。2.3.7 語音播報模塊
模塊工作原理:此模塊是一個提供串口控制的 MP3 模塊,模塊有多種控制模式,完美的集成了 MP3、MAV 的硬 解碼。同時軟件支持 USB/TF 驅(qū)動,支持 FAT16FAT32 文件系統(tǒng)。在此我們使用其串口模式對其進行控制,模塊功能完善,有廣播語插播功能、音頻 文件播放功能等,在此我們通過簡單的串口指令即可完成播放指定的語音。其中 USB 當作讀卡器使用,將需要播放的語音存至 USB 中,通過 UART 通信協(xié)議將語音指令發(fā)送至板子中進行測試。
用 3.3V-5.4V 電壓、9600Hz 波特率。另外該芯片 也是深度定制的產(chǎn)品,專為 USB 讀卡器,TF 卡播放器固定播放領(lǐng)域開發(fā)的低成本解決方案。廣泛應用于車載導航語音播報、多路語音告警或設備操作引導語音、機電設備故障自動報警,音樂播放等領(lǐng)域。
技術(shù)參數(shù):1、支持采樣率(KHz):8/11.025/12/16/22.05/24/32/44.1/482、24 位 DAC 輸出,動態(tài)范圍支持 90dB,信噪比支持 85dB3、完全支持 FAT16、FAT32 文件系統(tǒng),最大支持 32G 的 U 盤,TF 卡4、多 種控制模式,串口模式、AD 按鍵控制模式5、廣播語插播功能,可以暫停正在播放的背景音樂6、音頻數(shù)據(jù)按文件夾排序,最多支持 255 個文件夾,每個文件夾可以分配 1000 首歌曲7、30 級音量可調(diào),5 級 EQ 可調(diào)8、連接電腦可以顯示盤符進行更新內(nèi)容9、可以通過單片機串口進行控制播放指定的音樂10、在按鍵模式下,可以進行播放模式選擇:單曲循環(huán),大循環(huán)。硬件參數(shù):語音播報模塊的硬件參數(shù)
2.3.8 語音識別模塊
模塊介紹:
1.模塊采用非特定人語音識別技術(shù),可對用戶的語音進行識別。支持中文音素識別, 可任意指定中文識別詞條(小于 8 個字)。單次識別可支持 1000 條以上的語音命令,并支持識別命令分組。可對 0.2 秒至 3.2 秒的語音命令進行響應,響應時間約為 0.4 秒至 1.2 秒。安靜環(huán)境下,標準普通話,識別率大于 95%。LD3320 是一顆基于非特定人語音識別 (SI-ASR:Speaker-Independent Automatic Speech Recognition)技術(shù)的語音識別/聲控芯片。提供了真正的單芯片語音識別解 決方案。
2. LD3320 芯片上集成了高精度的 A/D 和 D/A 接口,不再需要外接輔助的 Flash 和 RAM,即可以實現(xiàn)語音識別/聲控/人機對話功能。并且識別的關(guān)鍵詞語列表是可以動態(tài)編輯的。3.基于 LD3320,可以在任何的電子產(chǎn)品中,甚至包括簡單的 51 作為主控芯片的系統(tǒng)中,輕松實現(xiàn)語音識別/聲控/人機對話功能。為所有的電子產(chǎn)品增加 VUI(Voice User Interface)語音用戶操作界面。
硬件參數(shù):1.內(nèi)置單聲道 mono 16-bit A/D 模數(shù)轉(zhuǎn)換2.內(nèi)置雙聲道 stereo 16-bit D/A 數(shù)模轉(zhuǎn)換3.內(nèi)置 20mW 雙聲道耳機放大器輸出4.內(nèi)置 550mW 單聲道揚聲器放大器輸出5.支持并行接口或者 SPI 接口6.內(nèi)置鎖相電路 PLL,輸入主控時鐘頻率為 2MHz - 34MHz7.工作電壓:(VDD: for internal core) 3.3V8. 48pin 的 QFN 7*7 標準封裝9.省電模式耗電:1uA
2.3.8 串口屏模塊
串口屏原理:串口屏將復雜的事情變簡單,用戶只需要通過串口發(fā)送一個命令字符串完成漢字以及圖片的顯示。串口屏是由液晶屏+單片機+ 存儲器三部分構(gòu)成的,串口是單片機中 最普遍的一種接口,具有廣泛的用戶基礎(chǔ)和資料普及。常言道,把復雜的事情變簡單就是價值,串口屏正遵循了這個原則,只需要通過串口發(fā)送一個命令字符串,比如 "CLS(1);" 就可以將屏幕清成紅色;同樣發(fā)送其他的命令就可以完成漢字以及圖片的 顯示。
通信原理 :在串口屏與 FPGA 信息交互時使用了 UART 通信協(xié)議。計算機和外部設備 的連接,基本上使用了兩類接口:串行接口和并行接口。并行接口是指數(shù)據(jù)的各個位同時進行傳送,其特點是傳輸速度快,但當傳輸距離遠、位數(shù)又多時,通信線 路變復雜且成本提高。串行通信是指數(shù)據(jù)一位位地順序傳送,其特點是適合于 遠 距離通信,通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信,從而大大降低了成本。
當串口屏被操作者觸摸,會有一系列指令數(shù)據(jù)發(fā)出,將發(fā)出的信息傳送給 FPGA 進行綜合處理,F(xiàn)PGA 也會反饋給串口屏一系列數(shù)據(jù)。在這樣的信息傳輸過程中是以 UART 通訊協(xié)議進行通信的。
硬件連接:串口屏使用四個管腳。+5V 和 GND 及其供電管腳,直接接上 5V 電源,系統(tǒng)即可點亮并演示可實現(xiàn)上述相關(guān)功能。RX 是串口屏的數(shù)據(jù)接收管腳, 需要連接 TTL 線的 TX 數(shù)據(jù)發(fā)送端。TX 是串口屏的數(shù)據(jù)發(fā)送管腳,需要連接 TTL 線的 RX 數(shù)據(jù)接收端。
2.3.9 USB 攝像頭模塊
該 USB 攝像頭免驅(qū)動,可在 FPGA 開發(fā)板上調(diào)用對應的 python API 來控制攝像 頭使用。在攝像頭采集模塊中,我們將 python 內(nèi)部 opencv 模塊的圖像處理函數(shù)加載至攝像頭端,當攝像頭采集視頻流時可在顯示屏實時觀看所采集到的視頻流。?第三部分 完成情況及性能參數(shù) /Final Design & Performance Parameters
本系統(tǒng)由攝像頭模塊、顯示器模塊、語音識別和語音播報模塊、電機驅(qū)動模塊、傳感器等共同組成。具有攝像頭拍照識別垃圾種類、實時檢測溫度、火焰、有害氣體、垃圾含量多少、滿桶警告、特殊情況短信提醒、語音播報、語音識別以及屏幕實時顯示等功能,同時附加了語音識別和語音播報功能增加識別的準確率。市民將垃圾投入到垃圾桶后,桶內(nèi)的攝像頭會對垃圾進行拍照,通過數(shù)據(jù)庫對比識別垃圾的種類,判定結(jié)果通過開發(fā)板回傳至垃圾桶,控制舵機轉(zhuǎn)動隔板完成分類。
可實現(xiàn)功能:(1)在圖像識別模式下,可以對可回收垃圾進行二次分類回收利用, 可識別塑料、金屬、玻璃、硬紙板、廢紙并進行分類;
(2)在語音識別模式下,可以 直接對一些生活中常見垃圾進行可回收垃、廚余垃分類圾、其他垃圾、有害垃圾四種分類,投入相應垃圾桶內(nèi)。目前,兩個功能均已實現(xiàn)且可以隨意切換使用,各模塊之間按功能連接。傳感器采集得到的數(shù)據(jù)經(jīng)過處理之后發(fā)送給顯示器模塊,在串口屏顯示終端顯示垃圾桶內(nèi)垃圾含量、系統(tǒng)安全性以及傳感器實時監(jiān)控環(huán)境數(shù)據(jù)。
兩種垃圾識別模式:語音識別模式和圖像識別模式
(1)使用圖像識別,可以對可 回收垃圾進行二次識別;
(2)使用語音識別模式,可以直接對一些生活中常見垃圾進行可回收垃、廚余垃圾、其他垃圾、有害垃圾四種識別。將傳感器檢測一氧化碳、火焰?zhèn)鞲衅鳌⒓t外溫度的數(shù)據(jù)經(jīng)過分析過后作是否開啟 的報警提示信號。系統(tǒng)還可以根據(jù)垃圾桶內(nèi)垃圾的含量、是否出現(xiàn)火焰、存在有害氣體等,通過短 信發(fā)送給管理員進行及時處理。
3.1 攝像頭模塊
在攝像頭采集模塊中,我們將 python 內(nèi)部 opencv 模塊的圖像處理函數(shù)加載至攝像頭端,當攝像頭采集視頻流時可在顯示屏實時觀看所采集到的視頻流。攝像頭采集效 果如下所示:
3.2 語音識別模塊
我們可以很簡便的配置語音命令,實現(xiàn)語音識別功能。首先需要通過軟件設置詞條,后將詞條燒錄至模塊中。其次,利用 UART 通信協(xié)議發(fā)送啟動指令驅(qū)動語音識別模塊,當使用者對模塊說話時,模塊對說出的話進行識別并且與燒錄進去的詞條進行對比,若兩者一致,則會向開發(fā)板發(fā)送信號,信號經(jīng)過處理后控制震動和語音播報的 開關(guān)。
3.3 語音播報模塊
語音模塊通過串口發(fā)送指令控制模塊外置 SD 卡或 U 盤中預先存儲的語音及音樂,串口屏發(fā)送過來的指令使用狀態(tài)機檢測,然后觸發(fā)語音發(fā)送指令模塊,觸發(fā)語音播報。RTL 圖如圖 3.16 所示。完全支持 FAT16、FAT32 文件系統(tǒng),最大支持 32G 的 U 盤,TF 卡。U 盤和 SD 卡, 需要格式化為 FAT16、FAT32 文件系統(tǒng)。通訊格式:起始位 0x7E + len 后面字節(jié)個數(shù) + 命令(播放或暫停) + 查詢歌曲序號(數(shù)據(jù)高字節(jié)) + 查詢數(shù)據(jù)低字節(jié) + 結(jié)束位 0xEF。直接發(fā)送的指令, 每發(fā)一條正確指令都會返回 “OK”錯誤返回“err”,修改指 令第三、四位十六進制數(shù)據(jù),即可播放指定文件夾語音。如圖 3.17 所示:
在此我們采用的指定文件夾播放的方式進行播放,在外置存儲器中新建文件夾, 文件夾名必須為 01-99 文件號,文件內(nèi)總曲目名字必須改 1-255。建好文件夾并且存儲好 要播放的語音后,就可以通過開發(fā)板發(fā)送播報指令,語音模塊便開始工作播報語音。若想要播放 01 文件夾中文件名為 008 的語音,則發(fā)送指令:7E 04 41 01 08 EF(其 中 7E 為起始地址,04 為位長度,41 為指令,01 08 表示 01 文件夾內(nèi)文件名為 008 的語音)。
3.4 顯示模塊通過 pynq 實現(xiàn)對相關(guān)資源進行調(diào)用進行實現(xiàn)圖片的顯示功能。
3.5 舵機驅(qū)動模塊
本系統(tǒng)設計中所使用的數(shù)字電機為如圖所示。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率,而不受負載變化的影響,當步進驅(qū)動器接收到 一個脈沖信號,它就驅(qū)動步進電機按設定的方向轉(zhuǎn)動一定的角度,它的旋轉(zhuǎn)的角度可以通過控制脈沖的占空比進行改變調(diào)整。位置控制是通過發(fā)脈沖來控制的,位置控制模 式一般是通過外部輸入的脈沖的頻率來確定轉(zhuǎn)動速度的大小,通過脈沖的個數(shù)來確定轉(zhuǎn)動的角度。
一個周期是 20MS,一個周期的高脈沖范圍在 0 到 2.5MS 其對應的舵機轉(zhuǎn)動角度范圍是 0 到 270 度。只要設定相應轉(zhuǎn)動角度對應的計數(shù)值,則可以實現(xiàn)相應的角度旋轉(zhuǎn)。其 RTL 如圖 3.所示:
3.6 串口屏顯示模塊
我們在串口屏與 FPGA 信息交互時使用了 UART 通信協(xié)議。計算機和外部設備的連接,基本上使用了兩類接口:串行接口和并行接口。并行接口是指數(shù) 據(jù)的各個位同時進行傳送,其特點是傳輸速度快,但當傳輸距離遠、位數(shù)又多時,通信線路變復雜且成本提高。串行通信是指數(shù)據(jù)一位位地順序傳送,其特點是適合于遠距離通信, 通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信,從而大大降低了成本。
當傳感器測得數(shù)據(jù),會有指令數(shù)據(jù)通過 UART 通信協(xié)議發(fā)出,將傳感器發(fā)出的信息傳送給 FPGA 進行綜合處理,串口屏會根據(jù)接收到的信息輸出相應的數(shù)值。在這樣的信息傳輸 過程中是以 UART 通訊協(xié)議進行通信的。
我們的作品主要是通過串口屏進行顯示,我們采用UART通信協(xié)議的接受模塊接收, 根據(jù)發(fā)來的傳感器檢測的數(shù)據(jù),使 FPGA 中狀態(tài)機的狀態(tài)與串口屏的顯示界面一致,會 向串口屏發(fā)送相應的顯示信息進行顯示,例如垃圾桶內(nèi)溫度、桶內(nèi)垃圾含量、是否檢 測到火焰或者有害氣體等。圖 3.5 為串口屏指令接收模塊 RTL 圖:
本模塊負責接收串口屏發(fā)來的信息。我們可以在界面的看到垃圾桶內(nèi)環(huán)境監(jiān)測, 環(huán)境正常顯示綠色的數(shù)值,當出現(xiàn)異常時,顯示紅色的數(shù)值,如圖 3.6 所示。
3.7 MCU90615 紅外測溫模塊
此 MCU90615 模塊通過發(fā)送對應的 AT 指令集設置讀取數(shù)的時間和波特率命令指令:連續(xù)輸出指令:0xA5+0x45+0xEA----------------溫度數(shù)據(jù)(模塊返回數(shù)據(jù)類型為 0x45)查詢輸出指令:0xA5+0x15+0xBA ---------------溫度數(shù)據(jù)(模塊返回數(shù)據(jù)類型為 0x45)配置指令:(掉電重啟后生效)波特率配置:0xA5+0xAE+0x53 ---------------96000xA5+0xAF+0x54 ---------------115200(默認)上電是否自動發(fā)送溫度數(shù)據(jù)配置:0xA5+0x51+0xF6---------------上電后自動輸出溫度數(shù)據(jù)0xA5+0x52+0xF7---------------上電后不自動輸出溫度數(shù)據(jù)(默認)0xA5+0xAF+0x54 ---------------115200(默認)通過狀態(tài)機截取對應位數(shù)據(jù)輸出,將數(shù)據(jù)發(fā)送給串口屏,從而完成顯示,RTL 圖 如圖 3.7 所示:
3.8 GSM 短信模塊
SIM800A 模塊通過發(fā)送和接受國際電信聯(lián)盟規(guī)定的 AT 指令集來進行控制和數(shù)據(jù)接收,本系統(tǒng)使用了 UART 通信協(xié)議的發(fā)送模塊進行指令的發(fā)送。本系統(tǒng)短信模塊的功能主要體現(xiàn)在 GSM 接收到 DES 密碼模塊產(chǎn)生的密碼后通過短信發(fā)送給管理員,管理員通過輸入 GSM 產(chǎn)生的密碼,檢測到正確信號后,天窗打開。此外,該模塊 1 還設有溫度報警模塊,通過紅外體溫傳感器檢測溫度,當溫度大于 38 攝氏度時,則發(fā)送短信提醒。RTL 圖如圖 3.8 所示:
3.9 超聲波測距模塊
該模塊我們通過超聲波傳感器實時的檢測垃圾桶內(nèi)垃圾含量,進行實時數(shù)據(jù)監(jiān)測和滿桶警報當垃圾桶即將裝滿時會及時發(fā)送短信至垃圾管理員。可以實時在串口屏上顯示垃圾桶內(nèi)垃圾含量,并且當垃圾桶內(nèi)可用高度小于 5cm 時認定垃圾桶即將裝滿時 會及時并自動發(fā)送短信至垃圾管理員。RTL 圖如圖 3.9 所示:
3.10 UART 通信協(xié)議
Uart 通信協(xié)議每次只能發(fā)送和接收 8 位數(shù)據(jù),而投入到實際使用當中,往往發(fā) 送和接收的不只是 8 位數(shù)據(jù),可能是 48 位,可能是 64 位,也有可能是 72 位。此時, 發(fā)送和接收的處理方法如下。1> 發(fā)送:例如:發(fā)送 7E 04 41 01 08 EF 將這 48 位數(shù)據(jù)強行拆分成 6 個 8 位數(shù)據(jù),分別 用 6 個 reg 型寄存器寄存。也就是說將 7E 04 41 01 08 EF 這一條指令拆為 7E、 04、41、01、08、EF 6 條指令,然后將其按順序進 行發(fā)送。
看起來好像很容易,就 只是將這 6 條指令按順序發(fā)送就可以了,但是如何才能讓其按順序發(fā)送,這里邊牽扯 到了很多使能端的問題。在 此,由 Uart 通信協(xié)議受到了啟發(fā),Uart 通信協(xié)議的發(fā) 送模塊中,就是將 并行的 8 位數(shù)據(jù)轉(zhuǎn)化成串行將其一位一位地輸出,同樣的道理, 將 7E、04、41、01、08、EF 分別看成 6 個整體,每個整體有 8 位,將這并行的 6 個 整體轉(zhuǎn)化成串行將其一個一個發(fā)送即可。而每兩個整體發(fā)送中間的間隔是需要計算的, Uart 通信協(xié)議一共有 10 位,1 位起始位,1 位終止位和 8 位數(shù)據(jù)位。那每兩個整體發(fā) 送中間就間隔著發(fā)送 10 位數(shù)據(jù),通過計算 50MHz/9600Hz * 10 = 52084。
建立一個計 數(shù)器,每當計數(shù)器計數(shù)到 52084 時,選擇一個需要發(fā)送的整體,將其傳送給發(fā)送模塊 的輸入端,然后進行發(fā)送。對于發(fā)送模塊,將并行的位數(shù)據(jù)轉(zhuǎn)化成串行一位一位輸出 即可。2> 接收:接收多位數(shù)據(jù)相對來說比較簡單,一共接收多少位數(shù)據(jù)便設置一個多少位的移位 寄存器(例如需要接收 48 位數(shù)據(jù),便設置一個 48 位的移位寄存器),使用 Uart 接收模塊每次接收 8 位數(shù)據(jù),然后將這 8 位數(shù)據(jù)存儲到移位寄存器當中,每接收到一 次數(shù)據(jù),移位寄存器向左移 8 位,接收完畢后停止并且將寄存器中的數(shù)據(jù)輸出便可完 成接收。
第四部分 總結(jié)
4.1 主要創(chuàng)新點
(1)在使用 PYNQ 核心板作為主要處理器處理數(shù)據(jù)時,使用 hls 對卷積和池化層的硬 件電路設計,實現(xiàn)了 cnn 卷積神經(jīng)網(wǎng)絡在 pynq 的復現(xiàn)。
(2)對于已經(jīng)訓練的垃圾進行識別其準確率可達 90%以上。
(3)增加了語音識別和圖像識別兩種模式,兩種操作隨意切換,適用于不同場景,對 應相同的功能,增加識別精準度。
(4)增加自啟動功能。
(5)使用硬件加速,提高了識別速度。
(6)增加卷積池化的硬件電路設計,增強網(wǎng)絡實現(xiàn)的效率。
(7)增加傳感器進行環(huán)境監(jiān)測,數(shù)據(jù)實時顯示,保證出現(xiàn)異常情況進行報警,數(shù)據(jù)及 時反饋給管理員。
(8)利用攝像頭采集垃圾的圖像后 PYNQ 使用在 PC 端訓練并保存的神經(jīng)網(wǎng)絡在該數(shù)據(jù) 集下的權(quán)值。
4.2 可擴展之處
(1)擴大數(shù)據(jù)集,對不同種類垃圾圖片進行收集、訓練,增加可識別垃圾種類,提高 識別精準度。
(2)對于云臺旋轉(zhuǎn)的角度精確值可以更為精確,通過對于器件、參數(shù)的調(diào)整,預計達 到肉眼不可見的誤差。
(3)可以升級使用更加高級的算法和網(wǎng)絡使得分類更加的精準和高效。
該作品初衷是想為社會做出一些貢獻,減輕日益劇增的環(huán)境壓力?,F(xiàn)如 今垃圾分類已經(jīng)成為加強生態(tài)文明建設、促進綠色發(fā)展的重要舉措。但實際上,我國城市生活垃圾分類推廣工作也歷時十幾年,但效果依然不顯著。我國經(jīng)濟的高速發(fā)展同時帶來了社會資源的過度使用,所以對國家的長久發(fā)展和環(huán)境保護事業(yè)而言,垃圾分類是一項必須推進的工作。既有利于資源的循環(huán)利用,也有利于城市的人居環(huán)境, 如果成功推行,所有人類都將是受益者。然而有人提出如此嚴格的規(guī)章制度突然降臨, 難免給公眾帶來顯著的不便,違規(guī)者與監(jiān)管者之間的沖突將會經(jīng)常出現(xiàn),社會很可能要付出很高的成本,才能維持新規(guī)的有效性,所以設計這個作品旨在解決當前社會問題,節(jié)約社會資源,為公眾帶來便利。
FPGA技術(shù)江湖微信交流群