周宇輝, 何志琴, 胡 娟, 楊 瑩
(貴州大學 電氣工程學院, 貴陽550000)
隨著生活質量的提到,科技高速發展,環境問題也會逐漸的加劇,有相關數據表明垃圾的產量與GDP 是嚴密相關的,隨著GDP 的增加,垃圾產量也在進一步加大[1]。 尤其是我國人口數量基數大,平均的垃圾產量是很龐大的,城市的環境問題成為巨大的問題,所以國家開始提出垃圾分類,以便于更好的對垃圾進行合理的處置。
生活中,并不是所有的垃圾都是完全沒有利用價值的,裝飲料的易拉罐收集后,可以重新熔煉出鋁,做出鋁制用品。 如何高效的對這些垃圾進行分類處理是當前整治城市環境問題的重中之重[2]。所以對垃圾做分類處理,誕生出了利用不同垃圾桶進行垃圾分類,在大街上擺放不同的垃圾桶收集不同的垃圾,現在街上主流垃圾桶分為“可回收垃圾”桶和“不可回收垃圾”垃圾桶。 現在是高科技智能時代,將人工智能用于垃圾分類,當不知道垃圾的具體分類時,垃圾桶會自動幫助選擇。
本設計對智能垃圾桶進行了探討, 基于OpenMV 對垃圾進行顏色處理,串口通信將信息傳給Arduino 單片機,進過單片機的處理以后,控制舵機旋轉,打開對應的垃圾桶,實現自動分類垃圾。 同時Arduino 和Labview 的通信可以實時的觀察垃圾桶目前的狀態,及時更換垃圾袋。
本系統主要依靠幾個模塊之間進行串口通信而實現目標,利用OpenMV 對圖像信息采集,發送給Arduino 單片機處理相應數據,進而控制舵機選擇對應垃圾槽。 系統總體設計如圖1 所示。
本文的硬件結構主要由OpenMV 采集模塊、分類模塊、微處理器、通信模塊、舵機和電源模塊組成。其中OpenMV 對垃圾的顏色進行采集,提取顏色信息,通過串口通信傳給Arduino 單片機,單片機與舵機相連,控制垃圾桶的旋轉,電源模塊為系統進行供電。 系統硬件結構如圖2 所示。

圖1 系統總體框圖Fig. 1 Overall system block diagram

圖2 系統硬件結構設計圖Fig. 2 Design drawing of system hardware structure
本文設計的圖像采集模塊主要是由OpenMV 攝像頭,通過串口通信連接Arduino 單片機,傳輸采集顏色的對應參數,以便Arduino 能夠控制舵機轉動,打開對應的分類垃圾槽[3]。 圖3 是圖像采集模塊OpenMV 和Arduino 的通信結構。
OpenMV4 H7 是本文選用的攝像頭模塊,它集成了一塊STM32H743,主頻400M,內存2M,運行速度快,而且相比OpenMV3,可選擇的鏡頭更多,而且便于更換。

圖3 OpenMV 與Arduino 串口通信Fig. 3 OpenMV communicates with Arduino serial port
系統中,選用WiFi 模塊ESP8266,該模塊硬件接口豐富,可以滿足本設計所需要的數據傳輸要求。能從串口接收數據,WiFi 輸出數據,實時顯示當前垃圾桶的具體狀態。
ESP8266 有三種模式,分別是STA、AP 和STA+AP 模式。 在Arduino IDE 環境中,能夠輕易的添加ESP8266 庫模塊,如圖4 所示。

圖4 Arduino IDE 添加ESP8266 庫Fig. 4 Add the ESP8266 library to the Arduino IDE
添加庫后,使用Arduino 與ESP8266 引腳連接實心串口通信,數據無線傳輸,達到實時存儲、監控垃圾桶內情況的目的。 Wifi 模組如圖5 所示。

圖5 wifi 模組Fig. 5 Wifi module
舵機通過PWM 波來控制電機的旋轉,用Arduino 來控制旋轉角度。 舵機力矩大,符合系統的設計要求,且Arduino 很容易對舵機進行控制,編程簡單,可操作性強。 舵機還包含了伺服電機的完整系統(電機、傳感器和控制器),價格便宜,節約智能垃圾桶的成本。 圖6 為舵機模塊圖。

圖6 舵機模塊Fig. 6 Steering gear module
為了更好的進行分類,設計選用圓形旋轉垃圾桶,將垃圾桶內分為3 個槽,每一個槽套上不同的垃圾袋。 當垃圾經過入口處OpenMV 攝像頭檢測時,處理顏色信息,再把處理后的信息發送給Arduino單片機,Arduino 單片機接收數據,控制驅動舵機旋轉對應的角度,使得槽到達垃圾桶的入口處,從而回收垃圾;按照生活規律還可以劃分不同大小的垃圾區域,使得空間更為適用,不造成空間浪費。 圖7 為垃圾桶結構設計圖。

圖7 垃圾桶結構設計Fig. 7 Structural design of dustbin
圖像識別系統分為三個部分,第一部分是圖像的采集和獲取,在本系統中,擔任這個任務的主要是OpenMV 搭載的攝像頭,能對垃圾圖像進行獲取;第二部分是對信息的加工和預處理,是圖像處理的核心。 這一部分也由OpenMV 處理,將信息傳給Arduino,為后續垃圾桶工作提供基礎,是圖像處理的核心[4];第三部分是識別分類的過程,把上一步的信號轉換成垃圾桶所能識別的信號。 圖像識別框圖如圖8 所示。

