徐必利,儲健,林曦,胡山,王鵬丞,蘇東升,胡明輝
(天津職業技術師范大學,天津 300222)
本系統以STM32 單片機作為主控終端,通過連接步進電機、舵機、ESP8266WIFI 模塊、K210 攝像頭AI 設備以及觸摸屏構建整個垃圾分類系統,采用手機作為遠程控制APP 的智能生活垃圾分類系統。該設計通過自己開發的手機APP 可以在Wi-Fi 范圍內控制垃圾分類裝置進行垃圾分類[1]。
系統硬件裝置主要由K210、STM32 單片機、ESP8266WIFI 模塊、鋰電池、步進電機、舵機組成,系統如圖1 所示,手機APP 如圖2 所示。

圖2 垃圾分類手機APP
本系統使用的是K210 人工智能開發板和MaixPy IDE 開發環境,編程語言使用Python 讓編程更加簡單快捷,使用了K210 自帶的1TOPS 算力的KPU 對圖片模型進行算法的處理,使攝像頭準確地識別出各種垃圾,相應的垃圾分別發送相應的串口程序給STM32 單片機,使用單片機進行處理[2]。
智能生活垃圾分類系統采用的單片機是STM32F103C8T6,用到了1 個步進電機驅動模塊來控制步進電機、1 個K210 模塊、1 個ESP8266WIFI 模塊、1 個舵機。電源采用的是12 Ⅴ電源供電,用了2 個降壓模塊給單片機、ESP8266WIFI 模塊、觸摸屏、舵機及K210 攝像頭提供電源。STM32F103C8T6 用了2 個引腳分別控制1 個步進電機的脈沖和方向。K210 攝像頭的數值返回到單片機的串口來判斷相應的連接分類從而執行相應的操作。ESP8266WIFI 控制模塊由2 部分組成,一個是使用小程序通過MQTT 協議接入云平臺,另一個接在單片機。通過小程序給Wi-Fi 模塊發送指令,單片機接受到指令從而執行相應的垃圾分類的操作,達到了遠程軟件控制的功能,本系統遠程控制范圍在Wi-Fi 范圍內,當然可以通過5G 網絡開啟熱點建立相應的Wi-Fi 進行控制[3]。
執行機構模塊包括步進電機(旋轉機構)、舵機(倒放垃圾)。通過識別傳感器將垃圾圖像識別出來發送相應的數值給STM32F103C8T6 單片機。例如,識別傳感器檢測到香蕉,發送數字1,單片機接收到1這個數字,步進電機旋轉到廚余垃圾位置,舵機動作將垃圾倒入廚余垃圾桶里,垃圾投入以后將步進電機和舵機復位[4]。
2.3.1 步進電機工作原理
步進電機是一種將電脈沖信號轉換成相應角位移或線位移的電動機。每輸入一個脈沖信號,轉子就轉動一個角度或前進一步,其輸出的角位移或線位移與輸入的脈沖數成正比,轉速與脈沖頻率成正比。通過STM32F103C8T6 單片機發送PWM 波來控制步進電機轉動的角度,每輸入一個脈沖信號,轉子就轉動一個角度,輸入3 000 次脈沖信號,步進電機就會旋轉90°,轉速與脈沖時間成反比,通過控制輸入脈沖次數來控制電機的旋轉角度,通過控制延時的時間可以控制步進電機旋轉速度。
2.3.2 舵機工作原理
伺服電機通常被稱為舵機,它是一種帶有輸出軸的小裝置。當向伺服器發送一個控制信號時,輸出軸就可以轉到特定的位置。主要控制信號持續不變,伺服機構就會保持軸的角度位置不改變。如果控制信號發送變化,輸出軸也會相應發生變化。例如給舵機通上5 Ⅴ的電壓,通過單片機發送20 ms 的時基脈沖,1 ms保持高電平,其他19 ms 保持低電平,舵機就旋轉45°。
本生活智能垃圾分類系統使用Yolo 軟件進行相應垃圾圖片訓練,將訓練出來的模型導入K210 通過相應的算法進行人工智能垃圾分類。K210 與STM32 單片機進行串口通信,K210 串口發送相應的數據來控制單片機執行相應的程序,單片機控制步進電機和舵機完成相應的垃圾分類。訓練模型如圖3 所示,訓練結果如圖4 所示[5]。

