陳建鋼
(重慶科技學院 電氣工程學院,重慶 401331)
隨著人們生活水平的逐步提高,很多人將養魚作為日常生活的消遣與放松方式,魚缸是很多人養魚時必不可少的工具。然而,市面上的大多產品是半自動化產品,普遍存在功能單一、自動化程度低等問題[1-3]。近年來。隨著物聯網技術的發展與成熟,它已成為解決上述問題的重要途徑。劉治成[4]設計了集多種功能于一體的智能魚缸,該智能魚缸以單片機為控制中樞,圍繞日常養護魚缸的基本操作對魚缸進行設計;結合傳感器技術,對魚缸內的環境進行自動化調節。但是單片機內存小,系統的響應速度慢。郭宇豪等人[5]提出基于STM32的家用智慧魚缸設計,該系統具有智能進行魚缸內外水循環、自動喂食調溫、系統應急供電等功能,可以有效幫助用戶輕松科學地飼養觀賞魚,但未考慮移動端優化顯示。本文采用嵌入式實時操作系統并結合無線通信WiFi模塊組成智能魚缸系統,具有抗干擾性高、實用性強等優點,為用戶提供了更好的體驗,滿足了用戶智能養魚的需求。
本系統選用STM32F103C8T6單片機作為主控芯片,通過傳感器采集魚缸的環境數據,實現自動光照控制和對魚缸內溫度、pH值等環境因素的監測,通過ESP8266連接阿里云服務器并通過手機APP顯示環境數據。智能魚缸監測系統整體架構如圖1所示,主要包括主控芯片模塊、溫度檢測模塊、光強度檢測模塊、pH值監測模塊、無線通信模塊。

圖1 智能魚缸監測系統整體架構
2.1.1 溫度檢測與光照檢測電路設計
本文采用DS18B20溫度傳感器,將DS18B20的T1數據口接到了單片機的PA5端口,采用的是單總線時序與主機通信,并且接了一個10 kΩ的上拉電阻。
光照傳感器采用BH1750模塊,模塊引出了時鐘線(SCL)和數據線(SDA),將模塊的時鐘線(SCL)連接到單片機的I2C時鐘接口(PB6),模塊的數據線(SDA)連接到單片機的I2C數據接口(PB7)。單片機通過I2C通信協議與BH1750模塊通信完成數據采集。溫度檢測與光照檢測電路如圖2所示。

圖2 溫度檢測與光照檢測電路
2.1.2 水質檢測電路設計
本文采用pH傳感器探頭,由于pH復合電極輸出的電壓信號微弱,為毫伏級[6]。因此設計了信號調理電路,采用2.5 V供電的運算放大器構成二級電路:第一級將pH電極輸出與電壓跟隨器相連,目的是提高測量電路的輸入阻抗和隔離前后級電路的影響;第二級將pH電極輸出信號濾波放大[7]。PH_OUT信號為信號調理電路放大后的電壓信號,將PH_OUT與單片機的ADC通道(PA0)相連進行ADC采集,其中ROSIN為pH探頭的航空接口。水質檢測信號調理電路如圖3所示。

圖3 水質檢測信號調理電路
本設計的WiFi模塊采用ESP8266,該模塊支持串口透明數據傳輸,內置TCP/IP協議棧和IEEE802.11協議棧[8]。本設計將ESP8266模塊的TXD和RXD腳分別接STM32芯片的PA3/RX口和PA2/TX口,PA3作為數據回傳口,PA2作為數據接收口,單片機就可以通過串口發送AT指令使ESP8266進行組網通信并接入互聯網。電路中還對模塊的供電電源進行了電容濾波,并將EN端口始終置于高電平工作狀態。WiFi模塊電路如圖4所示。

圖4 WiFi模塊電路
本文為智能魚缸系統設計了基于STM32F103C8T6的控制板,控制板搭載了STM32單片機最小系統、電源轉換電路、傳感器驅動電路和執行機構的繼電器驅動電路。智能魚缸控制板如圖5所示。

圖5 智能魚缸控制板
本系統將STM32作為主控芯片對溫度、光照強度、pH值進行數據采集。為了更好地進行任務調度,本文引進了FreeRTOS嵌入式實時操作系統。采用RTOS線程方式的并發任務處理,解決模塊化問題,同時保證實時性與可靠性[9],使智能魚缸系統更穩定、高效。軟件系統整體流程如圖6所示。

圖6 軟件系統整體流程
在系統啟動時需要將系統所使用到的外設進行初始化,才能在任務中進行調用。本系統需要對I2C、ADC、USART、GPIO等外設進行初始化。硬件初始化程序如下:

在系統上電運行后需要對系統所需執行的任務進行創建,系統才會對所創建的任務進行任務調度。任務創建程序如下:

傳感器采集任務用于搭建環境檢測框架。傳感器驅動系統是通過溫度傳感器、光照傳感器、pH值傳感器采集周圍的環境數據并進行處理。當溫度、光強度、pH值超出預設值,將會開啟增氧、凈水等功能。
MQTT任務用于驅動WiFi模塊和連接服務器。首先向模塊發送AT指令連接無線局域網,連接成功后通過MQTT網絡協議進行發布和訂閱,并連接阿里云物聯網平臺。接入服務器后將傳感器數據進行上報,云端接收到上報數據后轉發至APP實現遠程檢測。
執行機構控制任務用于電機、凈水、增氧設備的邏輯控制,能結合傳感器任務進行自動調節,也可以進行遠程控制調節。當系統處于手動模式,接收到云端下發給單片機的指令后便執行相應的增氧、投食、凈水操作。當系統處于自動模式,對傳感器進行閾值設定,當超出閾值范圍便進行自動控制。
在任務執行過程中可以利用FreeRTOS的任務管理機制進行任務調度,調用vTaskDelay()函數掛起任務,使CPU處于空閑狀態,操作系統內核將時間分配給其他任務,并在某個時間點將該任務喚醒。進行高優先級任務死循環執行時,設置任務睡眠,以執行低優先級的任務。提高系統實時性,讓系統處于高并發狀態,有利于提升系統性能[10]。任務調度流程如圖7所示。

圖7 任務調度流程
本文APP采用阿里云的可視化界面開發,此應用兼容Android系統與IOS系統,適用于90%的用戶。移動應用界面具有溫度數據顯示、光強度數據顯示、pH水質值顯示控件,以及投食按鈕、增氧按鈕、凈水按鈕控件。顯示控件與按鈕控件組成用戶界面。移動應用用戶界面設計如圖8所示。

圖8 移動應用用戶界面設計
將智能魚缸系統的STM32主控板、環境傳感器、控制機構等設備進行安裝調試。測試系統通信及功能是否正常,并對系統進行長時間的穩定性測試。智能魚缸裝配實物如圖9所示。

圖9 智能魚缸裝配
將溫度傳感器置于水中,記錄溫度數據并截取100個時間點的數據。分析得到溫度波動在27~28.5℃之間,傳感器性能穩定、波動較小。溫度傳感器數據分析如圖10所示。

圖10 溫度傳感器數據分析
將光照傳感器安裝在魚缸表面,記錄光照數據并截取100個時間點的數據。分析得到光照強度數據波動在145~160 lux之間,這是由于環境光線會受外界因素干擾,造成照度變化,并且數值波動較大。但傳感器的性能穩定,能準確反映照度變化。光照傳感器數據分析如圖11所示。

圖11 光照傳感器數據分析
將pH水質傳感器探頭部分置于水中,避免將整個傳感器泡入水中。安裝完畢記錄pH數據并截取100個時間點的數據。分析得到pH數據波動在7.3~7.6之間,傳感器性能穩定、波動較小。水質傳感器數據分析如圖12所示。

圖12 水質傳感器數據分析
系統手動工作模式測試采用黑盒測試。將系統切換到手動模式下,分別按下投食按鍵、增氧按鍵、凈水按鍵,觀察到投食電機、水泵、增氧泵正常開啟、關閉。測試結果見表1所列。

表1 手動控制測試結果
在自動模式下通過設定閾值來控制投食物、增氧、凈水機構的自動運行。通過人為照射光照傳感器來模擬陽光照射,使光強度超出閾值,觀察到增氧泵工作。將pH試液加入水中使pH值增高超出閾值上限,觀察到凈水水泵工作。設置投食物電機的開關時間,觀察到投食口在設置時間內開啟,其他時間關閉。測試結果見表2所列。

表2 自動控制測試結果
本文以智能魚缸系統實時遠程監測與管理為目的,以為用戶提供便利、降低養魚難度為起點,提出智能魚缸遠程監測控制系統。經測試表明,該系統安裝在各種場所都能正常工作,可以實時對魚缸環境狀態進行檢測上報,用戶可通過移動端進行遠程查看,也可以進行遠程投食、凈水、增氧。用戶也可通過設置自動化場景讓魚缸進行自動管理。該系統可以使用戶養魚更加簡單、便捷、高效。