焦嘉偉,劉華,常若葵
(天津農學院 工程技術學院,天津西青,300380)
隨著我國社會經濟的快速發展,人們休閑消費和情感寄托方式呈多樣化發展,因此許多家庭都會飼養寵物作為自己或孩子休閑的玩伴,寵物業也成了一種新興的產業。生活和工作的快節奏讓人們無法有充裕的時間照顧自己的寵物,甚至是無法按時喂養寵物,使得寵物出現食源性疾病[1]。特別是當人們出差在外或者是旅游度假時,經常不能及時地對家中的寵物給予很好的照顧,因此寵物的規律飲食成為困擾人們的主要問題。
2019 年楊琳、李媛等人[2]設計了一款自動、定時、定量喂養寵物的喂食器,但需要按鍵手動控制喂食時間。2021 年白亞梅[3]設計了一款控制電機運行時間來控制喂食量的寵物喂食器,但容易造成過量從而浪費。2022 年謝澤健[4]運用物聯網技術和單片機技術設計了遠程寵物智能喂養系統,但功能單一。本文將以實際需求為根本,人性化設計為理念化,設計一款寵物喂養遠程控制系統,為需要外出的寵物飼養者解決后顧之憂。
系統由傳感器采集溫濕度、重量、水位等信息,發送到STM32F103ZET6 單片機,單片機將數據打包成TLINK 平臺設定的協議格式,通過ATK-ESP8266 發送到TLINK 平臺。達到設定的時間后,TLINK 平臺向單片機發送指令,控制舵機及水泵工作以達到出食及出水的效果。本系統結構框圖如圖1 所示。

圖1 系統結構框圖
本系統選用STM32F103ZET6 最小系統板作為核心控制單元。相較于Arduino、51 系列單片機,STM32 系列單片機性價比高、功能豐富。STM32F103ZET6 微處理器為LQFP 封裝的通用型144 引腳的芯片,其工作溫度區間為-40℃~85℃,主頻72MHz。
稱重模塊選用的是全橋式電路搭配24 位高精度A/D 轉換器芯片HX711 稱重。傳感器的上下表面各有兩個電阻,當外界載荷作用到承壓面時,電阻兩端電壓會發生變化,由于變化非常小[5],因此使用高精度A/D 轉換芯片HX711 放大信號并將其轉換為數字信號。與同類型其他模數轉換芯片相比,HX711 芯片內部嵌入了包括穩壓電源、片內時鐘振蕩器等器件,減少了系統對外部資源的需求,具有集成度高、響應速度快、抗干擾性能強等優點[6]。
水位檢測模塊使用液位傳感器,其實物如圖2所示。

圖2 液位傳感器實物圖
該模塊利用三極管電流放大原理,當液位足夠高時,電源正極與三極管基極導通,三極管的基極和發射極之間會產生一定大小的電流,此時三極管的集電極和發射極之間會產生一定放大倍數的電流,該電流經發射極電阻產生電壓供AD 轉換器采集[7]。
溫濕度采集模塊使用的是DHT11 溫濕度傳感器模塊,該模塊優點有:
(1)同時測量相對溫濕度;
(2)可靠性強、性能高、抗干擾、功耗低;
(3)獨立性高,體積小;
(4)無需AD 轉換,直接獲取溫濕度數據。該模塊被廣泛應用于氣象、家電、醫療、室內環境檢測等領域,圖3為DHT11 模塊實物圖。

