劉開迪,張蕙玲,黎芷辰,陸思翰
(桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004)
中國是一個垃圾生產大國,垃圾年產量約4億噸,并以大約每年8%的速度增加。如今垃圾分類場與垃圾處理站都在超負荷運轉,而人們的垃圾分類意識仍然很淡薄。因此,針對傳統垃圾分類系統以及垃圾分類知識普及存在的問題,我們研制了一種可以引導、鼓勵人們進行垃圾分類的基于物聯網語音控制的垃圾分類系統[1]。
本系統主要由采集控制端、云服務平臺和PC上位機組成。設計方案如圖1所示。

圖1 設計方案
采集控制端以STM32為主控芯片配合檢測傳感器組成,采集垃圾桶重量、溢滿程度和煙霧濃度等參數,使用WiFi模塊將采集到的數據通過MQTT協議上傳到百度智能云天工物聯網平臺,數據以JSON格式傳輸。而百度智能云天工物聯網平臺可以預覽垃圾桶所有參數的變動。PC上位機將麥克風采集的語音上傳到百度EasyDL平臺,經過在線語音識別后將識別結果傳回上位機,上位機通過判斷識別的語音結果判斷垃圾種類,從而通過主控芯片控制舵機打開相應的垃圾桶蓋。用戶可在PC上位機界面查看語音識別結果、設置各項數據的閾值、訪問百度智能云查看數據等,實現遠程監控功能和在線識別語音功能。
主控芯片采用意法半導體公司出品的STM32F103RCT6微控制器(Micro Controller Unit, MCU)。其由HC-SR04超聲波測距傳感器、MQ-2煙霧傳感器、HX711壓力傳感器、ESP8266-WiFi模塊、AMS1117電源模塊、OLED液晶顯示屏等組成。該系統可實現的功能包括垃圾桶溢滿程度檢測、煙霧濃度檢測、重量采集、連接百度智能云天工物聯網平臺、顯示參數等。測量采集系統框圖如圖2所示。

圖2 測量采集系統
采用HC-SR04超聲波測距模塊可提供2~400 cm的非接觸式距離感測功能,測距精度可達3 mm。
STM32通過推挽輸出I/O引腳連接超聲波模塊的TRIG引腳觸發測距,給予10 μs的高電平信號。然后超聲波模塊自動發送8個40 kHz的方波,并自動檢測是否有信號返回。如果有信號返回,則通過I/O口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。

超聲波時序如圖3所示。

圖3 超聲波時序圖
MQ-2氣體傳感器的探測范圍極其廣泛、靈敏度高、響應快、穩定性好、壽命長、驅動電路簡單。MQ-2煙霧傳感器檢測火災煙霧是通過其輸出電壓與門限電壓比較得出。根據MQ-2的工作原理,其電導率隨著氣體濃度的增大而增大,其電阻是電導率的倒數,所以電阻隨之減小,其特性就相當于一個滑動變阻器。阻值R與空氣中被測氣體濃度C的計算關系式為:

STM32通過模擬輸入I/O引腳連接MQ-2氣體傳感器的AO引腳測量電壓,從而得到煙霧濃度。
HX711壓力傳感器是以HX711為核心的平行梁稱重裝置,其精度高、易加工、結構簡單緊湊、抗偏載能力強、固有頻率高。
應變式力傳感器的受力工作原理如圖4所示。將應變片粘貼到受力的力敏型彈性元件上,當彈性元件受力產生形變時,應變片產生相應的變化,并轉化成電阻的變化。將應變片接成電橋,力引起的電阻變化將轉換為測量電路的電壓變化, STM32通過模擬輸入I/O引腳模塊ADC測量輸出電壓的數值,再通過換算即可得到所測量物體的重量[4-6]。