圖8 圖像識別框圖Fig. 8 Block diagram of image recognition
BP 神經網絡是目前應用最為廣泛的人工神經網絡,由輸入層、隱含層和輸出層組成,各層之間的聯系用權值表示。 BP 網絡需要解決的主要問題是算法,傳統的BP 學習算法為最小二乘法[5]。 如圖9為典型BP 神經網絡模型。
設計需要做灰度像素識別,通常從BP 神經網絡模型的輸入層,隱藏層和輸出層開始。
輸入層設計:BP 神經網絡輸入層中的節點數通常由解決問題的影響因素決定。 對于圖像識別,影響系數是圖像識別特性。 因此,設計網絡中輸入節點的數量等于所使用的圖像識別功能的數量。

圖9 BP 神經網絡模型Fig. 9 BP neural network model
輸出層設計:輸出層的節點數由輸出值表達方式決定,本文要確定輸出層的神經元,必須設置目標的類別。
隱藏層設計:當每個節點都采用S 型函數時,如果它是一個隱藏層,則足以實現決策分類問題。 增加屏蔽層的數量可以進一步減少錯誤,提高準確性,但會使網絡變得更加復雜,并且增加訓練網絡權重所需的時間。 因此,在不做具體要求的情況下,本文選用單隱層[6]。
在OpenMV 軟件中,能通過搭載的攝像頭識別出圖像的色塊,通過多次訓練,將色塊記錄下來,通過串口將數據傳輸給Arduino 單片機實現后續處理,OpenMV IDE 中有許多例程能尋找色塊,本文以單色塊尋找為例。
在設計中主要運用到的函數是find_blobs 函數,通過find_blobs 函數可以找到色塊。 設置顏色的閾值,可以定義多個顏色列表或者單個顏色,根據情況選擇對應的閾值。 假設填入的是紅色色塊閾值,程序運行后,可以看到所追蹤的紅色色塊已經被識別出來,紅色區域全部被框出,如圖10 所示。

圖10 色塊顯示Fig. 10 Color piece shows
如果還想尋找其他色塊,但是不知道顏色閾值,可以通過IDE 自帶的顏色閾值工具來算出閾值,填入thresholds 函數中。 例如:需要觀察紅色旁邊的綠色色塊,只需要進入閾值工具,拖動滑塊將除綠色外其他顏色全部變成黑色,最下面的LAB 閾值則是需要填入的參數。 具體色塊閾值條節如圖11 所示。

圖11 閾值調節Fig. 11 Threshold adjustment
參數填寫后,再次運行程序,就可以查找需要的色塊,綠色部分已經被選中。 如圖12 所示。

圖12 綠色色塊顯示Fig. 12 The green block appears
經過多次訓練以后,可以得到多個色塊代表的垃圾閾值,統計這些顏色閾值,通過串口發送給Arduino 單片機。 Arduino 單片機接收到閾值信息后,可以繼續通過串口通信使舵機轉動,打開不同的分類垃圾桶。
Arduino 的編程與C 語言類似,以舵機運行程序為例,圖13 為串口通信控制舵機轉動的程序。 當串口接收到數據,會控制舵機轉動一定的角度,打開對應的垃圾桶。
OpenMV 與Arduino 通信簡單,通過串口3 方式即可。 當OpenMV 觀察到色塊信息時,通過發送色塊中間坐標,Arduino 接收信息傳給電腦并進行結果顯示。 所以,在ArduinoMega 的邏輯是:讀softSerial的數據(json),解析成數組,發送給Serial(電腦)。

圖13 舵機運行程序Fig. 13 Steering gear running program
例如:要尋找黃色色塊,發送中心坐標給Arduino進行數組處理和顯示。 如圖14 所示,在threshold 函數中填入黃色色塊閾值,可以完成串口通信。

圖14 尋找黃色色塊Fig. 14 Look for yellow patches
當Arduino 接收的數據等于設置閾值時,會控制舵機旋轉相應的度數,打開不同垃圾桶。 COM 口顯示發送過來的數值。 如圖15 為色塊閾值顯示。
通過esp8266WiFi 模塊,可以遠程監控垃圾桶當前狀態。 通過設置標志位,當垃圾桶裝滿或者發生故障時,故障燈會亮,同時將信息傳給APP。 因為Arduino 的串口需要接入Labview 上位機顯示,所以選用軟串口來連接WiFi 模塊,如圖16 所示。

圖15 舵機轉角Fig. 15 Steering Angle

圖16 WiFi 模塊例程Fig. 16 WiFi module routine
通過VISA 串口,連接到單片機得到數據顯示,接收的數據來自OpenMV 追蹤的圖像信息,圖17 是通過Labview 上位機顯示的數據,,可以遠程監控垃圾桶的運行情況和狀態。 通過Labview 觀察OpenMV 串口當前傳送數據的情況。

圖17 上位機顯示與調節Fig. 17 Upper computer display and adjustment
本文設計基于OpenMV 垃圾分類的智能垃圾桶系統,利用BP 神經網絡構建垃圾分類模型,OpenMV 實現神經網絡訓練,再通過Labview 顯示和調節,實現利用智能垃圾桶分類垃圾。
本文對垃圾分類進行了研究,對智能垃圾桶目前的現狀進行了討論;搭建出一種基于OpenMV 的垃圾分類垃圾桶,對垃圾桶的內部結構進行改造,設計硬件控制電路,通過OpenMV 實現了圖像的處理,完成了垃圾特征的提取,通過BP 神經網絡算法輸入樣本,完成BP 神經網絡的訓練。 最后,利用串口通信方式將系統串聯,實現了智能分類垃圾桶的設計。
設計的結果對于真正的應用有著一定的幫助,但還在具有局限性,用于分類的垃圾樣品少,在擴大樣本后,有待于后續研究。