本設(shè)計由開發(fā)者針對傳統(tǒng)魚塘的養(yǎng)殖和管理現(xiàn)狀,面向中小型魚塘養(yǎng)殖戶設(shè)計開發(fā)了一套魚塘智能控制系統(tǒng),滿足魚塘養(yǎng)殖環(huán)境的數(shù)據(jù)采集、無線傳輸、實時顯示、遠(yuǎn)近程手動控制和自動控制等功能上的需求,可及時檢測和控制影響魚類生存生長的環(huán)境因素,避免人工判斷觀察失誤或者操作的不及時造成大量魚類死亡,有效減少人工成本消耗,而且還能降低系統(tǒng)運行維護成本,以適應(yīng)中小型魚塘養(yǎng)殖戶節(jié)約成本的問題。
一、系統(tǒng)總體設(shè)計
本魚塘控制系統(tǒng)主要由下位機設(shè)備控制端、云平臺以及 APP 端組成。
下位機
下位機是整個系統(tǒng)的控制執(zhí)行部分,通過傳感器對魚塘環(huán)境因子進行檢測以及控制通過控制設(shè)備調(diào)節(jié)魚塘環(huán)境因子,通過本地顯示面板實現(xiàn)近程控制。通過 APP端,可以遠(yuǎn)程觀測魚塘環(huán)境因子情況,并實現(xiàn)對魚塘的遠(yuǎn)程控制。云平臺作為數(shù)據(jù)中轉(zhuǎn)站,APP通過云平臺接收下位機上傳的數(shù)據(jù)以及向下位機的控制設(shè)備發(fā)送控制命令。
本系統(tǒng)在運行時,下位機設(shè)備控制端利用串口通過 WiFi 模塊與外界通信,云平臺作為數(shù)據(jù)中轉(zhuǎn)中心,WiFi 和云平臺利用廣域網(wǎng)通過云端平臺進行通信。
云平臺選擇
本系統(tǒng)設(shè)計選用機智云物聯(lián)網(wǎng)云平臺,為物聯(lián)網(wǎng)開發(fā)者提供方便,機智云平臺搭建好后,平臺可直接提供相應(yīng)的 API 和 SDK,在開發(fā) APP 時無需考慮繁雜的通訊協(xié)議,只需要考慮功能開發(fā)便可,降低了開發(fā)者的開發(fā)難度,也提高了開發(fā)效率。
為了更清晰地了解機智云,下面簡單地總結(jié)了機智云平臺的幾個特點:
(1)靈活穩(wěn)定。它的接入能力非常強,峰值時期可以允許上億臺設(shè)備同時接入。而且連接穩(wěn)定可靠,機智云物聯(lián)網(wǎng)云平臺可以在短時間里處理上一條數(shù)據(jù)。
(2)使用簡單。機智云平臺提供了許多的技術(shù)資料,擁有完整的開發(fā)流程,極大地降低了開發(fā)難度。
(3)功能豐富。在機智云上開發(fā)項目的時候,用戶可以按照自己的實際需求,可以把多個應(yīng)用模塊組合在一起,開發(fā)者也可以更加方便地對這些項目進行管理。
(4)方案豐富。機智云的市場調(diào)研團隊非常強大,結(jié)合全世界各種類型的業(yè)務(wù),盡可能地給各個行業(yè)提供了解決方案,而且方案庫還在繼續(xù)完善和增加。
APP端
使用機智云提供的 APP開源框架設(shè)計一款魚塘控制APP進行遠(yuǎn)程控制,并選用機智云官方提供的終端進行調(diào)試。
二、系統(tǒng)硬件實現(xiàn)
系統(tǒng)的硬件決定了系統(tǒng)具體能夠?qū)崿F(xiàn)的場景功能,一個良好的硬件設(shè)計直接關(guān)系到系統(tǒng)的穩(wěn)定性以及性能的優(yōu)勢。
2.1、硬件端的整體結(jié)構(gòu)
根據(jù)用戶的需求和設(shè)計的要求,本系統(tǒng)的硬件部分由主控單元、WiFi通訊模塊、傳感器模塊、控制模塊、顯示模塊及電源模塊等多個模塊構(gòu)成,硬件端框架圖如下所示:
2.2、硬件模塊組成
本文設(shè)計的智能水產(chǎn)養(yǎng)殖之魚塘控制系統(tǒng)全部由模塊化設(shè)計
由根據(jù)上面的模塊組成圖可以看出,主控芯片模塊在中心的位置,它的作用是對所有模塊和設(shè)備進行控制,使這些外圍模塊相互協(xié)作形成一個完整的硬件控制系統(tǒng),其利用本身的 I/O 接口或串口與傳感器模塊進行通信,獲得傳感器的監(jiān)測數(shù)據(jù);以及對控制模塊進行控制,使相應(yīng)的環(huán)境調(diào)節(jié)設(shè)備做出動作;通過 UART 與 WIFI 模塊進行數(shù)據(jù)交換;以及與顯示模塊進行通信,及時地將監(jiān)測傳感器上傳的數(shù)據(jù)以及控制動作顯示在屏幕上。
2.3、硬件模塊實現(xiàn)
根據(jù)模塊組成圖,下面分別對各大模塊進行介紹。
主控芯片
在魚塘智能控制系統(tǒng)中選擇STM32F103ZET6微處理器作為主控芯片,為了確保系統(tǒng)對數(shù)據(jù)的快速處理、數(shù)據(jù)交換和傳輸過程中速率的精確性,因此采用STM32 最小開發(fā)板
顯示模塊
顯示面板采用SDWa050T04屏幕,具有電容觸摸、電阻觸摸和不帶觸摸三種類型,用于對魚塘數(shù)據(jù)顯示和觸摸控制。
控制輸出模塊
本文采用繼電器控制模塊來進行對外圍設(shè)備,如進水泵、排水泵、酸堿液體泵、熱水泵、充氧機的驅(qū)動控制
系統(tǒng)設(shè)計檢測溫度選擇防水封裝類型的 DS18B20 溫度傳感器。
水位傳感模塊
本系統(tǒng)的水位傳感器選用的是 HC-SR04 超聲波傳感器。
由上圖可以看出,該模塊有四個引腳,分別是:VCC、TRAG、ECHO、GND,其中 VCC 接 5V 電源;TRAG 控制端口,單片機通過該端口控制該模塊發(fā)送超聲波,ECHO 是接收端,單片機通過該端口接收返回的監(jiān)測信號,GND 連接地線。我們在設(shè)計時只需要將 TRAG 和 ECHO 兩個引腳與單片機連接即可。
溶解氧/溫度氣壓傳感模塊
由于水中的溶氧量與當(dāng)?shù)貧鉁睾痛髿鈮河兄芮械年P(guān)系,只要測量出空氣中的氣溫和氣壓后可以間接地計算出水中的溶解氧的含量??紤]到溶解電極昂貴的價格,因此可用溫度氣壓模塊替代溶解氧傳感模塊,進而間接地測量當(dāng)?shù)厮械娜芙庋?,溫度氣壓模塊選用BMP180 繼承模塊,實物圖如下所示。
該模塊的電路原理圖如下:
PH傳感模塊
PH 傳感器模塊由PH傳感器和放大電路組成,PH傳感器采用 E201-C-9傳感器,是用兩種電極結(jié)合的組成的復(fù)合電極,可測量的PH范圍為0-14,零點電位PH為 7±0.25,測量水溫的范圍為0-80℃,PH傳感器實物如下所示。
由于E201-C-9 探頭在實際使用過程中需要對輸出的電流進行放大,為此還需外加 CA3140運算放大器。
CA3140封裝圖:
CA3140引腳說明:
本放大電路的電路圖如下所示,通過CA3140將 PH傳感探頭輸出的信號放大,然后單片機對該信號進行 AD 轉(zhuǎn)換,最終得出 PH 的值。
WiFi模塊
采用ESP8266的WiFi透傳模塊,在系統(tǒng)中起著連接下位機和云平臺的作用。
電源模塊
為了保證系統(tǒng)各個模塊能穩(wěn)定持續(xù)地工作,需要為各個模塊提供相應(yīng)的工作電源,本系統(tǒng)需要的支持電源分為 5V 和 3.3V 兩類,因此在本系統(tǒng)中,利用 AMS1117 芯片來進行從 5V 到 3.3V 的轉(zhuǎn)換。
AMS1117的電路圖:
三、系統(tǒng)軟件設(shè)計
3.1、下位機顯示面板設(shè)計
使用VGUS 軟件在對串口屏界面進行設(shè)計時,根據(jù)本系統(tǒng)的實際情況,完成四個功能界面設(shè)計,分別是主界面、環(huán)境監(jiān)控、環(huán)境控制以及閥值設(shè)置界面。
主界面主要是為用戶提供一個功能導(dǎo)航頁面,根據(jù)用戶當(dāng)時的需要來選擇要進入的界面,可用作設(shè)備異常時進行顯示和報警,還可通過實時監(jiān)控界面查看當(dāng)前魚塘環(huán)境的實時參數(shù);控制界面可以對外圍設(shè)備進行直接控制。
3.2、串口屏界面控制
系統(tǒng)開機時默認(rèn)首先進入到主界面,我們可以在主界面進入對應(yīng)的配置環(huán)境,以便于我們查看魚塘的環(huán)境參數(shù),主界面顯示如圖所示。
通過主界面可選擇進入環(huán)境監(jiān)測這個界面,可以看到魚塘環(huán)境各種參數(shù)的實時信息,包括被控制設(shè)備的狀態(tài),方便魚塘工作人員進行管理,結(jié)合底層傳感器上傳的數(shù)據(jù),直觀地觀察到當(dāng)前魚塘環(huán)境參數(shù)以及各種設(shè)備的控制狀態(tài),該實時監(jiān)測界面如圖所示。
從主界面進入到控制界面,在控制界面可以對調(diào)節(jié)環(huán)境的外圍硬件設(shè)備進行手動的方式控制或者設(shè)置自動控制,控制界面如圖所示。
同時可以聯(lián)合閾值設(shè)定,對各種環(huán)境變量進行控制,更加方便快捷的對魚塘環(huán)境因子做出最敏捷的反饋,實現(xiàn)魚塘環(huán)境控制的自動化,閾值設(shè)定界面如圖所示。
3.3、下位機軟件設(shè)計
本設(shè)計下位機采用 STM32F103 作為核心控制器,在下位機的軟件設(shè)計上采用模塊化的編程思想,將外設(shè)驅(qū)動以及各功能子程序模塊化。主程序當(dāng)中首先進行系統(tǒng)初始化,配置并使能系統(tǒng)時鐘,初始化中斷向量表,然后依次配置各外設(shè)引腳以及對外設(shè)的初始化。
接著對各個傳感器模塊以及 ESP8266 WiFi模塊等外圍設(shè)備進行初始化,然后上傳和下載云端保存的魚塘控制數(shù)據(jù)以及獲取用戶通過串口屏操作的控制數(shù)據(jù),接下來就是運行水溫、水位、溶解氧以及 PH值的控制子程序。通過這個控制子程序來實現(xiàn)對魚塘環(huán)境的控制,接下來就重點講解這幾個控制子程序。
由于主程序代碼太長,下面僅展示主程序配置部分,主程序配置部分程序如圖所示:
水溫控制子程序
魚塘水溫由DS18B20傳感器進行監(jiān)測,當(dāng)前溫度低于預(yù)設(shè)水溫閥值下限,那么打開熱水進水閥;當(dāng)溫度高于預(yù)設(shè)水溫閥值上限時打開冷水進水閥來綜合魚塘的溫度。如果監(jiān)測到的水溫在預(yù)設(shè)閥值以內(nèi),那么關(guān)閉冷水和熱水的進水閥。溫度控制子程序流程圖如圖所示:
水位控制子程序
水位傳感器是利用超聲波模塊來監(jiān)測水面到地面的距離,獲取魚塘底到地面的距離,可計算出魚塘中水位高度。如果實際水位高度高于預(yù)設(shè)閥值上限,那么打開排水泵進行泄洪。當(dāng)實際水位低于預(yù)設(shè)閥值下限,此時打開進水泵增加魚塘的水量,保證魚類的生存區(qū)域。
溶解氧/溫度氣壓控制子程序
由BMP180傳感器檢測出當(dāng)?shù)貧鉁睾蜌鈮汉?,直接計算氣溫和氣壓與水中溶氧量的計算關(guān)系得出水中的溶氧量,通過打開充氧機充氧的方式來控制水中的含氧量,而水中含氧量的飽和不會影響魚類生長,因此,我們只需要在水中溶氧量不足時打開充氧機即可。溶氧量控制子程序流程圖如圖所示:
3.4、上位機軟件設(shè)計
WiFi模塊軟件設(shè)計
本系統(tǒng)是選用的 ESP8266 WiFi模塊與機智云的云端建立連接關(guān)系,先在WiFi 模塊里燒錄機智云GAgent 固件,然后利用 GizWits 協(xié)議接入到機智云云端,下位機每 30 秒將會和云端通信一次,進行上報數(shù)據(jù)以及下載控制變動。ESP8266 使用指令互相發(fā)送請求與應(yīng)答的方法與 STM32 建立通信,兩者之間使用串口進行通信。
ESP8266 有 AirLink 和 Soft AP 兩種入網(wǎng)模式,下位機在初始化時將其配置成 AirLink方式入網(wǎng);STM32 主要是向 ESP8266 發(fā)送查詢指令和控制指令。而 ESP8266 則通過向 STM32 發(fā)送查詢指令來獲取 STM32 的狀態(tài);通過發(fā)送控制命令是將 APP 端上傳到機智云的控制數(shù)據(jù)發(fā)送至下位機。
接入機智云軟件設(shè)計
在設(shè)備接通電源以后,在 ESP8266 WiFi模塊第一次接入機智云云端之前,需將 ESP8266 設(shè)置為 AirLink 模式。
本文采用的 ESP8266 在完成燒錄機智云GAgent 固件之后便內(nèi)置了此模式。WiFi模塊使用 GitWits 協(xié)議和機智云建立連接,在連接成功后,會不斷地向主控芯片發(fā)送獲取設(shè)備狀態(tài)的請求,STM32 每過一段時間都會上報設(shè)備信息給 ESP8266。接入機智云平臺流程圖如圖所示:
機智云IoT云平臺接入開發(fā)
下面來了解一下使用機智云開發(fā)產(chǎn)品的步驟流程:
◆ 在機智云官網(wǎng)注冊一個屬于自己的賬號,以后在上面創(chuàng)建的項目也是通過個人賬號來管理。
◆ 賬號登錄后,進入到機智云地開發(fā)者中心,點擊開發(fā)一個新的產(chǎn)品,在里面根據(jù)自己項目需要新建數(shù)據(jù)點,項目的云平臺數(shù)據(jù)點如圖所示。
◆ 我們使用機智云提供的 APP 進行遠(yuǎn)程控制,選用機智云官方提供的終端進行調(diào)試。
◆ 利用機智云IoT云平臺提供的虛擬設(shè)備進行虛擬調(diào)試,虛擬設(shè)備調(diào)試通過后點擊生成 MCU 代碼,將其移植到自己的處理器當(dāng)中。
◆ 下載機智云的GAgent 固件并燒錄到 ESP8266 WiFi 模塊內(nèi)。
◆ 直接使用機智云官方提供的代碼,移植到本系統(tǒng)里。在 MCU 開發(fā)方案那里,選擇 STMM32F103ZET6 硬件平臺的開發(fā),然后填入 Products secret,這個可以在產(chǎn)品基本信息里查看,然后點擊生成代碼包,最后,在 MCU 開發(fā)里下載根據(jù)自己項目生成的相應(yīng)的代碼包,將其移植進來。
下面就重點介紹代碼的移植和修改過程。在移植代碼時,非常關(guān)鍵的一步便是移植 GizWits 文件夾,其中主要包含了四個文件:gizwits_product.c 是處理和功能有關(guān)的文件;gizwits_product.h 是.c 文件的頭文件,不需要去修改它;gizwits_protocol.c 主要功能是處理相關(guān)的協(xié)議;gizwits_protocol.h 里定義了通信密匙以及一些變量和結(jié)構(gòu)體等。
GizWits 文件夾的移植分為五個步驟:
◆ 利用機智云Gizwits提供的 gizputdaat()和 uartwrite()函數(shù)通過串口進行數(shù)據(jù)的收發(fā),以實現(xiàn)WiFi模塊與主控芯片之間的通信。
◆ 程序在運行時在一些必要的時候需要復(fù)位,這里就需要用到復(fù)位函數(shù)。ESP8266 在和主控通信時便是如此,mcurestart()便是這個函數(shù),對WiFi模塊進行軟件復(fù)位。
◆ 通過使用 GizWitsSetMode()函數(shù),以選擇通過什么樣子的方式入網(wǎng),可以進行復(fù)位、Soft AP、AirLink 以及綁定設(shè)備這五種模式進行配置。
◆ 通過結(jié)構(gòu)體 dpint 把采集到的各項數(shù)據(jù)上傳到云端,結(jié)構(gòu)體內(nèi)容如下:
typedef struct{
bool coldin; //冷水進水泵
bool waterout; //出水泵
bool warmIn; //熱水進水泵
bool jiasuan; //加酸水泵
bool jiajian; //加酸水泵
int watertemp; //水溫
int watertempup; //水溫上限
int watertempdown; //水溫下限
float ph; //PH 值
float phup; //PH 上限
float phdown; //PH 下限
int o2; //溶解氧
int o2down; //溶解氧下限
int watrlevel; //水位
int waterlevelup; //水位上限
int waterleveldown;//水位下限
}dpint; //數(shù)據(jù)點
◆ 實現(xiàn)系統(tǒng)內(nèi)設(shè)備的控制功能。在 gizwitsEventProcess()事件處理函數(shù)中添加需要處理數(shù)據(jù)點的事件,當(dāng)設(shè)備收到云端下發(fā)的信息時,將會根據(jù)具體情況選擇如何執(zhí)行何種控制動作。
四、系統(tǒng)總結(jié)
本文設(shè)計的魚塘控制原型系統(tǒng)主要介紹了系統(tǒng)的下位機的軟硬件實現(xiàn)、以及上位機云平臺的接入等部分。在確保云平臺與 APP 端之間是否能正常通信,這可以利用機智云官方提供的虛擬設(shè)備,它模擬設(shè)備進行數(shù)據(jù)推送,手機 APP 通過掃云端二維碼綁定云端虛擬設(shè)備,接著就進行驗證云端和 APP 之間的數(shù)據(jù)收發(fā)。
在云端虛擬設(shè)備中分別填入要下發(fā)的數(shù)據(jù)點的值,然后點“推送”按鈕,將數(shù)據(jù)下發(fā)給 APP,APP 端能夠收到數(shù)據(jù)并顯示;接著在 APP 端設(shè)置數(shù)據(jù)的值,然后可看到云端虛擬設(shè)備能夠同步響應(yīng),則成功實現(xiàn)通信。
本魚塘智能控制系統(tǒng)設(shè)計操作簡單,界面簡潔直觀,簡單易上手,可實時監(jiān)控,控制反應(yīng)快,使魚塘養(yǎng)殖變得更加簡單,可以極大地降低勞動強度,節(jié)省勞動成本的同時也提高了養(yǎng)殖效率,系統(tǒng)整體實物效果圖如下所示。
責(zé)任編輯:haq
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6644瀏覽量
110729 -
機智云
+關(guān)注
關(guān)注
2文章
590瀏覽量
26442
原文標(biāo)題:基于機智云自助開發(fā)平臺的智能水產(chǎn)養(yǎng)殖之魚塘控制系統(tǒng)設(shè)計
文章出處:【微信號:IoTMaker,微信公眾號:機智云開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論