圖3 DHT11 實物圖
語音模塊使用的是JQ9800-16P,該模塊選用SOC 方案,內部集成了16 位的MCU 及具有音頻解碼功能的ADSP,保證了系統的音質及穩定性[8]。模塊具有內部存儲功能,使用數據線連接電腦即可將需要播放的音頻傳入模塊。模塊共7 個I/O 口,可支持觸發播放19 段語音,使用時,只需為對應I/O 口輸出低電平即可播放指定語音。
本系統的執行機構包括兩部分,分別是舵機和繼電器控制的水泵。舵機用于喂食,一般需要20ms 的時基脈沖控制,該脈沖的高電平部分一般為0.5ms~2.5ms 范圍內的角度控制脈沖部分。當需要供水時,STM32 向繼電器發送信號,控制繼電器閉合進而控制水泵出水。
聯網模塊使用的是高性能UART-WiFi 模塊ATKESP8266,該模塊網絡標準支持IEEE 802.11b/g/n,頻率可達2.484GHz 工作模式有三種,分別是WiFi STA 模式、WiFi AP 模式、WiFi STA+WiFi AP 模式。ATK-ESP8266 實物如圖4 所示。本設計使用了ATK-ESP8266 模塊的RX、TX 引腳,用于ESP8266 芯片與STM32 芯片之間串口通信。
按一般大田進行田間調查和統計。在小麥成熟后,每小區隨機選取10株進行考種,測量其株高、整齊度、穗長、穗粒數、分蘗數等指標。同時,將每個小區分開,單收、單脫、單計產。

圖4 ATK-ESP8266 實物圖
系統主程序流程圖如圖5 所示。

圖5 主程序流程圖
首先對STM32 的系統時鐘進行初始化,確保其正常運行。其次對串口1 和串口2 初始化,并配置中斷優先級,確保其正常接收數據。然后對定時器3 初始化,確保其可以正常發出PWM 波控制舵機旋轉。再依次初始化HX711、DHT11、ADC1 和ESP8266,確保各部分功能正常使用。然后向ESP8266 發送AT 指令,使其連接WiFi 及TLINK 物聯網平臺。再控制舵機回到初始位置,獲取毛皮重量。最后一步進入循環:稱重—>液位檢測—>溫濕度檢測—>發送數據—>延時。
(1)HX711 數據采集
HX711 完整的獲取數據需經過以下幾個步驟,首先使能PB 端口時鐘,其次將SCK 和DOUT 對應的PB0 和PB1端口進行配置,設置為推挽輸出。讀取一次重量,將該重量設為毛皮重量,再次讀取時,判斷該重量是否大于毛皮重量,若是,則將該重量減毛皮重量即可得到實物重量,若不是,則繼續讀取數據。
(2)液位傳感器數據采集
當液位高度到達一定值時,集電極和發射極產生的一定放大倍數的電流經過發射極電阻會產生電壓,想得到液位傳感器的數據只需要進行AD 采集即可。ADC 進行采集時,首先要使能端口,對其用到的端口進行配置,將其優先級分組設為1。其次要配置ADC,過程包括:使用軟件開啟連續轉換模式,設置轉換通道為1,分頻因子為8,72MHz/8 即9MHz,并將轉換結果右對齊,設置采樣周期為55.5 個時鐘周期,校準ADC。最后進行數據的采集及處理,完成后清楚標志位,中斷返回。
(3)DHT11 數據采集
DHT11 傳感器采用單總線數據格式,因此程序需嚴格按照時序要求設計。配置完端口后,主機需向DHT11 發送開始信號,DHT11 只有接收到主機發送的開始信號后才會觸發溫濕度采集。接收到信號后,拉高電平等待DHT11 響應。響應后,共需接收5 次數據,最后一次數據接收完畢后,DHT11 需拉低總線55μs,隨后上拉電阻拉高總線進入空閑狀態,等待下一次傳輸數據。接受完數據后,與檢驗位對比,檢查數據準確性。
STM32接收到云平臺發出的指令后控制執行機構工作。執行機構工作流程圖如圖6 所示。