圖3 完成相應的垃圾模型

圖4 訓練結果顯示
3.1.1 對當前垃圾數據圖片訓練
通過K210 的拍照程序捕獲照片數據,將數據存儲到SD 卡中,每種垃圾不同位置的照片100 張,本系統共訓練10 種不同垃圾,因此需要采集1 000 張照片,完成照片的采集后對照片進行打標簽操作,即把每一種圖片的名字寫入分好組,上傳到Yolov3 訓練軟件進行圖片識別。
3.1.2 導入完成訓練模型文件進行識別
K210 開發板使用minimum 版本固件,將訓練好的模型文件導入到K210 中,使用kflash_gui 燒錄模型文件到Flash,這個模型文件會自動燒錄到地址0x300000 上,不需要手動選擇地址,保存標簽文件labels.txt 到文件系統,最簡單的是放到SD 卡中;之后是使用K210 開發工具進行寫代碼,將模型加載到程序中,將SD 卡中的標簽文件讀取到程序中,調用一些攝像頭、LCD、神經網絡處理器的程序。
3.1.3 神經網絡處理器KPU 介紹
神經網絡處理器KPU 可以在低功耗的情況下實現卷積神經網絡計算,實時獲取被檢測目標的大小、坐標和種類,對人臉或者物體進行檢測和分類。電池實物識別如圖5 所示,橘子實物識別如圖6 所示。

圖5 電池實物識別

圖6 橘子實物識別
百度智能云IoT 物管理,提供用戶在云端管理設備的能力。用戶能夠獲取并控制設備狀態、進行設備的批量操作以及設備診斷。一方面,設備主動向物管理中心更新狀態信息;另一方面,控制端也可以通過和設備管理中心交互反控設備的行為,比如設備狀態更新、OTA 遠程設備升級等。因此,設備管理中心既需要負責和設備端交互,又要負責和控制端交互。設備端的交互主要基于MQTT 協議,而控制端通過HTTP通信。IoT Device Management API 主要包括控制端的相關功能,以Restful API 的形式提供。
通過ESP8266 模塊和百度云天工物接入進行連接,通過MQTT 協議進行通信,將APP 段數據傳送到ESP8266 模塊上,然后ESP8266 通過串口發送給單片機數據進行相應的垃圾分類操控[6]。物聯網系統如圖7所示。

圖7 物聯網系統
3.3.1 APP Inventor 平臺介紹
APP Inventor 原是Google Lab 的一個子計劃,由一群工程師和Google 使用者共同設計完成。Google APP Inventor 是一個完全在線開發的Android 編程環境,拋棄復雜的程式代碼而使用積木式的堆疊法來完成Android 程式。對于Android 初學者或是機器人開發者來說是一大福音。因為對于想要手機和機器人交互的使用者而言,他們不太需要太華麗的界面,只要使用基本元件列如按鈕、文字輸入輸出即可。MIT APP Inventor 組件設計界面如圖8 所示,MIT APP Inventor邏輯設計界面如圖9 所示。

圖8 MIT APP Inventor 組件設計界面

圖9 MIT APP Inventor 邏輯設計界面
3.3.2 手機APP 和Wi-Fi 模塊交互原理
使用APP Inventor 軟件編程調用MQTT 的通信工具獲取百度云物聯網的IP 地址、port 端口、idDevice、userName、password,使用MqttTCP 的接收topic 消息程序和發送消息程序來和Wi-Fi 模塊進行交互。
通過K210 人工智能開發板進行垃圾分類,AI 垃圾識別及分類精準地完成垃圾分類任務,具有精度高、處理快的特點,能夠高效代替人工,提高處理垃圾的效率。這個產品并不僅僅是替換人工,而且能在惡劣環境下工作,大大減去了垃圾回收成本,提高了垃圾回收率[7]。