張燕,屈海朋
(鄭州科技學(xué)院,河南 鄭州 450064)
近年來,寵物在人們生活中扮演著越來越重要的角色,喂養(yǎng)寵物的家庭也日益增多,特別是空巢老人及獨(dú)居青年,寵物的陪伴讓他們的生活不再單調(diào),也更加充實(shí)。但是當(dāng)白天長時(shí)間無人在家或主人出差時(shí),寵物的正常喂食無法得到保障,不能及時(shí)的補(bǔ)充食物和水源,寵物的喂養(yǎng)也成為了一個(gè)難題,因此寵物的自動(dòng)喂食備受關(guān)注,很多學(xué)者也在積極研究自動(dòng)化的寵物喂養(yǎng)系統(tǒng)。
楊琳等人設(shè)計(jì)了一款基于STC89C52的智能寵物定時(shí)喂食器,能夠?qū)崿F(xiàn)自動(dòng)、定時(shí)、定量的喂養(yǎng)寵物,但需要通過按鍵進(jìn)行手動(dòng)設(shè)置喂食時(shí)間。王瑾等人設(shè)計(jì)的寵物喂食器控制系統(tǒng),采用熱釋電傳感器感應(yīng)寵物位置,進(jìn)而控制電磁閥完成自動(dòng)供水,但可能存在誤操作的情況。白亞梅設(shè)計(jì)了智能化的家養(yǎng)寵物喂食器,使用STM8單片機(jī)作為主控制器,能夠設(shè)定喂食時(shí)間進(jìn)行定時(shí)喂養(yǎng),通過控制電機(jī)運(yùn)行時(shí)間的長短來控制喂食量,可能會(huì)造成過量喂食或浪費(fèi),不夠智能化。本文在此基礎(chǔ)上,提出了一種基于單片機(jī)的寵物自動(dòng)喂食控制系統(tǒng),按照設(shè)定的時(shí)間完成自動(dòng)喂食,并通過重力感應(yīng)器和水位傳感器智能控制喂食量和注水量,讓寵物在無人看管時(shí)也能夠正常飲食,彌補(bǔ)了傳統(tǒng)喂養(yǎng)的不足。
系統(tǒng)總體框圖如圖1所示,由電源模塊、定時(shí)模塊、語音播報(bào)模塊、投食裝置、注水裝置、LCD顯示模塊、按鍵模塊和藍(lán)牙模塊等組成。電源模塊以5 V的直流電壓為單片機(jī)、電機(jī)驅(qū)動(dòng)電路、LCD顯示模塊等模塊進(jìn)行供電。定時(shí)模塊通過專門的時(shí)鐘芯片來實(shí)現(xiàn),根據(jù)一日三餐的標(biāo)準(zhǔn)飲食時(shí)間來設(shè)定定時(shí)時(shí)間。語音播報(bào)模塊可以在自動(dòng)喂食時(shí),播放錄制好的主人聲音來引導(dǎo)寵物自主進(jìn)食。水位檢測(cè)模塊采用水位檢測(cè)傳感器來監(jiān)測(cè)當(dāng)前水位,當(dāng)?shù)陀谠O(shè)定的水位時(shí),觸發(fā)繼電器控制水泵向水槽注水;當(dāng)水位高于設(shè)定的水位時(shí),通過主控制器關(guān)閉繼電器停止注水。重力感應(yīng)模塊采用重力傳感器來監(jiān)測(cè)當(dāng)前食物重量,當(dāng)?shù)陀诋?dāng)前設(shè)定閾值時(shí),電機(jī)驅(qū)動(dòng)電路會(huì)驅(qū)動(dòng)步進(jìn)電機(jī)進(jìn)行投食。此外,系統(tǒng)中還增加了藍(lán)牙模塊,能夠使用手機(jī)以無線的方式實(shí)現(xiàn)按鍵模塊的功能,設(shè)定定時(shí)時(shí)間,并可以用手機(jī)控制開啟和關(guān)閉手動(dòng)喂食。
本設(shè)計(jì)選用宏晶公司所研發(fā)的單片機(jī)STC89C52作為核心控制器,STC89C52是一種低功耗、高性能CMOS8位微控制器,內(nèi)置有8 k的flash、512字節(jié)RAM、32個(gè)I/O口、3個(gè)16位定時(shí)器/計(jì)數(shù)器以及全雙工串行口,具有成本低、功能完善的優(yōu)勢(shì),內(nèi)置的閃存空間既能夠滿足數(shù)據(jù)存儲(chǔ)的需求,在掉電時(shí)也可以保障數(shù)據(jù)不丟失,能夠較好的滿足本系統(tǒng)的設(shè)計(jì)要求。核心控制器STC89C52的最小系統(tǒng)由STC89C52芯片、晶振電路、復(fù)位電路、電源電路等組成,如圖2所示。核心控制器可以獲取時(shí)鐘芯片的時(shí)間,通過顯示電路顯示當(dāng)前時(shí)間,且當(dāng)達(dá)到定時(shí)時(shí)間時(shí),驅(qū)動(dòng)投食裝置和注水裝置工作。
圖1 系統(tǒng)總體架構(gòu)
圖2 STC89C52最小系統(tǒng)
本設(shè)計(jì)選用DS1302芯片作為時(shí)鐘模塊的核心,該芯片能夠自動(dòng)調(diào)整時(shí)分秒,具有斷電保護(hù)措施,在電源關(guān)閉后再次打開時(shí)也能夠準(zhǔn)確計(jì)時(shí)。通過向單片機(jī)提供一定頻率的脈沖進(jìn)行有效計(jì)時(shí),核心控制器以DS1302提供的時(shí)間為參數(shù),設(shè)定寵物的用餐基準(zhǔn)時(shí)鐘,經(jīng)過處理后在LCD顯示器上顯示出當(dāng)前時(shí)間。時(shí)鐘電路如圖3所示。
圖3 時(shí)鐘電路
用戶可以根據(jù)寵物日常進(jìn)食的時(shí)間來自主設(shè)定自動(dòng)喂食時(shí)間,比如仿照人類的一日三餐來設(shè)定,當(dāng)喂食結(jié)束,采用WT588D語音芯片來實(shí)現(xiàn)語音播報(bào)的功能,其中WT588D芯片的VDD和VCC引腳連接電源,PWM+引腳和PWM-引腳分別接入揚(yáng)聲器的正負(fù)極,從而驅(qū)動(dòng)揚(yáng)聲器來播報(bào)聲音,具體電路如圖4所示。此語音芯片編程實(shí)現(xiàn)比較簡單,并且能夠反復(fù)擦寫,內(nèi)嵌高速音頻處理器,處理速度非???,可以將預(yù)先設(shè)定的語音燒錄到語音芯片中,當(dāng)達(dá)到喂食時(shí)間或手動(dòng)開啟喂食操作時(shí),語音芯片接收到單片機(jī)輸出的高電平信號(hào),通過揚(yáng)聲器播放預(yù)設(shè)的語音內(nèi)容吸引寵物進(jìn)食。
圖4 語音播報(bào)接口電路
本設(shè)計(jì)采用5個(gè)獨(dú)立按鍵,按鍵K1用來調(diào)整當(dāng)前時(shí)間和喂食時(shí)間的設(shè)定,按鍵K2、K3用來控制數(shù)值的加減,按鍵K4用來控制手動(dòng)喂食的開啟,按鍵K5用來控制手動(dòng)喂食關(guān)閉,按鍵電路如圖5所示。首次使用本系統(tǒng)時(shí),在接通電源并進(jìn)行初始化后,要先通過按鍵來設(shè)定喂食的時(shí)間,可以采用一日三餐的頻次進(jìn)行設(shè)定,設(shè)置完成后,距離當(dāng)前時(shí)間最近的一次喂食時(shí)間會(huì)在液晶顯示器中進(jìn)行顯示。此外,水位傳感器的水位閾值及重力傳感器的重量閾值也是通過按鍵電路來實(shí)現(xiàn)。
圖5 按鍵電路
采用LCD1602顯示屏來顯示當(dāng)前的時(shí)間和定時(shí)時(shí)間,LCD1602耗電少,能夠顯示多種數(shù)據(jù)類型,由點(diǎn)陣字符位組成,且軟件設(shè)計(jì)更容易實(shí)現(xiàn)。本設(shè)計(jì)中的時(shí)間采用24小時(shí)制進(jìn)行顯示,液晶顯示模塊會(huì)顯示兩部分內(nèi)容,第一行顯示當(dāng)前時(shí)鐘時(shí)間,第二行顯示下一次喂食時(shí)間。LCD1602顯示模塊電路設(shè)計(jì)如圖6所示。
藍(lán)牙模塊采用HC-05芯片,它在設(shè)計(jì)上是主從一體的,且HC-05芯片可以與具有藍(lán)牙功能的設(shè)備連接并匹配,即可以與用戶的智能手機(jī)或PAD配對(duì)連接,并支持4 800~1 382 400的波特率范圍,且能與3.3 V或5 V的單片機(jī)兼容,非常方便且靈活,HC-05藍(lán)牙模塊接口電路如圖7所示。用戶可以直接打開手機(jī)藍(lán)牙并連接HC-05模塊,通過藍(lán)牙串口APP界面上的按鈕來實(shí)現(xiàn)按鍵的功能,可以設(shè)定當(dāng)前時(shí)間和喂食時(shí)間,并通過手機(jī)控制手動(dòng)喂食的開啟和關(guān)閉操作。
圖6 LCD1602顯示模塊接口電路
圖7 HC-05藍(lán)牙模塊接口電路
此處采用步進(jìn)電機(jī)驅(qū)動(dòng)來添加食物,使用繼電器控制水泵實(shí)現(xiàn)加水。當(dāng)達(dá)到預(yù)先設(shè)定的喂食時(shí)間時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)行喂食和加水的操作。注水裝置使用水位傳感器來測(cè)量當(dāng)前水位,當(dāng)?shù)陀谠O(shè)定的閾值時(shí),會(huì)控制繼電器開啟,驅(qū)動(dòng)水泵加水;當(dāng)水位高于設(shè)定的閾值時(shí),代表當(dāng)前水量充足,無需加水,注水裝置電路如圖8所示。投食裝置采用重力感應(yīng)器監(jiān)測(cè)當(dāng)前食物重量,當(dāng)?shù)陀陂撝禃r(shí),步進(jìn)電機(jī)工作執(zhí)行喂食;當(dāng)高于閾值時(shí),無需再添加食物,投食裝置電路如圖9所示。同時(shí),語音播報(bào)模塊會(huì)通過擴(kuò)音器播放預(yù)先錄制或設(shè)定的聲音,吸引寵物前來進(jìn)食。采用水位傳感器和重力感應(yīng)器,能夠更智能的完成自動(dòng)喂食和注水的操作,避免過量喂食和水滿溢出的情況,也更加實(shí)用。
圖8 注水裝置電路
圖9 投食裝置電路
自動(dòng)喂食系統(tǒng)的實(shí)現(xiàn)還需要軟件來設(shè)計(jì),本系統(tǒng)采用Keil uVision5版本的開發(fā)環(huán)境,使用C語言來編寫程序?qū)崿F(xiàn)各模塊的功能。
首先對(duì)系統(tǒng)各模塊進(jìn)行初始化,初始化的過程包括液晶顯示模塊的初始化、時(shí)鐘電路的初始化、語音模塊的初始化、步進(jìn)電機(jī)初始化等,顯示模塊初始化后會(huì)清屏,主控制器接收到時(shí)鐘芯片的時(shí)鐘后會(huì)在液晶顯示器中顯示,然后通過按鍵對(duì)時(shí)間進(jìn)行校正,并設(shè)定自動(dòng)喂食時(shí)間。本設(shè)計(jì)中喂食有兩種方式,手動(dòng)喂食和自動(dòng)喂食。當(dāng)用戶在家時(shí),按下手動(dòng)控制按鍵來開啟喂食或通過手機(jī)藍(lán)牙連接系統(tǒng)后點(diǎn)擊APP中的手動(dòng)控制按鈕,按鍵按下后,主控制器驅(qū)動(dòng)步進(jìn)電機(jī)進(jìn)行投食,并打開繼電器啟動(dòng)水泵加水,然后輸出高電平控制語音播報(bào)聲音;當(dāng)用戶不在家時(shí),通過設(shè)定的三次喂食時(shí)間進(jìn)行自動(dòng)喂食,即達(dá)到設(shè)定的喂食時(shí)間時(shí),主控制器驅(qū)動(dòng)步進(jìn)電機(jī)和繼電器工作,并控制語音模塊播報(bào)聲音。主程序流程圖如圖10所示。
當(dāng)手動(dòng)喂食開啟或達(dá)到設(shè)定的喂食時(shí)間時(shí),啟動(dòng)喂食子程序,具體流程為先判斷食槽余量是否低于設(shè)定閾值,若低于閾值則步進(jìn)電機(jī)工作進(jìn)行供食,若高于閾值則跳過本次供食;然后比較當(dāng)前水槽的水位與設(shè)定的閾值,若低于設(shè)定值,則打開繼電器啟動(dòng)水泵加水,若高于設(shè)定值,跳過本次注水;最后播報(bào)語音吸引寵物進(jìn)食。喂食子程序流程圖如圖11所示。
顯示模塊采用LCD1602顯示屏來顯示時(shí)間,系統(tǒng)啟動(dòng)后,屏幕先進(jìn)行初始化并清屏,獲取寫入指令和寫入地址,設(shè)置顯示位置并顯示數(shù)據(jù)。顯示子程序流程圖如圖12所示。
為了驗(yàn)證本設(shè)計(jì)的性能,對(duì)系統(tǒng)的各個(gè)模塊進(jìn)行了測(cè)試。首先檢查硬件電路的連線和焊接是否準(zhǔn)確;然后測(cè)試各功能模塊,按鍵能否正確設(shè)置,顯示屏中是否能準(zhǔn)確顯示出兩行數(shù)據(jù),及電機(jī)和水泵能否正常開關(guān);最后測(cè)試系統(tǒng)是否能夠正常工作。
圖10 主程序流程圖
圖11 喂食子程序流程圖
圖12 LCD顯示子程序
本系統(tǒng)有手動(dòng)和自動(dòng)兩種工作方式,分別進(jìn)行了測(cè)試,自動(dòng)方式喂食的時(shí)間設(shè)定為10:00、14:00和20:00,手動(dòng)方式采用隨機(jī)時(shí)間,每天兩次操作。對(duì)2022年3月1日—2022年3月15日期間的電機(jī)工作次數(shù)、水泵工作次數(shù)及語音播報(bào)次數(shù)的數(shù)據(jù)進(jìn)行記錄(其中2022年3月10日上午10:00—12:00停電兩小時(shí)),測(cè)試結(jié)果如表1所示。
表1 測(cè)試數(shù)據(jù)
從表1可以看出,系統(tǒng)在設(shè)定的喂食時(shí)間及手動(dòng)喂食時(shí)都能夠正常投食及播報(bào)語音數(shù)據(jù),步進(jìn)電機(jī)是否工作與食槽中余量有關(guān),當(dāng)余量較多時(shí),無需進(jìn)行喂食;水泵是否工作與當(dāng)前的水位有關(guān),水位傳感器實(shí)時(shí)測(cè)量當(dāng)前水位,當(dāng)水位較高時(shí),無需加水;因此步進(jìn)電機(jī)和水泵的工作次數(shù)相對(duì)較少,根據(jù)語音播報(bào)的次數(shù)來驗(yàn)證系統(tǒng)工作均處于正常狀態(tài)。在測(cè)試過程中,由于中間停電2小時(shí)造成系統(tǒng)斷電,無法正常工作,但在斷電重啟后也能正常喂食。經(jīng)測(cè)試,本系統(tǒng)能夠正常進(jìn)行手動(dòng)及自動(dòng)喂食,且系統(tǒng)健壯性良好。
本設(shè)計(jì)的主要內(nèi)容是寵物自動(dòng)喂食控制系統(tǒng),根據(jù)預(yù)設(shè)的時(shí)間定時(shí)對(duì)寵物進(jìn)行自動(dòng)喂食,減輕了用戶的喂養(yǎng)負(fù)擔(dān),重力傳感器測(cè)量當(dāng)前食物的余量,避免過度喂食;水位傳感器測(cè)量當(dāng)前水位,水量不足時(shí)加水,水量充足時(shí)不進(jìn)行操作,從而避免水的溢出,減少浪費(fèi)。
經(jīng)過為期一個(gè)月的重復(fù)測(cè)試,表明本設(shè)計(jì)能夠?qū)崿F(xiàn)寵物的自動(dòng)喂食,方便用戶對(duì)寵物進(jìn)食的管理,且在喂食時(shí)能夠播報(bào)用戶提前錄制的聲音,能夠吸引寵物更好的進(jìn)食,解決了用戶長時(shí)間不在家時(shí)的寵物喂養(yǎng)問題,系統(tǒng)運(yùn)行可靠穩(wěn)定,具有良好的應(yīng)用前景。