西北民族大學電氣工程學院 黃劍林 韋國全 林偉杰 劉恩澤 劉 一
傳統垃圾箱存在內在設計缺點,一般的垃圾箱沒有遮蓋,垃圾溢出造成垃圾外扔,成為滋生并傳播病菌的大本營。另外,經過調查發現即使是沒有亂扔垃圾的現象,但是對垃圾的分類不合理,也是一種資源浪費。垃圾分類的意義重大,實行垃圾分類,可以防止空氣污染、減少對土地的侵占、提高資源利用率,垃圾分類已成為一個時代熱點,政策驅動垃圾分類正在全國推廣。針對上述問題,為了提高資源利用率和生活質量,同時滿足人們對于智能化的需求,本智能分類垃圾箱從實際出發解決及時垃圾清理、智能垃圾分類等問題。
使用Cortex-M4內核STM32F1系列芯片控制器作為控制單元,控制系統搭載舵機模塊、語音識別模塊、按鍵模塊、溫濕度傳感器、顯示屏模塊、短信模塊、超聲波傳感器、稱重模塊、定位模塊等組成(如圖1所示),對垃圾箱進行再造升級。

圖1 系統框圖
本項目研究的是基于MCU的智能分類垃圾箱,其主要功能是實現智能分類。語音交互的過程就是用戶發出信號,語音模塊LD3320會對信號進行頻譜分析,再由STM32檢索數據庫內180多種垃圾進行匹配,成功后由舵機模塊打開相對應的垃圾箱口并在液晶顯示屏上顯示開箱信息;如果短時間內沒有反應,可以通過液晶顯示屏來觸摸按鈕打開對應的垃圾箱口。本項目還搭載各種智能環境監測模塊,如滿箱監測、氣味監測、秤重監測以及溫濕度監測等,也可以通過手機端觀察數據等并對不合格現象提供多種解決辦法。其可通過GSM模塊提醒管理者,管理者可通過GPS定位模塊(僅管理員使用)悉知附近每個垃圾箱分布情況,以便于解決緊急問題。
2.1.1 垃圾分類功能
本項功能主要基于垃圾容納部分、數據庫處理部分、人機交互部分、程序設計及優化部分。
(1)垃圾箱結構部分:四分類垃圾箱(可回收垃圾、有害垃圾、干垃圾、濕垃圾),主要用金屬或者塑料等適合的材質制造垃圾儲存的部分,使垃圾箱本身的響應迅速便利。
(2)數據庫處理部分:在本項目中要將生活中常見的180多種垃圾信息建成數據庫,這是整個項目的主要部分,其他部分與此處進行查詢進而響應,針對不同的垃圾產生不同的應激反應。
(3)人機交互部分:該部分是此機器從外界獲取信息的部分,其將會應用類似于LD3320語音識別模塊獲取外界信息,作為響應數據傳到機器系統中,機器系統根據傳來的信息進行處理,把應該打開的垃圾箱口通過可觸摸顯示屏反饋給用戶。此后可根據反饋的信息選擇應開啟的垃圾箱口,實現垃圾分類投放的功能。
(4)程序設計優化部分:該部分是整個項目的核心,其以STM32為處理核心,使用Keil對本項目進行分模塊編程,主要實現的是從人機交互部分獲取信息,進而在數據庫中對該信息進行查找并將結果反饋在可觸摸顯示屏幕上。在用戶選擇了所要開啟的箱口之后,向垃圾容納部分輸出PWM波控制舵機偏轉一定的角度從而打開箱口,實現垃圾分類投放。
2.1.2 智能監測功能
本功能是在垃圾箱實現智能分類的前提下,集合溫濕度傳感器、氣味傳感器、稱重模塊、超聲波傳感器等對垃圾箱內側環境進行智能監測,保證智能垃圾箱的正常工作。
(1)溫濕度傳感器:采用DHT11溫濕度數字傳感器來實時監測箱內溫度和濕度,并把溫濕度顯示于顯示屏上。DHT11溫度精確校準,且其信號輸出距離長、響應快。管理員通過設置兩個閾值(即上限值和下限值)來判斷箱內是否存在火源或者過于潮濕(易滋生過多細菌),以便打開換氣扇。當超過閾值會及時通過手機APP推送或者發送短信給管理員,提醒其要及時進行安全處理。
(2)氣味傳感器:采用類5A-VOC100氣味、異味傳感器,這類傳感器響應時間短,具有極高的靈敏度,所以用來實時監測箱內氣體濃度(甲醛、氨氣、氫氣、酒精、一氧化碳等),將濃度顯示于顯示屏上。由管理員設定一個閾值,當超過閾值時開啟換氣扇模塊,將內部的空氣迅速排出,防止垃圾分解產生的易燃氣發生爆炸。
(3)超聲波傳感器:采用超聲波測距模塊對箱內垃圾高度進行監測,由用戶設定閾值,當達到這個閾值時即臨近滿箱,系統會及時通過手機APP推送或者發送短信給管理員,提醒其及時清理。
(4)稱重壓力傳感器:采用HX711模塊來測箱內的重力壓力,將測出的重力壓力顯示在可觸摸顯示屏上,由管理員設定閾值,如果超過閾值則滿載將會及時發送短信或者手機APP推送給管理員,同時箱的指示燈變紅,提醒其他用戶不可用此箱。
2.1.3 定位功能
GPS定位模塊:管理員可以通過GPS定位模塊獲取多個智能分類垃圾箱的具體投放位置,以便在出故障或者緊急情況之時,通過通信接收到的信號利用電腦上位機觀察信號所在的具體位置,從而可以快速的到達故障現場。
2.1.4 通訊功能
通過手機APP隨時監測智能分類垃圾箱的上述各種情況,當出現緊急情況的時候及時發送短信通知管理員。
本項目使用12.6V的鋰電池作為電源,整個系統還需用到5V電源為MCU以及部分模塊供電、3.3V電源為部分模塊供電。另外,需要使用兩個可調降壓模塊使鋰電池電源提供的電壓分為兩種不同大小的電壓以滿足系統需要,從而保證能夠為MCU及所用到的模塊提供其所需要的電壓,以便滿足項目所需。
根據MCU不同I/O口所具有的硬件資源將不同模塊接在合適的I/O口上,以合理使用硬件資源;此外,大多數模塊采用串口通信,為了滿足模塊能夠實現其功能并能夠進行相互間的通信從而滿足項目需要,需要將MCU的串口資源進行分配使其不存在沖突,以便順利完成項目所需要的功能。其中,LD3320語音模塊使用USART4、GPS北斗雙定位模塊使用USART3、GSM/GPRS模塊使用USART2,剩下兩個串口當作備用。此外,MCU的定時器資源也需要合理分配給各個模塊使用。
本項目中使用的編程語言是C語言,使用的編譯器為Keil 5。Keil編譯器完美的支持使用C語言對STM32系列芯片的驅動,該編譯器功能非常強大,其能確定bai的Keil RTX,小封裝實時操作du系統(帶源碼),支持在線仿真功能;同時,可以通過觀察窗看到每一個寄存器的值,也可以更加直觀的看到程序設計時出現的錯誤并及時改正,對于程序的調試非常有幫助。程序編寫時使用模塊化編程,把不同模塊的初始化及驅動過程封裝在不同的.c文件中。模塊化編程最大的好處就是程序的可閱讀力比較強,編程思路的體現更加清晰,對于程序的分模塊調試以及程序修改也非常方便。在本項目中使用到的功能有I/O口復用、IIC通訊、PWM波的輸出、串口通訊、定時器中斷、外部中斷、定時器等。本程序執行流程圖如圖2所示。
在代碼設計與實現中要進行反復調試,確保能夠達到預期的效果,可通過上位機來模擬智能垃圾箱實現自動分類功能。針對程序中出現的問題我們應該從現象入手分析,對每一次的現象和數據進行記錄,通過比較找出最好的數據提供給使用者。如果現象并不明顯可靠,也可以使用Matlab進行仿真計算出比較完美的值或者使用更好的算法來優化項目成品。

圖2 程序執行流程圖
總結與展望:本項目設計的“智能分類垃圾箱”通過語音模塊來實現智能垃圾分類處理,通過增加觸摸按鍵輔助實現垃圾分類;可以增加多類環境傳感器來監控垃圾箱正常工作,在此基礎上添加定位系統和短信接收系統,能夠幫助管理員盡快處理問題。此款垃圾箱在模擬的環境中可以完成既定任務,有較強的實用性。本項目設計的智能分類垃圾箱控制系統具有一定的使用價值,但功能還不夠完備。比如垃圾分類中數據做的不夠全面,需要在此基礎上增加垃圾大數據庫,以便更好的識別監測信號,又好又快的實現垃圾箱的開與關;另外,可以使用集成芯片來減少項目成本,使該垃圾箱更好的服務于人們的實際生活。