陳瑤,王鳳嬪
(大慶師范學院,黑龍江大慶,163712)
隨著社會節奏隨之逐漸加快,人們生活水平不斷提高,在人們在享受快節奏生活的同時,也更希望在家庭中營造出輕松愜意的生活,因此選擇飼養寵物作為放松方式的人也逐漸增多,水生寵物占有相當大的比例。與此同時,一些問題也暴露出來,如搬家失去了喂養條件,加班或者旅游對寵物照顧不周導致寵物生病,甚至死亡等。為沒有時間精力的人設計一款成本低、操作簡單、高效節能的智能魚缸,不僅可以為觀賞魚類提供一個更好的生存環境,也可以提高人們飼養觀賞魚的體驗。
智能魚缸設備需要通過屏幕顯示剩余食物重量和系統運行狀態,提供手動控制和自動控制功能:手動控制可以點擊屏幕上的按鍵進行操作,自動控制可設定換水時間、投食時間、投食重量等數據信息。系統的重量測量上限為1公斤,對剩余食物重量監測誤差在5%以內。設定換水、投食間隔時間誤差控制在1%以內。
根據需求,將系統功能劃分為按鍵輸入模塊、重量數據采集模塊、水位數據采集模塊、網絡控制模塊、數據處理模塊、LCD顯示模塊、換水控制模塊、水溫控制模塊和投食控制模塊,同時能夠進行自動模式和手動模式的切換,各個功能模塊都有相應的信號輸入和信號輸出端口。系統功能模塊關系圖如圖1所示。

圖1 系統功能模塊
在智能魚缸控制系統中,系統模塊較多功能復雜,需要更高的運算速度,STM32F103RCT6單片機體積較小、延遲較低、操作指令簡單,性價比高,因此作為中心處理模塊。系統需要顯示運行狀態、剩余食物重量,發出警報信息,需要用按鍵切換顯示界面,輸入設定值等操作,采用TFTLCD電容觸摸屏為顯示和按鍵模塊,它的工作電壓為3 3V,240×320分辨率,16位真彩顯示(65536色),自帶背光電路,16位并口驅動,能夠實現觸控操作。采用應變片與HX711共同組合作為重量數據采集模塊。采用抽水泵作為注水開關,采用電磁閥作為排水開關,采用舵機作為投食開關,系統需要配置外置水箱。
核心控制模塊由STM32芯片、石英晶振時鐘電路、復位按鍵電路、MCU啟動電路、SWD下載電路、MCU電源濾波構成,本次設計最小系統電路圖如圖2所示。

圖2 最小系統電路圖
智能魚缸系統可以將剩余食量數據顯示在顯示屏上,壓力傳感器可以準確地采集出剩余食物重量,為系統在自動控制過程中的投食重量提供數據支撐。
電阻式的應變壓力傳感器,根據電阻的壓變效應可以將壓力信號轉變為電信號,對于應變片的搭建常采用橋式電路,橋式電路穩定性更高、抗干擾性更強,不容易受到影響。系統中選用HX711作為AD轉換芯片[1],可以滿足低功耗運行的需求,它可靠性高、抗干擾性強、采樣速度快,可在-40℃~80℃的溫度范圍內穩定運行,使用方法簡單,通過對芯片引腳簡單的數字控制即可改變芯片的狀態,不需要對芯片內部的寄存器進行編程。
舵機可以通過PWM來控制旋轉角度,進而控制投食系統打開關閉,所以很適合完成智能魚缸投食功能,根據其旋轉的角度來控制投食的速度。系統中采用了單片機的PWM波來產生穩定的可調的高電平來控制舵機[2]。
智能魚缸系統需要對電磁閥、水泵設備進行控制,為了實現信號與電路的分離,采用具有光耦隔離的繼電器來作為控制模塊。
繼電器可以使用小信號來控制大電流,相比于其他方式更為安全。在接收到單片機發出的指令后,控制水流電磁閥打開或者關閉,此繼電器采用12V電源供電,并且可以通過跳線選擇高/低電平觸發,雙觸點模式可以選擇常開觸點或者常閉觸點,具有光耦隔離功能可以有效的防止電源線對信號線進行干擾,MCU發出控制指令給繼電器后,繼電器內光耦模塊接收到信號,光耦內LED點亮,光敏半導體接受到光信號產生光電流,S8050三極管的基級電壓被拉高,三極管導通繼電器電磁開關閉合,繼電器狀態顯示小燈點亮。繼電器控制電路如圖3所示[3]。

