余 驍,劉 碩
(江蘇科技大學,江蘇 鎮(zhèn)江 212000)
查閱相關(guān)數(shù)據(jù)發(fā)現(xiàn),我國2019年生活垃圾的清運量高達24 206.19萬噸[1]。之前,由于人們?nèi)狈诸愐庾R,導致大部分垃圾未進行合理有效分類就被扔進垃圾桶,造成資源的大量浪費。自從《上海市生活垃圾管理條例》正式實施之后,垃圾分類再次成為全國人民關(guān)注的焦點[2]。垃圾可劃分為4種不等的類別,可分為可回收垃圾、廚余垃圾、有害垃圾、其他垃圾。垃圾分類是對傳統(tǒng)垃圾收集和處理方法的改革,是有效進行垃圾處理的科學管理方法,通過進一步挖掘垃圾蘊含的潛在價值,從而達到變廢為寶、保護環(huán)境的目的[3]。
針對垃圾分類的現(xiàn)狀與存在的問題,本論文提出了基于深度學習和單片機的智能垃圾分類系統(tǒng)設(shè)計,可以實現(xiàn)垃圾的自動識別與自動投放、LCD顯示以及滿載檢測等功能。
本系統(tǒng)主要搭載了基于Pytorch的深度學習框架進行視覺識別,利用STM32嵌入式單片機作為微控制器進行功能拓展。通過攝像頭采集圖像信息,利用視覺識別算法對圖像信息進行處理,然后通過串口將處理后的數(shù)據(jù)發(fā)送給STM32單片機,經(jīng)過單片機對數(shù)據(jù)作進一步處理后控制步進電機與舵機運轉(zhuǎn),實現(xiàn)垃圾的自動識別與自動投放,以及LCD顯示屏的顯示功能,最終實現(xiàn)垃圾的自動分類。還可在垃圾桶上外加對射紅外開關(guān)進行滿載檢測。系統(tǒng)整體裝配如圖1所示。
圖1 系統(tǒng)整體裝配圖
智能垃圾分類系統(tǒng)硬件結(jié)構(gòu)涉及的主要模塊有視覺識別模塊、舵機模塊、步進電機模塊、LCD顯示模塊以及滿載檢測模塊。系統(tǒng)硬件結(jié)構(gòu)設(shè)計如圖2所示。
圖2 系統(tǒng)硬件結(jié)構(gòu)設(shè)計
智能垃圾分類系統(tǒng)的視覺識別模塊主要搭載基于Pytorch的深度學習框架進行視覺識別。通過攝像頭采集垃圾圖像數(shù)據(jù),經(jīng)過事先擬合好的函數(shù)進行數(shù)據(jù)處理,可以得出當前采集的垃圾數(shù)據(jù)與哪一類垃圾數(shù)據(jù)更為匹配。然后通過串口將處理好的數(shù)據(jù)傳輸給STM32單片機,從而對步進電機、舵機以及LCD顯示屏進行控制。Pytorch相比Tensorflow而言,更加簡潔直觀[4]。視覺識別模塊與STM32單片機的通信結(jié)構(gòu)如圖3所示。
圖3 通信結(jié)構(gòu)
智能垃圾分類系統(tǒng)采用MG90S舵機實現(xiàn)自動投放垃圾的功能。STM32單片機通過I/O口向舵機傳送PWM信號,控制舵機運轉(zhuǎn),將200 mm×200 mm木板上的垃圾投放到垃圾桶中。舵機大體可分為殼體、減速器、驅(qū)動馬達、位置檢測部件和電路板。MG90S屬于數(shù)字舵機,相比模擬舵機而言,數(shù)字舵機的控制電路具有更多的晶體振蕩器和微處理器,極大地提高了舵機的驅(qū)動性能[5]。舵機驅(qū)動原理如圖4所示。
圖4 舵機驅(qū)動原理
智能垃圾分類系統(tǒng)采用TB6600驅(qū)動器和57步進電機,實現(xiàn)了垃圾桶的自動選擇功能。TB6600是一款專業(yè)的兩相步進電機驅(qū)動器,兼容Arduino和其他主控器,可實現(xiàn)電機正反轉(zhuǎn)控制、旋轉(zhuǎn)角度控制等,具有振動小、噪聲低、速度快等優(yōu)勢[6]。STM32單片機對通過串口通信接收到的數(shù)據(jù)進行處理,控制57步進電機旋轉(zhuǎn)一定角度,選擇有害垃圾垃圾桶、可回收垃圾垃圾桶、廚余垃圾垃圾桶、其他垃圾垃圾桶的其中一個進行垃圾自動投放。TB6600控制器、57步進電機以及STM32控制器的接線方式采用共陽極接法,具體如圖5所示。
圖5 步進電機模塊接線圖
智能垃圾分類系統(tǒng)采用2.8寸MCU電阻觸摸屏模塊,該模塊依靠背光LED發(fā)光,每個點電壓可以改變光線的方向,從而改變透光度(0~100%)。每個像素點對應紅綠藍RGB,RGB各自的亮度不同,組成的顏色自然也不同[7]。LCD顯示模塊實現(xiàn)了智能垃圾分類系統(tǒng)各項參數(shù)的顯示,具體包括投放順序、投放種類、四類垃圾的數(shù)量以及是否投放成功。對紅外對射開關(guān)傳來的數(shù)據(jù)進行檢測與處理,實現(xiàn)垃圾桶的滿載檢測。
智能垃圾分類系統(tǒng)采用紅外對射開關(guān)進行垃圾桶的滿載檢測。實現(xiàn)原理:當紅外對射開關(guān)之間無垃圾阻擋時,接收管的信號線輸出0 V低電平;當紅外對射開關(guān)之間有垃圾阻擋時,接收管的信號線輸出5 V高電平。為避免垃圾在下降過程中因短時間阻擋紅外光線為滿載檢測帶來干擾,本設(shè)計采用延遲判斷避免此類錯判,類似按鍵消抖原理。該模塊抗干擾能力強,價格低廉,應用前景廣闊。滿載檢測模塊原理如圖6所示。
圖6 滿載檢測模塊原理
智能垃圾分類系統(tǒng)軟件仿真設(shè)計主要涉及STM32單片機以及Pytorch。智能垃圾分類系統(tǒng)的整體流程如圖7所示。
圖7 系統(tǒng)整體流程
STM32單片機程序主要由C語言編寫,包括主程序、舵機程序以及電機驅(qū)動程序等各功能模塊子程序。將智能垃圾分類系統(tǒng)的功能模塊化,使得系統(tǒng)具有架構(gòu)靈活、方便單個模塊功能調(diào)試升級以及可維護性高等優(yōu)點。
Pytorch程序主要由Python語言編寫,Pytorch是Python軟件包,其GPU促進了基于磁帶autograd系統(tǒng)構(gòu)建的張量計算[8]。智能垃圾分類系統(tǒng)采用基于Pytorch的深度學習框架進行垃圾識別,垃圾識別主要分為如下3部分:
(1)攝像頭對垃圾圖像數(shù)據(jù)進行采集與獲取;
(2)將采集的圖像數(shù)據(jù)放進預訓練模型進行預處理及加工;
(3)將加工好的數(shù)據(jù)進行轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)遵守Pytorch與STM32單片機的串口通信協(xié)議[9],發(fā)送給STM32單片機。
系統(tǒng)識別流程如圖8所示。
圖8 系統(tǒng)識別流程
智能垃圾分類系統(tǒng)的功能模塊化可能會導致功能模塊在互通的過程中出現(xiàn)一些不可預知的問題與故障,因此需要不斷調(diào)試與改進。
本論文主要介紹了基于深度學習和單片機的智能垃圾分類系統(tǒng)在硬件和軟件上的設(shè)計,垃圾分類系統(tǒng)搭載基于Pytorch的深度學習框架進行垃圾識別,同時系統(tǒng)具備的自動投放、滿載檢測報警等技術(shù)可實現(xiàn)垃圾自動分類,一定程度上削弱了人為垃圾分類的繁瑣性,提高了垃圾分類效率。
在今后的研究當中,可以對當前智能垃圾分類系統(tǒng)進行升級改造。比如,增加語音播報模塊以及上位機,實現(xiàn)人機交互,進一步提高智能垃圾分類系統(tǒng)的智能化水平;增加大量數(shù)據(jù)集,實現(xiàn)精準識別更多種類的垃圾,凸顯智能垃圾分類系統(tǒng)的人性化特點[10]。