圖4 應變式力傳感器的受力圖
采用0.96寸藍色OLED屏幕作為顯示模塊。STM32主控通過SPI協議控制OLED屏幕,可以顯示一些地方需要的漢字,電路連接簡單,可作為系統操作信息的輸出。
采用以ESP8266為主控的ESP-01模塊作為WiFi通信模塊。ESP-01模塊通過串口與單片機連接。將垃圾桶基本參數通過MQTT協議接入百度智能云天工物聯網[7]。
本系統選擇的物聯網環境為百度智能云天工物聯網平臺,使用MQTT協議進行數據傳輸。MQTT是一種低開銷、低帶寬占用和為遠程設備提供實時可靠消息服務的即時通信協議。其最大優點是基于訂閱/發布機制,在物聯網和嵌入式移動設備中可廣泛應用。MQTT 可以扮演3種不同的角色:發布者、訂閱者和服務器。百度智能云天工物聯網平臺提供了固定IP和端口的MQTT服務器作為數據轉發中轉站,實現了云存儲功能[8-9]。
本系統建立的云數據庫對系統進行信息管理,此信息系統結構如圖5所示。物聯網垃圾分類系統由變量信息、參數信息、警報信息、語音信息、個人信息組成。

圖5 信息系統結構
(1)變量信息由溢滿信息、煙霧濃度信息、重量信息組成。
(2)參數信息由控制顯示的參數、舵機控制的參數組成。
(3)警報信息由溢滿警報信息和煙霧警報信息組成。
(4)語音信息由語音次數信息和語音種類信息組成。
(5)個人信息由個人所扔垃圾重量和積分組成。
在本系統設計的數據庫中建立了以下4個表:變量表、參數表、警報信息表和個人信息表。
變量表見表1所列。

表1 變量表
百度EasyDL平臺是一款面向追求高效率開發的開發者提供的零門檻AI模型訓練與服務平臺。百度EasyDL平臺可以實現在線模型訓練和服務部署。其中,百度語音識別服務可以將語音識別轉換成文字。通過API接口上傳音頻文件,實現精準語音識別。包含中文、英語、粵語、四川話等多個識別模型,同時支持用戶語音識別模型在線自訓練[10]。
語音自訓練平臺可以有效解決語音識別模型精準率不高的問題,如語音識別應用的場景專業詞。在本項目中的垃圾詞匯通過自訓練可以提升語音識別的準確率。語音自訓練平臺的在線訓練特性可以緩解中斷性能短缺問題,上線模型的方式可以將模型部署到所應用的設備上。自訓練平臺流程如圖6所示。

圖6 自訓練平臺流程
PyQt5是Qt v5的Python版本,功能強大復雜,提供Qt Designer設計UI。PC上位機的PyQt5界面主要由串口設置、串口的接收與發送、AI語音識別、更改參數、垃圾桶狀態顯示、波形顯示6個部分組成。用戶進入系統后,服務器連接到百度EasyDL平臺,可保證實時進行語音識別。當STM32串口連接上位機后,可實時監測溢滿信息、煙霧濃度信息、重量信息等數據。并且可以對讀取的數據進行解析,并將數據的變化以折線圖的形式展示。可以選擇不同的語言種類,通過上位機采集的方式完成錄音,上傳到百度EasyDL平臺進行識別并反饋。PyQt5界面功能如圖7所示。

圖7 PyQt5界面功能
首先將采集數據的STM32系統板連接電源,并用串口連接上位機,將上位機聯網。打開PC上位機軟件,用戶會直接進入系統主頁面,如圖8所示。

圖8 系統主頁面
用戶點擊“串口檢測”后選擇串口,同時配置串口參數,然后打開串口,如圖9(a)所示。連接串口后可以在發送區向STM32發送數據,同時可以接收來自STM32的數據,如圖9(b)所示。用戶可以選擇所要識別的語音種類,點擊“開始錄音”進行錄音,點擊“停止錄音”結束錄音,點擊“識別”后可以顯示識別結果,如圖9(c)所示。用戶可以通過PC上位機讀取或更改STM32內的相關參數,如圖9(d)所示。用戶可以通過PC上位機查看STM32所連接的傳感器數據,如圖9(e)所示。上位機通過解析傳感器數據繪制成一個實時變化的折線圖,方便用戶觀察,如圖9(f)所示。

圖9 演示結果
本次我們設計的系統使用STM32通過傳感器采集垃圾桶參數,STM32連接WiFi模塊,通過MQTT協議連接到百度智能云服務器。上位機可以通過百度EasyDL平臺進行語音識別。單片機通過接收語音識別的結果利用舵機打開不同的垃圾桶蓋,完成語音控制垃圾分類。同時,可以在百度智能云天工物聯網平臺查看垃圾分類的相關信息,幫助城市垃圾分類的物聯網化,為無接觸式垃圾分類的發展提供參考。