張燕,屈海朋
(鄭州科技學院,河南 鄭州 450064)
近年來,寵物在人們生活中扮演著越來越重要的角色,喂養寵物的家庭也日益增多,特別是空巢老人及獨居青年,寵物的陪伴讓他們的生活不再單調,也更加充實。但是當白天長時間無人在家或主人出差時,寵物的正常喂食無法得到保障,不能及時的補充食物和水源,寵物的喂養也成為了一個難題,因此寵物的自動喂食備受關注,很多學者也在積極研究自動化的寵物喂養系統。
楊琳等人設計了一款基于STC89C52的智能寵物定時喂食器,能夠實現自動、定時、定量的喂養寵物,但需要通過按鍵進行手動設置喂食時間。王瑾等人設計的寵物喂食器控制系統,采用熱釋電傳感器感應寵物位置,進而控制電磁閥完成自動供水,但可能存在誤操作的情況。白亞梅設計了智能化的家養寵物喂食器,使用STM8單片機作為主控制器,能夠設定喂食時間進行定時喂養,通過控制電機運行時間的長短來控制喂食量,可能會造成過量喂食或浪費,不夠智能化。本文在此基礎上,提出了一種基于單片機的寵物自動喂食控制系統,按照設定的時間完成自動喂食,并通過重力感應器和水位傳感器智能控制喂食量和注水量,讓寵物在無人看管時也能夠正常飲食,彌補了傳統喂養的不足。
系統總體框圖如圖1所示,由電源模塊、定時模塊、語音播報模塊、投食裝置、注水裝置、LCD顯示模塊、按鍵模塊和藍牙模塊等組成。電源模塊以5 V的直流電壓為單片機、電機驅動電路、LCD顯示模塊等模塊進行供電。定時模塊通過專門的時鐘芯片來實現,根據一日三餐的標準飲食時間來設定定時時間。語音播報模塊可以在自動喂食時,播放錄制好的主人聲音來引導寵物自主進食。水位檢測模塊采用水位檢測傳感器來監測當前水位,當低于設定的水位時,觸發繼電器控制水泵向水槽注水;當水位高于設定的水位時,通過主控制器關閉繼電器停止注水。重力感應模塊采用重力傳感器來監測當前食物重量,當低于當前設定閾值時,電機驅動電路會驅動步進電機進行投食。此外,系統中還增加了藍牙模塊,能夠使用手機以無線的方式實現按鍵模塊的功能,設定定時時間,并可以用手機控制開啟和關閉手動喂食。
本設計選用宏晶公司所研發的單片機STC89C52作為核心控制器,STC89C52是一種低功耗、高性能CMOS8位微控制器,內置有8 k的flash、512字節RAM、32個I/O口、3個16位定時器/計數器以及全雙工串行口,具有成本低、功能完善的優勢,內置的閃存空間既能夠滿足數據存儲的需求,在掉電時也可以保障數據不丟失,能夠較好的滿足本系統的設計要求。核心控制器STC89C52的最小系統由STC89C52芯片、晶振電路、復位電路、電源電路等組成,如圖2所示。核心控制器可以獲取時鐘芯片的時間,通過顯示電路顯示當前時間,且當達到定時時間時,驅動投食裝置和注水裝置工作。

圖1 系統總體架構

圖2 STC89C52最小系統
本設計選用DS1302芯片作為時鐘模塊的核心,該芯片能夠自動調整時分秒,具有斷電保護措施,在電源關閉后再次打開時也能夠準確計時。通過向單片機提供一定頻率的脈沖進行有效計時,核心控制器以DS1302提供的時間為參數,設定寵物的用餐基準時鐘,經過處理后在LCD顯示器上顯示出當前時間。時鐘電路如圖3所示。

圖3 時鐘電路
用戶可以根據寵物日常進食的時間來自主設定自動喂食時間,比如仿照人類的一日三餐來設定,當喂食結束,采用WT588D語音芯片來實現語音播報的功能,其中WT588D芯片的VDD和VCC引腳連接電源,PWM+引腳和PWM-引腳分別接入揚聲器的正負極,從而驅動揚聲器來播報聲音,具體電路如圖4所示。此語音芯片編程實現比較簡單,并且能夠反復擦寫,內嵌高速音頻處理器,處理速度非常快,可以將預先設定的語音燒錄到語音芯片中,當達到喂食時間或手動開啟喂食操作時,語音芯片接收到單片機輸出的高電平信號,通過揚聲器播放預設的語音內容吸引寵物進食。

圖4 語音播報接口電路
本設計采用5個獨立按鍵,按鍵K1用來調整當前時間和喂食時間的設定,按鍵K2、K3用來控制數值的加減,按鍵K4用來控制手動喂食的開啟,按鍵K5用來控制手動喂食關閉,按鍵電路如圖5所示。首次使用本系統時,在接通電源并進行初始化后,要先通過按鍵來設定喂食的時間,可以采用一日三餐的頻次進行設定,設置完成后,距離當前時間最近的一次喂食時間會在液晶顯示器中進行顯示。此外,水位傳感器的水位閾值及重力傳感器的重量閾值也是通過按鍵電路來實現。