圖6 執行機構流程圖
“111”指令是控制出食的指令,當單片機接收到該指令后,首先給語音模塊引腳一個低電平,使其播放吸引寵物進食的語音,然后定時器輸出PWM 波,控制舵機旋轉出食。
“222”指令是控制出水的指令,單片機接收到指令后,給繼電器引腳輸出電平,繼電器工作后控制水泵出水。
STM32 與ATK-ESP8266 連接及發送數據都需要使用串口2,因此需要對串口2 進行配置。首先配置USART2 和GPIO 時鐘,將PA2 設置為推挽輸出,速率50MHz,用于發送,PA3 設置為浮空輸入,用于接收。然后對串口2 進行設置,波特率設為115200,8 個數據為,1 個停止位,沒有奇偶校驗位,不使用硬件流控,只能發送和接收。向串口發送字符串使用sendString(USART_TypeDef *USARTx,char *str)函數,USARTx 中的x 為目標串口(1~3),str為字符串指針,例如sendString(USART2,"AT+RST ");的意思就是向串口2 發送AT+RST。
TLINK 是一個開放并且專注于物聯網服務的物聯網接入云平臺,目的是服務所有的工業、農業、環境類傳感器使用者,使傳感器數據的接入、存儲和展現變得簡單[9]。ATK-ESP8266 配置完成連接云平臺后,向云平臺發送專屬序列號,即可連接設備。
本系統僅需一個設備即可展示各項參數,因此將添加的設備命名為“Pet Feeding”,鏈接協議選擇“TCP”,同時可以設置掉線延時,當TLINK 平臺1000 秒內無數據接收,自動斷開連接。
STM32 要向云平臺上傳的數據有食物剩余量、食物投喂量、剩余水量、溫度、濕度。云平臺可向單片機發送指令,分別是開始喂食和開始喂水。編輯好設備后需要配置TLINK 的連接協議,TLINK 的IP 為“tcp.tlink.io”或“112.74.142.132”,TCP 連接的端口號為8647。用戶可以在TLINK 平臺使用“協議標簽”自由編輯應用協議,STM32 根據應用協議發送數據,TLINK 平臺即可根據協議解析需要的數據。數據頭標簽和結束符標簽用于數據包的開頭和結尾,數據標簽用于傳輸有效數據,每個數據標簽后需緊跟一個分隔符標簽。本系統使用的協議標簽為[H:PF][S::][D?][S:;][D?][S:;][D?][S:;][D?][S:;][D?][S:;][D?][S:;][D?][S:;][T:#]。如收到的協議為PF:1864;120;50;1;0;52;25;#,代表此時系統對應的各項參數為:食物剩余1864g,食物投喂120g,剩余水量50%,開始喂食,停止喂水,濕度52%RH,溫度25℃。
TLINK 平臺為設備事件觸發機制提供了觸發器功能,當某個傳感器數據觸發設定閾值時,TLINK 云平臺根據用戶設置的報警方式自動發送報警信息給用戶,平臺共四種報警方式,分別是:短信、微信、郵箱、語音。在本系統中,需添加三個觸發器,用于監測食物剩余量、剩余水量及溫度,方便主人根據報警信息采取下一步措施。當剩余食物少于100g、水量低于20%、溫度高于30℃時,觸發報警,通過微信公眾號發送報警信息。
除觸發器功能外,TLINK 平臺還提供定時任務功能,本系統可使用此功能實現定時喂食的功能。原理是當達到設定時間時,TLINK 會發送設定的指令給STM32 單片機,單片機接收到指令后,即可控制執行機構工作。
系統整體測試方案:將模塊整合到一起,整體驗證系統功能,檢驗云平臺中數據是否準確,云平臺下發的指令執行機構是否正常工作。
當某項數據超出閾值時,平臺會向用戶發送報警信息。數據超出閾值時顯示界面及報警信息如圖7 所示。

圖7 數據超出閾值時顯示界面及報警信息
經過各個模塊的分別測試及整體測試后,最終成功實現了在物聯網平臺查看數據、平臺控制喂食、喂水的功能,系統長時間運行后,各項傳感器數據正常。
本文介紹了一種寵物喂養遠程控制系統,以ATKESP8266WIFI 模塊為橋梁,實現STM32 單片機與TLINK云平臺的交互,可以通過手機或網頁實時查看喂食裝置中食物和水的剩余量、當前環境的溫濕度,并控制執行機構喂食、出水。經過一系列地調試與優化,最終設計圓滿完成,解決了用戶離家時的寵物喂養問題,系統穩定可靠,具有良好的應用前景。