余 驍,劉 碩
(江蘇科技大學,江蘇 鎮江 212000)
查閱相關數據發現,我國2019年生活垃圾的清運量高達24 206.19萬噸[1]。之前,由于人們缺乏垃圾分類意識,導致大部分垃圾未進行合理有效分類就被扔進垃圾桶,造成資源的大量浪費。自從《上海市生活垃圾管理條例》正式實施之后,垃圾分類再次成為全國人民關注的焦點[2]。垃圾可劃分為4種不等的類別,可分為可回收垃圾、廚余垃圾、有害垃圾、其他垃圾。垃圾分類是對傳統垃圾收集和處理方法的改革,是有效進行垃圾處理的科學管理方法,通過進一步挖掘垃圾蘊含的潛在價值,從而達到變廢為寶、保護環境的目的[3]。
針對垃圾分類的現狀與存在的問題,本論文提出了基于深度學習和單片機的智能垃圾分類系統設計,可以實現垃圾的自動識別與自動投放、LCD顯示以及滿載檢測等功能。
本系統主要搭載了基于Pytorch的深度學習框架進行視覺識別,利用STM32嵌入式單片機作為微控制器進行功能拓展。通過攝像頭采集圖像信息,利用視覺識別算法對圖像信息進行處理,然后通過串口將處理后的數據發送給STM32單片機,經過單片機對數據作進一步處理后控制步進電機與舵機運轉,實現垃圾的自動識別與自動投放,以及LCD顯示屏的顯示功能,最終實現垃圾的自動分類。還可在垃圾桶上外加對射紅外開關進行滿載檢測。系統整體裝配如圖1所示。

圖1 系統整體裝配圖
智能垃圾分類系統硬件結構涉及的主要模塊有視覺識別模塊、舵機模塊、步進電機模塊、LCD顯示模塊以及滿載檢測模塊。系統硬件結構設計如圖2所示。

圖2 系統硬件結構設計
智能垃圾分類系統的視覺識別模塊主要搭載基于Pytorch的深度學習框架進行視覺識別。通過攝像頭采集垃圾圖像數據,經過事先擬合好的函數進行數據處理,可以得出當前采集的垃圾數據與哪一類垃圾數據更為匹配。然后通過串口將處理好的數據傳輸給STM32單片機,從而對步進電機、舵機以及LCD顯示屏進行控制。Pytorch相比Tensorflow而言,更加簡潔直觀[4]。視覺識別模塊與STM32單片機的通信結構如圖3所示。

圖3 通信結構
智能垃圾分類系統采用MG90S舵機實現自動投放垃圾的功能。STM32單片機通過I/O口向舵機傳送PWM信號,控制舵機運轉,將200 mm×200 mm木板上的垃圾投放到垃圾桶中。舵機大體可分為殼體、減速器、驅動馬達、位置檢測部件和電路板。MG90S屬于數字舵機,相比模擬舵機而言,數字舵機的控制電路具有更多的晶體振蕩器和微處理器,極大地提高了舵機的驅動性能[5]。舵機驅動原理如圖4所示。

圖4 舵機驅動原理
智能垃圾分類系統采用TB6600驅動器和57步進電機,實現了垃圾桶的自動選擇功能。TB6600是一款專業的兩相步進電機驅動器,兼容Arduino和其他主控器,可實現電機正反轉控制、旋轉角度控制等,具有振動小、噪聲低、速度快等優勢[6]。STM32單片機對通過串口通信接收到的數據進行處理,控制57步進電機旋轉一定角度,選擇有害垃圾垃圾桶、可回收垃圾垃圾桶、廚余垃圾垃圾桶、其他垃圾垃圾桶的其中一個進行垃圾自動投放。TB6600控制器、57步進電機以及STM32控制器的接線方式采用共陽極接法,具體如圖5所示。

圖5 步進電機模塊接線圖
智能垃圾分類系統采用2.8寸MCU電阻觸摸屏模塊,該模塊依靠背光LED發光,每個點電壓可以改變光線的方向,從而改變透光度(0~100%)。每個像素點對應紅綠藍RGB,RGB各自的亮度不同,組成的顏色自然也不同[7]。LCD顯示模塊實現了智能垃圾分類系統各項參數的顯示,具體包括投放順序、投放種類、四類垃圾的數量以及是否投放成功。對紅外對射開關傳來的數據進行檢測與處理,實現垃圾桶的滿載檢測。
智能垃圾分類系統采用紅外對射開關進行垃圾桶的滿載檢測。實現原理:當紅外對射開關之間無垃圾阻擋時,接收管的信號線輸出0 V低電平;當紅外對射開關之間有垃圾阻擋時,接收管的信號線輸出5 V高電平。為避免垃圾在下降過程中因短時間阻擋紅外光線為滿載檢測帶來干擾,本設計采用延遲判斷避免此類錯判,類似按鍵消抖原理。該模塊抗干擾能力強,價格低廉,應用前景廣闊。滿載檢測模塊原理如圖6所示。

圖6 滿載檢測模塊原理
智能垃圾分類系統軟件仿真設計主要涉及STM32單片機以及Pytorch。智能垃圾分類系統的整體流程如圖7所示。

圖7 系統整體流程
STM32單片機程序主要由C語言編寫,包括主程序、舵機程序以及電機驅動程序等各功能模塊子程序。將智能垃圾分類系統的功能模塊化,使得系統具有架構靈活、方便單個模塊功能調試升級以及可維護性高等優點。
Pytorch程序主要由Python語言編寫,Pytorch是Python軟件包,其GPU促進了基于磁帶autograd系統構建的張量計算[8]。智能垃圾分類系統采用基于Pytorch的深度學習框架進行垃圾識別,垃圾識別主要分為如下3部分:
(1)攝像頭對垃圾圖像數據進行采集與獲取;
(2)將采集的圖像數據放進預訓練模型進行預處理及加工;
(3)將加工好的數據進行轉換,轉換后的數據遵守Pytorch與STM32單片機的串口通信協議[9],發送給STM32單片機。
系統識別流程如圖8所示。

圖8 系統識別流程
智能垃圾分類系統的功能模塊化可能會導致功能模塊在互通的過程中出現一些不可預知的問題與故障,因此需要不斷調試與改進。
本論文主要介紹了基于深度學習和單片機的智能垃圾分類系統在硬件和軟件上的設計,垃圾分類系統搭載基于Pytorch的深度學習框架進行垃圾識別,同時系統具備的自動投放、滿載檢測報警等技術可實現垃圾自動分類,一定程度上削弱了人為垃圾分類的繁瑣性,提高了垃圾分類效率。
在今后的研究當中,可以對當前智能垃圾分類系統進行升級改造。比如,增加語音播報模塊以及上位機,實現人機交互,進一步提高智能垃圾分類系統的智能化水平;增加大量數據集,實現精準識別更多種類的垃圾,凸顯智能垃圾分類系統的人性化特點[10]。