焦嘉偉,劉華,常若葵
(天津農(nóng)學(xué)院 工程技術(shù)學(xué)院,天津西青,300380)
隨著我國社會經(jīng)濟的快速發(fā)展,人們休閑消費和情感寄托方式呈多樣化發(fā)展,因此許多家庭都會飼養(yǎng)寵物作為自己或孩子休閑的玩伴,寵物業(yè)也成了一種新興的產(chǎn)業(yè)。生活和工作的快節(jié)奏讓人們無法有充裕的時間照顧自己的寵物,甚至是無法按時喂養(yǎng)寵物,使得寵物出現(xiàn)食源性疾病[1]。特別是當(dāng)人們出差在外或者是旅游度假時,經(jīng)常不能及時地對家中的寵物給予很好的照顧,因此寵物的規(guī)律飲食成為困擾人們的主要問題。
2019 年楊琳、李媛等人[2]設(shè)計了一款自動、定時、定量喂養(yǎng)寵物的喂食器,但需要按鍵手動控制喂食時間。2021 年白亞梅[3]設(shè)計了一款控制電機運行時間來控制喂食量的寵物喂食器,但容易造成過量從而浪費。2022 年謝澤健[4]運用物聯(lián)網(wǎng)技術(shù)和單片機技術(shù)設(shè)計了遠(yuǎn)程寵物智能喂養(yǎng)系統(tǒng),但功能單一。本文將以實際需求為根本,人性化設(shè)計為理念化,設(shè)計一款寵物喂養(yǎng)遠(yuǎn)程控制系統(tǒng),為需要外出的寵物飼養(yǎng)者解決后顧之憂。
系統(tǒng)由傳感器采集溫濕度、重量、水位等信息,發(fā)送到STM32F103ZET6 單片機,單片機將數(shù)據(jù)打包成TLINK 平臺設(shè)定的協(xié)議格式,通過ATK-ESP8266 發(fā)送到TLINK 平臺。達到設(shè)定的時間后,TLINK 平臺向單片機發(fā)送指令,控制舵機及水泵工作以達到出食及出水的效果。本系統(tǒng)結(jié)構(gòu)框圖如圖1 所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
本系統(tǒng)選用STM32F103ZET6 最小系統(tǒng)板作為核心控制單元。相較于Arduino、51 系列單片機,STM32 系列單片機性價比高、功能豐富。STM32F103ZET6 微處理器為LQFP 封裝的通用型144 引腳的芯片,其工作溫度區(qū)間為-40℃~85℃,主頻72MHz。
稱重模塊選用的是全橋式電路搭配24 位高精度A/D 轉(zhuǎn)換器芯片HX711 稱重。傳感器的上下表面各有兩個電阻,當(dāng)外界載荷作用到承壓面時,電阻兩端電壓會發(fā)生變化,由于變化非常小[5],因此使用高精度A/D 轉(zhuǎn)換芯片HX711 放大信號并將其轉(zhuǎn)換為數(shù)字信號。與同類型其他模數(shù)轉(zhuǎn)換芯片相比,HX711 芯片內(nèi)部嵌入了包括穩(wěn)壓電源、片內(nèi)時鐘振蕩器等器件,減少了系統(tǒng)對外部資源的需求,具有集成度高、響應(yīng)速度快、抗干擾性能強等優(yōu)點[6]。
水位檢測模塊使用液位傳感器,其實物如圖2所示。
圖2 液位傳感器實物圖
該模塊利用三極管電流放大原理,當(dāng)液位足夠高時,電源正極與三極管基極導(dǎo)通,三極管的基極和發(fā)射極之間會產(chǎn)生一定大小的電流,此時三極管的集電極和發(fā)射極之間會產(chǎn)生一定放大倍數(shù)的電流,該電流經(jīng)發(fā)射極電阻產(chǎn)生電壓供AD 轉(zhuǎn)換器采集[7]。
溫濕度采集模塊使用的是DHT11 溫濕度傳感器模塊,該模塊優(yōu)點有:
(1)同時測量相對溫濕度;
(2)可靠性強、性能高、抗干擾、功耗低;
(3)獨立性高,體積?。?/p>
(4)無需AD 轉(zhuǎn)換,直接獲取溫濕度數(shù)據(jù)。該模塊被廣泛應(yīng)用于氣象、家電、醫(yī)療、室內(nèi)環(huán)境檢測等領(lǐng)域,圖3為DHT11 模塊實物圖。
圖3 DHT11 實物圖
語音模塊使用的是JQ9800-16P,該模塊選用SOC 方案,內(nèi)部集成了16 位的MCU 及具有音頻解碼功能的ADSP,保證了系統(tǒng)的音質(zhì)及穩(wěn)定性[8]。模塊具有內(nèi)部存儲功能,使用數(shù)據(jù)線連接電腦即可將需要播放的音頻傳入模塊。模塊共7 個I/O 口,可支持觸發(fā)播放19 段語音,使用時,只需為對應(yīng)I/O 口輸出低電平即可播放指定語音。
本系統(tǒng)的執(zhí)行機構(gòu)包括兩部分,分別是舵機和繼電器控制的水泵。舵機用于喂食,一般需要20ms 的時基脈沖控制,該脈沖的高電平部分一般為0.5ms~2.5ms 范圍內(nèi)的角度控制脈沖部分。當(dāng)需要供水時,STM32 向繼電器發(fā)送信號,控制繼電器閉合進而控制水泵出水。
聯(lián)網(wǎng)模塊使用的是高性能UART-WiFi 模塊ATKESP8266,該模塊網(wǎng)絡(luò)標(biāo)準(zhǔn)支持IEEE 802.11b/g/n,頻率可達2.484GHz 工作模式有三種,分別是WiFi STA 模式、WiFi AP 模式、WiFi STA+WiFi AP 模式。ATK-ESP8266 實物如圖4 所示。本設(shè)計使用了ATK-ESP8266 模塊的RX、TX 引腳,用于ESP8266 芯片與STM32 芯片之間串口通信。
按一般大田進行田間調(diào)查和統(tǒng)計。在小麥成熟后,每小區(qū)隨機選取10株進行考種,測量其株高、整齊度、穗長、穗粒數(shù)、分蘗數(shù)等指標(biāo)。同時,將每個小區(qū)分開,單收、單脫、單計產(chǎn)。
圖4 ATK-ESP8266 實物圖
系統(tǒng)主程序流程圖如圖5 所示。
圖5 主程序流程圖
首先對STM32 的系統(tǒng)時鐘進行初始化,確保其正常運行。其次對串口1 和串口2 初始化,并配置中斷優(yōu)先級,確保其正常接收數(shù)據(jù)。然后對定時器3 初始化,確保其可以正常發(fā)出PWM 波控制舵機旋轉(zhuǎn)。再依次初始化HX711、DHT11、ADC1 和ESP8266,確保各部分功能正常使用。然后向ESP8266 發(fā)送AT 指令,使其連接WiFi 及TLINK 物聯(lián)網(wǎng)平臺。再控制舵機回到初始位置,獲取毛皮重量。最后一步進入循環(huán):稱重—>液位檢測—>溫濕度檢測—>發(fā)送數(shù)據(jù)—>延時。
(1)HX711 數(shù)據(jù)采集
HX711 完整的獲取數(shù)據(jù)需經(jīng)過以下幾個步驟,首先使能PB 端口時鐘,其次將SCK 和DOUT 對應(yīng)的PB0 和PB1端口進行配置,設(shè)置為推挽輸出。讀取一次重量,將該重量設(shè)為毛皮重量,再次讀取時,判斷該重量是否大于毛皮重量,若是,則將該重量減毛皮重量即可得到實物重量,若不是,則繼續(xù)讀取數(shù)據(jù)。
(2)液位傳感器數(shù)據(jù)采集
當(dāng)液位高度到達一定值時,集電極和發(fā)射極產(chǎn)生的一定放大倍數(shù)的電流經(jīng)過發(fā)射極電阻會產(chǎn)生電壓,想得到液位傳感器的數(shù)據(jù)只需要進行AD 采集即可。ADC 進行采集時,首先要使能端口,對其用到的端口進行配置,將其優(yōu)先級分組設(shè)為1。其次要配置ADC,過程包括:使用軟件開啟連續(xù)轉(zhuǎn)換模式,設(shè)置轉(zhuǎn)換通道為1,分頻因子為8,72MHz/8 即9MHz,并將轉(zhuǎn)換結(jié)果右對齊,設(shè)置采樣周期為55.5 個時鐘周期,校準(zhǔn)ADC。最后進行數(shù)據(jù)的采集及處理,完成后清楚標(biāo)志位,中斷返回。
(3)DHT11 數(shù)據(jù)采集
DHT11 傳感器采用單總線數(shù)據(jù)格式,因此程序需嚴(yán)格按照時序要求設(shè)計。配置完端口后,主機需向DHT11 發(fā)送開始信號,DHT11 只有接收到主機發(fā)送的開始信號后才會觸發(fā)溫濕度采集。接收到信號后,拉高電平等待DHT11 響應(yīng)。響應(yīng)后,共需接收5 次數(shù)據(jù),最后一次數(shù)據(jù)接收完畢后,DHT11 需拉低總線55μs,隨后上拉電阻拉高總線進入空閑狀態(tài),等待下一次傳輸數(shù)據(jù)。接受完數(shù)據(jù)后,與檢驗位對比,檢查數(shù)據(jù)準(zhǔn)確性。
STM32接收到云平臺發(fā)出的指令后控制執(zhí)行機構(gòu)工作。執(zhí)行機構(gòu)工作流程圖如圖6 所示。
圖6 執(zhí)行機構(gòu)流程圖
“111”指令是控制出食的指令,當(dāng)單片機接收到該指令后,首先給語音模塊引腳一個低電平,使其播放吸引寵物進食的語音,然后定時器輸出PWM 波,控制舵機旋轉(zhuǎn)出食。
“222”指令是控制出水的指令,單片機接收到指令后,給繼電器引腳輸出電平,繼電器工作后控制水泵出水。
STM32 與ATK-ESP8266 連接及發(fā)送數(shù)據(jù)都需要使用串口2,因此需要對串口2 進行配置。首先配置USART2 和GPIO 時鐘,將PA2 設(shè)置為推挽輸出,速率50MHz,用于發(fā)送,PA3 設(shè)置為浮空輸入,用于接收。然后對串口2 進行設(shè)置,波特率設(shè)為115200,8 個數(shù)據(jù)為,1 個停止位,沒有奇偶校驗位,不使用硬件流控,只能發(fā)送和接收。向串口發(fā)送字符串使用sendString(USART_TypeDef *USARTx,char *str)函數(shù),USARTx 中的x 為目標(biāo)串口(1~3),str為字符串指針,例如sendString(USART2,"AT+RST ");的意思就是向串口2 發(fā)送AT+RST。
TLINK 是一個開放并且專注于物聯(lián)網(wǎng)服務(wù)的物聯(lián)網(wǎng)接入云平臺,目的是服務(wù)所有的工業(yè)、農(nóng)業(yè)、環(huán)境類傳感器使用者,使傳感器數(shù)據(jù)的接入、存儲和展現(xiàn)變得簡單[9]。ATK-ESP8266 配置完成連接云平臺后,向云平臺發(fā)送專屬序列號,即可連接設(shè)備。
本系統(tǒng)僅需一個設(shè)備即可展示各項參數(shù),因此將添加的設(shè)備命名為“Pet Feeding”,鏈接協(xié)議選擇“TCP”,同時可以設(shè)置掉線延時,當(dāng)TLINK 平臺1000 秒內(nèi)無數(shù)據(jù)接收,自動斷開連接。
STM32 要向云平臺上傳的數(shù)據(jù)有食物剩余量、食物投喂量、剩余水量、溫度、濕度。云平臺可向單片機發(fā)送指令,分別是開始喂食和開始喂水。編輯好設(shè)備后需要配置TLINK 的連接協(xié)議,TLINK 的IP 為“tcp.tlink.io”或“112.74.142.132”,TCP 連接的端口號為8647。用戶可以在TLINK 平臺使用“協(xié)議標(biāo)簽”自由編輯應(yīng)用協(xié)議,STM32 根據(jù)應(yīng)用協(xié)議發(fā)送數(shù)據(jù),TLINK 平臺即可根據(jù)協(xié)議解析需要的數(shù)據(jù)。數(shù)據(jù)頭標(biāo)簽和結(jié)束符標(biāo)簽用于數(shù)據(jù)包的開頭和結(jié)尾,數(shù)據(jù)標(biāo)簽用于傳輸有效數(shù)據(jù),每個數(shù)據(jù)標(biāo)簽后需緊跟一個分隔符標(biāo)簽。本系統(tǒng)使用的協(xié)議標(biāo)簽為[H:PF][S::][D?][S:;][D?][S:;][D?][S:;][D?][S:;][D?][S:;][D?][S:;][D?][S:;][T:#]。如收到的協(xié)議為PF:1864;120;50;1;0;52;25;#,代表此時系統(tǒng)對應(yīng)的各項參數(shù)為:食物剩余1864g,食物投喂120g,剩余水量50%,開始喂食,停止喂水,濕度52%RH,溫度25℃。
TLINK 平臺為設(shè)備事件觸發(fā)機制提供了觸發(fā)器功能,當(dāng)某個傳感器數(shù)據(jù)觸發(fā)設(shè)定閾值時,TLINK 云平臺根據(jù)用戶設(shè)置的報警方式自動發(fā)送報警信息給用戶,平臺共四種報警方式,分別是:短信、微信、郵箱、語音。在本系統(tǒng)中,需添加三個觸發(fā)器,用于監(jiān)測食物剩余量、剩余水量及溫度,方便主人根據(jù)報警信息采取下一步措施。當(dāng)剩余食物少于100g、水量低于20%、溫度高于30℃時,觸發(fā)報警,通過微信公眾號發(fā)送報警信息。
除觸發(fā)器功能外,TLINK 平臺還提供定時任務(wù)功能,本系統(tǒng)可使用此功能實現(xiàn)定時喂食的功能。原理是當(dāng)達到設(shè)定時間時,TLINK 會發(fā)送設(shè)定的指令給STM32 單片機,單片機接收到指令后,即可控制執(zhí)行機構(gòu)工作。
系統(tǒng)整體測試方案:將模塊整合到一起,整體驗證系統(tǒng)功能,檢驗云平臺中數(shù)據(jù)是否準(zhǔn)確,云平臺下發(fā)的指令執(zhí)行機構(gòu)是否正常工作。
當(dāng)某項數(shù)據(jù)超出閾值時,平臺會向用戶發(fā)送報警信息。數(shù)據(jù)超出閾值時顯示界面及報警信息如圖7 所示。
圖7 數(shù)據(jù)超出閾值時顯示界面及報警信息
經(jīng)過各個模塊的分別測試及整體測試后,最終成功實現(xiàn)了在物聯(lián)網(wǎng)平臺查看數(shù)據(jù)、平臺控制喂食、喂水的功能,系統(tǒng)長時間運行后,各項傳感器數(shù)據(jù)正常。
本文介紹了一種寵物喂養(yǎng)遠(yuǎn)程控制系統(tǒng),以ATKESP8266WIFI 模塊為橋梁,實現(xiàn)STM32 單片機與TLINK云平臺的交互,可以通過手機或網(wǎng)頁實時查看喂食裝置中食物和水的剩余量、當(dāng)前環(huán)境的溫濕度,并控制執(zhí)行機構(gòu)喂食、出水。經(jīng)過一系列地調(diào)試與優(yōu)化,最終設(shè)計圓滿完成,解決了用戶離家時的寵物喂養(yǎng)問題,系統(tǒng)穩(wěn)定可靠,具有良好的應(yīng)用前景。