陳建鋼
(重慶科技學(xué)院 電氣工程學(xué)院,重慶 401331)
隨著人們生活水平的逐步提高,很多人將養(yǎng)魚作為日常生活的消遣與放松方式,魚缸是很多人養(yǎng)魚時必不可少的工具。然而,市面上的大多產(chǎn)品是半自動化產(chǎn)品,普遍存在功能單一、自動化程度低等問題[1-3]。近年來。隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展與成熟,它已成為解決上述問題的重要途徑。劉治成[4]設(shè)計(jì)了集多種功能于一體的智能魚缸,該智能魚缸以單片機(jī)為控制中樞,圍繞日常養(yǎng)護(hù)魚缸的基本操作對魚缸進(jìn)行設(shè)計(jì);結(jié)合傳感器技術(shù),對魚缸內(nèi)的環(huán)境進(jìn)行自動化調(diào)節(jié)。但是單片機(jī)內(nèi)存小,系統(tǒng)的響應(yīng)速度慢。郭宇豪等人[5]提出基于STM32的家用智慧魚缸設(shè)計(jì),該系統(tǒng)具有智能進(jìn)行魚缸內(nèi)外水循環(huán)、自動喂食調(diào)溫、系統(tǒng)應(yīng)急供電等功能,可以有效幫助用戶輕松科學(xué)地飼養(yǎng)觀賞魚,但未考慮移動端優(yōu)化顯示。本文采用嵌入式實(shí)時操作系統(tǒng)并結(jié)合無線通信WiFi模塊組成智能魚缸系統(tǒng),具有抗干擾性高、實(shí)用性強(qiáng)等優(yōu)點(diǎn),為用戶提供了更好的體驗(yàn),滿足了用戶智能養(yǎng)魚的需求。
本系統(tǒng)選用STM32F103C8T6單片機(jī)作為主控芯片,通過傳感器采集魚缸的環(huán)境數(shù)據(jù),實(shí)現(xiàn)自動光照控制和對魚缸內(nèi)溫度、pH值等環(huán)境因素的監(jiān)測,通過ESP8266連接阿里云服務(wù)器并通過手機(jī)APP顯示環(huán)境數(shù)據(jù)。智能魚缸監(jiān)測系統(tǒng)整體架構(gòu)如圖1所示,主要包括主控芯片模塊、溫度檢測模塊、光強(qiáng)度檢測模塊、pH值監(jiān)測模塊、無線通信模塊。
圖1 智能魚缸監(jiān)測系統(tǒng)整體架構(gòu)
2.1.1 溫度檢測與光照檢測電路設(shè)計(jì)
本文采用DS18B20溫度傳感器,將DS18B20的T1數(shù)據(jù)口接到了單片機(jī)的PA5端口,采用的是單總線時序與主機(jī)通信,并且接了一個10 kΩ的上拉電阻。
光照傳感器采用BH1750模塊,模塊引出了時鐘線(SCL)和數(shù)據(jù)線(SDA),將模塊的時鐘線(SCL)連接到單片機(jī)的I2C時鐘接口(PB6),模塊的數(shù)據(jù)線(SDA)連接到單片機(jī)的I2C數(shù)據(jù)接口(PB7)。單片機(jī)通過I2C通信協(xié)議與BH1750模塊通信完成數(shù)據(jù)采集。溫度檢測與光照檢測電路如圖2所示。
圖2 溫度檢測與光照檢測電路
2.1.2 水質(zhì)檢測電路設(shè)計(jì)
本文采用pH傳感器探頭,由于pH復(fù)合電極輸出的電壓信號微弱,為毫伏級[6]。因此設(shè)計(jì)了信號調(diào)理電路,采用2.5 V供電的運(yùn)算放大器構(gòu)成二級電路:第一級將pH電極輸出與電壓跟隨器相連,目的是提高測量電路的輸入阻抗和隔離前后級電路的影響;第二級將pH電極輸出信號濾波放大[7]。PH_OUT信號為信號調(diào)理電路放大后的電壓信號,將PH_OUT與單片機(jī)的ADC通道(PA0)相連進(jìn)行ADC采集,其中ROSIN為pH探頭的航空接口。水質(zhì)檢測信號調(diào)理電路如圖3所示。
圖3 水質(zhì)檢測信號調(diào)理電路
本設(shè)計(jì)的WiFi模塊采用ESP8266,該模塊支持串口透明數(shù)據(jù)傳輸,內(nèi)置TCP/IP協(xié)議棧和IEEE802.11協(xié)議棧[8]。本設(shè)計(jì)將ESP8266模塊的TXD和RXD腳分別接STM32芯片的PA3/RX口和PA2/TX口,PA3作為數(shù)據(jù)回傳口,PA2作為數(shù)據(jù)接收口,單片機(jī)就可以通過串口發(fā)送AT指令使ESP8266進(jìn)行組網(wǎng)通信并接入互聯(lián)網(wǎng)。電路中還對模塊的供電電源進(jìn)行了電容濾波,并將EN端口始終置于高電平工作狀態(tài)。WiFi模塊電路如圖4所示。
圖4 WiFi模塊電路
本文為智能魚缸系統(tǒng)設(shè)計(jì)了基于STM32F103C8T6的控制板,控制板搭載了STM32單片機(jī)最小系統(tǒng)、電源轉(zhuǎn)換電路、傳感器驅(qū)動電路和執(zhí)行機(jī)構(gòu)的繼電器驅(qū)動電路。智能魚缸控制板如圖5所示。
圖5 智能魚缸控制板
本系統(tǒng)將STM32作為主控芯片對溫度、光照強(qiáng)度、pH值進(jìn)行數(shù)據(jù)采集。為了更好地進(jìn)行任務(wù)調(diào)度,本文引進(jìn)了FreeRTOS嵌入式實(shí)時操作系統(tǒng)。采用RTOS線程方式的并發(fā)任務(wù)處理,解決模塊化問題,同時保證實(shí)時性與可靠性[9],使智能魚缸系統(tǒng)更穩(wěn)定、高效。軟件系統(tǒng)整體流程如圖6所示。
圖6 軟件系統(tǒng)整體流程
在系統(tǒng)啟動時需要將系統(tǒng)所使用到的外設(shè)進(jìn)行初始化,才能在任務(wù)中進(jìn)行調(diào)用。本系統(tǒng)需要對I2C、ADC、USART、GPIO等外設(shè)進(jìn)行初始化。硬件初始化程序如下:
在系統(tǒng)上電運(yùn)行后需要對系統(tǒng)所需執(zhí)行的任務(wù)進(jìn)行創(chuàng)建,系統(tǒng)才會對所創(chuàng)建的任務(wù)進(jìn)行任務(wù)調(diào)度。任務(wù)創(chuàng)建程序如下:
傳感器采集任務(wù)用于搭建環(huán)境檢測框架。傳感器驅(qū)動系統(tǒng)是通過溫度傳感器、光照傳感器、pH值傳感器采集周圍的環(huán)境數(shù)據(jù)并進(jìn)行處理。當(dāng)溫度、光強(qiáng)度、pH值超出預(yù)設(shè)值,將會開啟增氧、凈水等功能。
MQTT任務(wù)用于驅(qū)動WiFi模塊和連接服務(wù)器。首先向模塊發(fā)送AT指令連接無線局域網(wǎng),連接成功后通過MQTT網(wǎng)絡(luò)協(xié)議進(jìn)行發(fā)布和訂閱,并連接阿里云物聯(lián)網(wǎng)平臺。接入服務(wù)器后將傳感器數(shù)據(jù)進(jìn)行上報(bào),云端接收到上報(bào)數(shù)據(jù)后轉(zhuǎn)發(fā)至APP實(shí)現(xiàn)遠(yuǎn)程檢測。
執(zhí)行機(jī)構(gòu)控制任務(wù)用于電機(jī)、凈水、增氧設(shè)備的邏輯控制,能結(jié)合傳感器任務(wù)進(jìn)行自動調(diào)節(jié),也可以進(jìn)行遠(yuǎn)程控制調(diào)節(jié)。當(dāng)系統(tǒng)處于手動模式,接收到云端下發(fā)給單片機(jī)的指令后便執(zhí)行相應(yīng)的增氧、投食、凈水操作。當(dāng)系統(tǒng)處于自動模式,對傳感器進(jìn)行閾值設(shè)定,當(dāng)超出閾值范圍便進(jìn)行自動控制。
在任務(wù)執(zhí)行過程中可以利用FreeRTOS的任務(wù)管理機(jī)制進(jìn)行任務(wù)調(diào)度,調(diào)用vTaskDelay()函數(shù)掛起任務(wù),使CPU處于空閑狀態(tài),操作系統(tǒng)內(nèi)核將時間分配給其他任務(wù),并在某個時間點(diǎn)將該任務(wù)喚醒。進(jìn)行高優(yōu)先級任務(wù)死循環(huán)執(zhí)行時,設(shè)置任務(wù)睡眠,以執(zhí)行低優(yōu)先級的任務(wù)。提高系統(tǒng)實(shí)時性,讓系統(tǒng)處于高并發(fā)狀態(tài),有利于提升系統(tǒng)性能[10]。任務(wù)調(diào)度流程如圖7所示。
圖7 任務(wù)調(diào)度流程
本文APP采用阿里云的可視化界面開發(fā),此應(yīng)用兼容Android系統(tǒng)與IOS系統(tǒng),適用于90%的用戶。移動應(yīng)用界面具有溫度數(shù)據(jù)顯示、光強(qiáng)度數(shù)據(jù)顯示、pH水質(zhì)值顯示控件,以及投食按鈕、增氧按鈕、凈水按鈕控件。顯示控件與按鈕控件組成用戶界面。移動應(yīng)用用戶界面設(shè)計(jì)如圖8所示。
圖8 移動應(yīng)用用戶界面設(shè)計(jì)
將智能魚缸系統(tǒng)的STM32主控板、環(huán)境傳感器、控制機(jī)構(gòu)等設(shè)備進(jìn)行安裝調(diào)試。測試系統(tǒng)通信及功能是否正常,并對系統(tǒng)進(jìn)行長時間的穩(wěn)定性測試。智能魚缸裝配實(shí)物如圖9所示。
圖9 智能魚缸裝配
將溫度傳感器置于水中,記錄溫度數(shù)據(jù)并截取100個時間點(diǎn)的數(shù)據(jù)。分析得到溫度波動在27~28.5℃之間,傳感器性能穩(wěn)定、波動較小。溫度傳感器數(shù)據(jù)分析如圖10所示。
圖10 溫度傳感器數(shù)據(jù)分析
將光照傳感器安裝在魚缸表面,記錄光照數(shù)據(jù)并截取100個時間點(diǎn)的數(shù)據(jù)。分析得到光照強(qiáng)度數(shù)據(jù)波動在145~160 lux之間,這是由于環(huán)境光線會受外界因素干擾,造成照度變化,并且數(shù)值波動較大。但傳感器的性能穩(wěn)定,能準(zhǔn)確反映照度變化。光照傳感器數(shù)據(jù)分析如圖11所示。
圖11 光照傳感器數(shù)據(jù)分析
將pH水質(zhì)傳感器探頭部分置于水中,避免將整個傳感器泡入水中。安裝完畢記錄pH數(shù)據(jù)并截取100個時間點(diǎn)的數(shù)據(jù)。分析得到pH數(shù)據(jù)波動在7.3~7.6之間,傳感器性能穩(wěn)定、波動較小。水質(zhì)傳感器數(shù)據(jù)分析如圖12所示。
圖12 水質(zhì)傳感器數(shù)據(jù)分析
系統(tǒng)手動工作模式測試采用黑盒測試。將系統(tǒng)切換到手動模式下,分別按下投食按鍵、增氧按鍵、凈水按鍵,觀察到投食電機(jī)、水泵、增氧泵正常開啟、關(guān)閉。測試結(jié)果見表1所列。
表1 手動控制測試結(jié)果
在自動模式下通過設(shè)定閾值來控制投食物、增氧、凈水機(jī)構(gòu)的自動運(yùn)行。通過人為照射光照傳感器來模擬陽光照射,使光強(qiáng)度超出閾值,觀察到增氧泵工作。將pH試液加入水中使pH值增高超出閾值上限,觀察到凈水水泵工作。設(shè)置投食物電機(jī)的開關(guān)時間,觀察到投食口在設(shè)置時間內(nèi)開啟,其他時間關(guān)閉。測試結(jié)果見表2所列。
表2 自動控制測試結(jié)果
本文以智能魚缸系統(tǒng)實(shí)時遠(yuǎn)程監(jiān)測與管理為目的,以為用戶提供便利、降低養(yǎng)魚難度為起點(diǎn),提出智能魚缸遠(yuǎn)程監(jiān)測控制系統(tǒng)。經(jīng)測試表明,該系統(tǒng)安裝在各種場所都能正常工作,可以實(shí)時對魚缸環(huán)境狀態(tài)進(jìn)行檢測上報(bào),用戶可通過移動端進(jìn)行遠(yuǎn)程查看,也可以進(jìn)行遠(yuǎn)程投食、凈水、增氧。用戶也可通過設(shè)置自動化場景讓魚缸進(jìn)行自動管理。該系統(tǒng)可以使用戶養(yǎng)魚更加簡單、便捷、高效。