圖5 按鍵電路
采用LCD1602顯示屏來顯示當前的時間和定時時間,LCD1602耗電少,能夠顯示多種數據類型,由點陣字符位組成,且軟件設計更容易實現。本設計中的時間采用24小時制進行顯示,液晶顯示模塊會顯示兩部分內容,第一行顯示當前時鐘時間,第二行顯示下一次喂食時間。LCD1602顯示模塊電路設計如圖6所示。
藍牙模塊采用HC-05芯片,它在設計上是主從一體的,且HC-05芯片可以與具有藍牙功能的設備連接并匹配,即可以與用戶的智能手機或PAD配對連接,并支持4 800~1 382 400的波特率范圍,且能與3.3 V或5 V的單片機兼容,非常方便且靈活,HC-05藍牙模塊接口電路如圖7所示。用戶可以直接打開手機藍牙并連接HC-05模塊,通過藍牙串口APP界面上的按鈕來實現按鍵的功能,可以設定當前時間和喂食時間,并通過手機控制手動喂食的開啟和關閉操作。

圖6 LCD1602顯示模塊接口電路

圖7 HC-05藍牙模塊接口電路
此處采用步進電機驅動來添加食物,使用繼電器控制水泵實現加水。當達到預先設定的喂食時間時,系統會自動進行喂食和加水的操作。注水裝置使用水位傳感器來測量當前水位,當低于設定的閾值時,會控制繼電器開啟,驅動水泵加水;當水位高于設定的閾值時,代表當前水量充足,無需加水,注水裝置電路如圖8所示。投食裝置采用重力感應器監測當前食物重量,當低于閾值時,步進電機工作執行喂食;當高于閾值時,無需再添加食物,投食裝置電路如圖9所示。同時,語音播報模塊會通過擴音器播放預先錄制或設定的聲音,吸引寵物前來進食。采用水位傳感器和重力感應器,能夠更智能的完成自動喂食和注水的操作,避免過量喂食和水滿溢出的情況,也更加實用。

圖8 注水裝置電路

圖9 投食裝置電路
自動喂食系統的實現還需要軟件來設計,本系統采用Keil uVision5版本的開發環境,使用C語言來編寫程序實現各模塊的功能。
首先對系統各模塊進行初始化,初始化的過程包括液晶顯示模塊的初始化、時鐘電路的初始化、語音模塊的初始化、步進電機初始化等,顯示模塊初始化后會清屏,主控制器接收到時鐘芯片的時鐘后會在液晶顯示器中顯示,然后通過按鍵對時間進行校正,并設定自動喂食時間。本設計中喂食有兩種方式,手動喂食和自動喂食。當用戶在家時,按下手動控制按鍵來開啟喂食或通過手機藍牙連接系統后點擊APP中的手動控制按鈕,按鍵按下后,主控制器驅動步進電機進行投食,并打開繼電器啟動水泵加水,然后輸出高電平控制語音播報聲音;當用戶不在家時,通過設定的三次喂食時間進行自動喂食,即達到設定的喂食時間時,主控制器驅動步進電機和繼電器工作,并控制語音模塊播報聲音。主程序流程圖如圖10所示。
當手動喂食開啟或達到設定的喂食時間時,啟動喂食子程序,具體流程為先判斷食槽余量是否低于設定閾值,若低于閾值則步進電機工作進行供食,若高于閾值則跳過本次供食;然后比較當前水槽的水位與設定的閾值,若低于設定值,則打開繼電器啟動水泵加水,若高于設定值,跳過本次注水;最后播報語音吸引寵物進食。喂食子程序流程圖如圖11所示。
顯示模塊采用LCD1602顯示屏來顯示時間,系統啟動后,屏幕先進行初始化并清屏,獲取寫入指令和寫入地址,設置顯示位置并顯示數據。顯示子程序流程圖如圖12所示。
為了驗證本設計的性能,對系統的各個模塊進行了測試。首先檢查硬件電路的連線和焊接是否準確;然后測試各功能模塊,按鍵能否正確設置,顯示屏中是否能準確顯示出兩行數據,及電機和水泵能否正常開關;最后測試系統是否能夠正常工作。

圖10 主程序流程圖

圖11 喂食子程序流程圖

圖12 LCD顯示子程序
本系統有手動和自動兩種工作方式,分別進行了測試,自動方式喂食的時間設定為10:00、14:00和20:00,手動方式采用隨機時間,每天兩次操作。對2022年3月1日—2022年3月15日期間的電機工作次數、水泵工作次數及語音播報次數的數據進行記錄(其中2022年3月10日上午10:00—12:00停電兩小時),測試結果如表1所示。

表1 測試數據
從表1可以看出,系統在設定的喂食時間及手動喂食時都能夠正常投食及播報語音數據,步進電機是否工作與食槽中余量有關,當余量較多時,無需進行喂食;水泵是否工作與當前的水位有關,水位傳感器實時測量當前水位,當水位較高時,無需加水;因此步進電機和水泵的工作次數相對較少,根據語音播報的次數來驗證系統工作均處于正常狀態。在測試過程中,由于中間停電2小時造成系統斷電,無法正常工作,但在斷電重啟后也能正常喂食。經測試,本系統能夠正常進行手動及自動喂食,且系統健壯性良好。
本設計的主要內容是寵物自動喂食控制系統,根據預設的時間定時對寵物進行自動喂食,減輕了用戶的喂養負擔,重力傳感器測量當前食物的余量,避免過度喂食;水位傳感器測量當前水位,水量不足時加水,水量充足時不進行操作,從而避免水的溢出,減少浪費。
經過為期一個月的重復測試,表明本設計能夠實現寵物的自動喂食,方便用戶對寵物進食的管理,且在喂食時能夠播報用戶提前錄制的聲音,能夠吸引寵物更好的進食,解決了用戶長時間不在家時的寵物喂養問題,系統運行可靠穩定,具有良好的應用前景。