圖3 繼電器控制電路圖
為完成智能魚缸中剩余食物重量顯示、系統的運行狀態顯示、各種控制按鍵顯示,需要一款LCD電阻式或電容式顯示屏來完成上述功能。
LCD顯示模塊可以在觸控屏上顯示傳感器采集到的剩余食量數據,并且在屏幕上顯示食量設置按鍵、換水間隔設置按鍵、投食間隔設置按鍵,顯示手動模式和自動模式,可以通過在觸控屏上點擊對應按鍵來控制系統運行,在不需要操作時熄滅顯示屏保持低功耗模式運行。LCD顯示電路由兩方面構成,分別是LCD觸控屏電路和XPT2046電阻式觸控屏控制器,LCD觸控顯示屏和XPT2046電阻式觸控屏控制器均為3 3V電源供電,為防止的50Hz電路的干擾,在顯示屏和XPT2046芯片的供電段均采用100nF(104)電容濾波,XPT2046芯片采用了SPI的方式與STM32進行通信,此芯片的PENIQR引腳為筆觸中斷信號引腳,此引腳為低電平有效引腳,在LCD顯示屏被按下時變為底電平,所以要連接一個100k的上拉電阻,在LCD顯示屏沒有被按下時保持高電平(見圖4)。
系統中不同的元器件,其供電電壓也是不同的,需要采用不同的電源模塊為元器件供電。
電源供電電路由12V轉5V DC/DC穩壓電路、串口驅動電路、5V轉3 3V電路共同組成,對于5V轉3 3V電路這里選用了AMS1117-3 3V線性穩壓芯片為單片機、LCD顯示屏、HX711模塊供電,此芯片可以穩定的輸出3 3V電壓,可承受最大15V的輸入耐壓,輸出電流最大為800mA,并且在輸出最大電流時壓差不超過1 3V可以滿足使用的正常需求。此設計一共有兩種供電方式(見圖4),分別為外部電源的12V供電和USB供電,12V電源供電需要先通過MP2359將電源穩壓成5V,可以通過控制R28和R27兩個電阻的大小來控制MP2359芯片輸出電壓的大小,此芯片可以提供最大1 2A的電流,足夠大的電流可以保證繼電器正常工作,USB供電是一個穩定的5V電源,它為串口通信模塊和蜂鳴器模塊供電,CH340是一款USB轉串口芯片,它兼容USB2 0,是一種全雙工的通信串口,可以以232或者485的方式進行通信,它可以使用5V或者3 3V電源供電,采用CH340將串口輸出的數據輸出到電腦上,在代碼編寫調試過程中有著極大的用處。

圖4 顯示及電源模塊電路圖
在程序開始運行后,首先要對各個模塊的IO引腳進行初始化配置,然后MCU控制LCD顯示屏在不同坐標位置,顯示剩余食量數據、手動控制和自動控制按鈕,如果MCU讀取到手動控制按鈕坐標電平發生變化,則表示手動控制被按下,然后進入手動控制操作界面。同理如果MCU讀取到自動控制按鈕坐標電平發生變化,則表示自動控制被按下,然后進入自動控制操作界面。系統總設計流程圖如圖5所示。

圖5 系統總設計流程圖
當進入到手動模式操作界面后,首先LCD顯示屏在不同坐標位置顯示“開始排水”、“開始注水”、“開始投食”、“停止投食”、“確定”和“返回”幾個按鈕,當MCU接收到排水按鍵坐標的電平發生變化后,MCU持續采集低位鴨嘴式傳感器數據:當低位鴨嘴式傳感器數據為1時,控制放水繼電器打開開始排水;當檢測到低位鴨嘴式傳感器數據為0時,控制排水繼電器關閉停止排水。當接收到注水按鍵坐標的電平發生變化后,MCU持續采集高位鴨嘴式傳感器數據:當高位鴨嘴式傳感器數據為1時,控制注水繼電器打開開始注水;當檢測到高位鴨嘴式傳感器數據為0時,控制注水繼電器關閉停止注水。
當檢測投食按鍵坐標電平發生變化后,MCU通過控制PWM波進而控制舵機的開合角度,打開投食閥門開始投食。當檢測到停止投食按鍵坐標電平發生變化后,控制PWM波進而控制舵機的開合角度,關閉投食閥門關閉投食。當檢測到返回按鍵坐標的電平發生變化后,則退回模式選擇操作界面。
在進入自動模式后,首先MCU控制LCD顯示屏顯示“換水時間”、“定時投食時間”、“投喂重量”、“確定”和“返回”幾個選項。在LCD屏上置有“+”、“-”按鍵,當檢測到“+”或“-”按鍵坐標電平變化時,則控制定時換水時間對應增加或減少。同理定時投喂時間和投喂重量設定也是一樣的操作過程。當檢測到確定按鍵坐標電屏發生變化后,開始進入到自動控制模式,MCU控制LCD顯示屏顯示“進入到自動控制模式”,在自動模式下,定時器不斷計時,當定時器計時時間達到定時換水時間后,產生中斷,檢測低位鴨嘴式傳感器電平狀態時候為0,若為0則MCU控制排水繼電器打開,若為1則關閉注水繼電器,持續檢測高位鴨嘴式開關電平狀態是否為0,若不為0則控制注水繼電器打開,若為0則控制注水繼電器關閉。當定時器計時時間達到定時投食時間后,產生中斷,控制舵機旋轉打開投食門,單片機與HX711重力傳感器通信,讀取重量數據,當讀取重量=原重量-設定重量時,MCU控制舵機關閉喂食槽。
當系統正常運行時,顯示剩余食物重量,此時重力傳感器采集剩余食量數據,并將數據通過MCU處理后,顯示在顯示屏上,如果采集到的重量小于設定的重量時,控制LCD顯示屏顯示食物不足警報,當采集到的重量達到或大于設定的重量值時,控制LCD顯示屏則停止顯示食物不足警報。
制作完成的系統如圖6所示。

圖6 系統實物圖
系統經過多次測試,測量數據與實際重量相比整體偏低,原因為LCD顯示重量的最小精度為1g,稱重盤與食物槽之間存在摩擦接觸,導致數據發生誤差。隨著測量重量的增大,摩擦對于精度的影響逐漸降低,誤差也從5%左右下降到1%,基本可以達到投喂系統的精度需求。
經過一段時間的運行狀態測試,換水功能保持穩定,投食功能保持穩定,缺食警報功能正常工作。測試是在室溫環境下進行,系統功能基本符合設計要求。
本系統為在校大學生根據所學知識進行的一次系統設計嘗試。在寵物逐漸成為家庭成員的趨勢中,提高水生寵物生存環境管理的智能化水平,能夠提升寵物主人的生活體驗。在大學生創新創業訓練計劃項目的平臺上,將進一步將智能魚缸降低成本后商品化的嘗試。