劉永軍田志新宋妙龍陳銳徐震
(1.上海綠椰農(nóng)業(yè)種植專業(yè)合作社,上海 201715;2.上海工程技術(shù)大學(xué),上海 201620;3.青浦區(qū)水產(chǎn)技術(shù)推廣站,上海 201799)
我國對魚菜共生監(jiān)測控制系統(tǒng)研究起步較晚,發(fā)展緩慢[1],國內(nèi)現(xiàn)有的魚菜共生農(nóng)業(yè)生產(chǎn)方式仍是以人工觀測和經(jīng)驗判斷為主,耗費人力、時間,而且出錯率比較高。隨著科學(xué)技術(shù)的發(fā)展和物聯(lián)網(wǎng)技術(shù)的興起,數(shù)字化養(yǎng)殖應(yīng)運而生,將互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、通信技術(shù)等新興技術(shù)結(jié)合起來,讓智能化、信息化、機械化逐漸取代人工,保證農(nóng)產(chǎn)品質(zhì)量安全的前提下大大提高了生產(chǎn)效率,從而提高了農(nóng)業(yè)經(jīng)濟效益。楊世鳳等[2]設(shè)計了一套控制系統(tǒng),實現(xiàn)了溶氧監(jiān)測的同時具有自動調(diào)控功能;但其僅能調(diào)控單參數(shù),多參數(shù)下還是需要手工調(diào)控,對于多參數(shù)管理性能較差。趙月玲等[3]設(shè)計出一種基于傳感器技術(shù)的低功耗的魚菜共生系統(tǒng)實現(xiàn)對pH數(shù)據(jù)進行監(jiān)測與調(diào)控。
本文設(shè)計的智能監(jiān)測與聯(lián)動控制系統(tǒng)從魚菜共生系統(tǒng)的水質(zhì)參數(shù)入手,實時獲取到水質(zhì)參數(shù)信息,運行穩(wěn)定可靠。保證食用魚的正常生活環(huán)境。實現(xiàn)魚菜共生系統(tǒng)的多參數(shù)智能化調(diào)控管理,對于規(guī)?;B(yǎng)殖有十分重要的意義。
系統(tǒng)功能由3個關(guān)鍵模塊組成,通信模塊,UPS模塊,報警模塊。系統(tǒng)流程如圖1所示。
圖1 實驗流程圖
考慮到需要用到多個串口進行數(shù)據(jù)通信,主控芯片部分選用STM32F103ZET6,芯片共有144個引腳,包括5個串行接口,本文設(shè)計的聯(lián)動控制系統(tǒng)主機需要用到3個串口進行數(shù)據(jù)通信。以水體溶解氧、水溫、pH值3個參數(shù)為例,實現(xiàn)聯(lián)動控制。
串口1用于PC端與STM32主機之間進行通信,串口3和BC20模塊之間通信信息可以通過printf函數(shù)輸出到串口1,從而可以通過串口調(diào)試助手在PC端查看到BC20模塊的初始化以及運行信息。傳感器并聯(lián)走485總線,數(shù)據(jù)通信協(xié)議為Modbus協(xié)議。傳感器地址默認為01,為了防止地址沖突造成數(shù)據(jù)讀取失敗,將溶解氧傳感器的地址設(shè)置為02。Modbus協(xié)議是一種國際標準的通訊協(xié)議,每臺從機由用戶設(shè)定地址以實現(xiàn)訪問操作,地址范圍為0~255[4]。標準的Modbus協(xié)議采用2種模式進行通信,ASCII模式和RTU模式[5]。
相比于ASCII模式,RTU模式在同等速率下能夠傳輸更多的信息,所占空間小,傳輸時間短,因此選取RTU模式進行傳輸。
地址幀編碼為1~255,1個主機可接255臺從設(shè)備。同一時間,主設(shè)備只能和1臺從設(shè)備進行通信。從機接收完畢后,生成接收數(shù)據(jù)(CRC碼除外)的CRC校驗碼,并與主機發(fā)送的CRC碼比較,若相同則認為接收正確。
STM32主機通過485總線接收到的數(shù)據(jù)采用iEEE754格式,CDAB換順序為ABCD,以溫度測量值為例,順序交換后的數(shù)據(jù)為0x41、0xC6、0x47、0xBC。需要將這4個數(shù)據(jù)轉(zhuǎn)換為浮點數(shù),在計算機中,浮點數(shù)的存儲均采用4字節(jié)的iEEE754格式。下位機應(yīng)答數(shù)據(jù)式如表1所示。
表1 接收數(shù)據(jù)包格式
表2 IEEE754格式
將ABCD數(shù)據(jù)轉(zhuǎn)換為二進制形式,第1位為符號位s,1表示負數(shù),0表示正數(shù),第23~30位是階碼n,第0~22位是尾數(shù)。轉(zhuǎn)換為浮點數(shù)的計算公式:
(-1)s×2n-127×(1+m)
(1)
式中,s=0,n化成十進制數(shù)為131,偏移量為127,尾數(shù)m需要各個位乘以權(quán)重再相加,每個位的權(quán)重系數(shù)為2i-23,如第22位的權(quán)重系數(shù)為2-1,第0位的權(quán)重系數(shù)為2-23。計算公式:
(2)
式中,j為各個位的數(shù)值。如表2所示數(shù)據(jù)計算得:
m=1×2-1+0×2-2+...+0×2-23=0.5491
(3)
代入公式得最后的浮點數(shù)為(-1)0×2131-127×(1+0.5491)=24.7856,所以數(shù)據(jù)最終的結(jié)果為24.7856℃。同理,取到pH值為4.2018,溶解氧的值為10.9103mg·L-1。
各個傳感器實時監(jiān)測水體參數(shù),將數(shù)據(jù)存儲至寄存器,主機通過485總線向各個傳感器發(fā)送Modbus指令碼,實現(xiàn)對各個傳感器數(shù)據(jù)寄存器的數(shù)據(jù)讀取,在主程序內(nèi)可以進行輪詢周期的設(shè)置,從而達到對各參數(shù)的實時查詢。
從傳感器讀到的數(shù)據(jù)發(fā)送至NB模塊,NB模塊通過AT指令將數(shù)據(jù)進行打包處理,發(fā)送至云平臺或服務(wù)器進行數(shù)據(jù)遠程監(jiān)測。本文設(shè)計的聯(lián)動控制系統(tǒng),數(shù)據(jù)上傳到阿里云物聯(lián)網(wǎng)平臺。主機通過串口3向NB模塊發(fā)送AT指令,進行NB模塊的初始化入網(wǎng)配置,并通過AT指令配置模塊MQTT協(xié)議版本,通過MQTT協(xié)議連接至阿里云平臺。
考慮到系統(tǒng)在停電時需要持續(xù)運行,需要給系統(tǒng)加裝UPS不間斷供電電源,如圖2所示。
圖2 UPS不間斷供電流程圖
主電源是一個220V轉(zhuǎn)12VDC的開關(guān)電源,12VDC下游接1個電壓轉(zhuǎn)換模塊,可以將12VDC轉(zhuǎn)換為3.3V、5V等,可以通過MCU的GPIO引腳接在3.3V輸出的引腳上,時刻檢測電壓值,當(dāng)主電斷開時,電壓由3.3V降到0V,此刻,在主程序里可以設(shè)定當(dāng)電壓值小于0.5V時,判定主電源斷電,并發(fā)出報警信息。電壓轉(zhuǎn)換模塊12V接口接UPS不間斷供電模塊,該模塊另一路接12VDC鋰電池,可以實現(xiàn)在主電斷電的時候,切換到鋰電池供電,從而實現(xiàn)不間斷供電。
圖3 UPS不間斷供電模塊
設(shè)備在運行過程中,難免會監(jiān)測到異常數(shù)據(jù),此時需要通過語音報警功能提醒工作人員,一旦設(shè)備聯(lián)動控制出現(xiàn)故障,工作人員可以在第一時間進行人工干預(yù),從而將風(fēng)險降到最低。
圖4 語音模塊
語音模塊IO0-IO7 8個引腳可以選擇為組合模式或者獨立模式,獨立模式下0~7引腳每個引腳可以通過低電平觸發(fā)1首MP3音頻,而組合模式可以通過0~7引腳組合電平,可以播放0~255首MP3音頻。由于設(shè)備報警信息少,因此選擇獨立模式即可滿足功能需求。事先錄制好每個報警信息對應(yīng)的報警音頻,按照要求各市存放在TF儲存卡內(nèi),通過向引腳發(fā)送低電平來觸發(fā)報警音頻。
本文選用的傳感器為瑞蒙德廠家生產(chǎn)的智慧型傳感器如圖5、圖6所示。
圖5 PH傳感器 圖6 溶解氧傳感器
按照系統(tǒng)原理圖以及流程圖將主機與傳感器設(shè)備以及打氧泵,加熱棒等連接好進行實驗測試,測試發(fā)現(xiàn)主機給設(shè)備發(fā)送指令碼后讀取不到設(shè)備數(shù)據(jù),通過使用別的廠家設(shè)備進行收發(fā)數(shù)據(jù)正常,排除代碼錯誤的可能。通過萬用表電壓檔和電阻檔通過測量485信號線AB間的電壓,測量數(shù)據(jù)如表3所示。
表3 485傳感器測試電壓電阻值
通過對比,猜想可能跟主機電路板485接口AB間并聯(lián)的匹配電阻有關(guān)。在RS485通信中,有一種阻抗不連續(xù)現(xiàn)象。為了消除這種阻抗不連續(xù)現(xiàn)象,需要在電纜的末端跨接1個與電纜的特性阻抗大小相等的匹配電阻,使電纜的阻抗連續(xù)[6]。這種阻抗不連續(xù)現(xiàn)象往往在遠距離傳輸或者多設(shè)備傳輸時產(chǎn)生,考慮到本文使用的傳感器只有10m左右,設(shè)備數(shù)不超過3臺,加裝匹配電阻反而會拉低設(shè)備接入時的電平,導(dǎo)致數(shù)據(jù)無法正常接收。
后續(xù)將STM32開發(fā)板的485接口AB線間的跨接電阻去掉后,傳感器可以正常傳輸數(shù)據(jù)。
故障排除后,設(shè)備正常運行,初始化界面顯示BC20 is initializing...,字體不斷變色,等待BC20的初始化配置,如圖9所示。
初始化結(jié)束后,系統(tǒng)進入主界面,實時顯示傳感器的收發(fā)數(shù)據(jù)信息,并將數(shù)據(jù)結(jié)果以及各個參數(shù)報警信息顯示在LCD屏上,供工作人員現(xiàn)場查看,如圖10所示。
溫度預(yù)設(shè)值為20~25℃,溫度低于20℃會自動開啟加熱器,使水升溫,溫度達到25℃后,自動關(guān)閉加熱器。溶解氧預(yù)設(shè)值為10.5mg·L-1,當(dāng)測得溶氧值低于該值時,系統(tǒng)自動啟動打氧泵,使水中溶解氧升高,到達10.5mg·L-1后自動關(guān)閉打氧泵。如圖11所示為設(shè)備正常運行狀態(tài)。
圖7 打氧泵 圖8 加熱器
圖9 系統(tǒng)初4始化
圖10 數(shù)據(jù)顯示界面
圖11 控制設(shè)備啟動
阿里云物聯(lián)網(wǎng)平臺是一個為開發(fā)人員推出的設(shè)備管理平臺,該平臺可以實現(xiàn)傳感器設(shè)備、嵌入式設(shè)備等終端與云端的雙向數(shù)據(jù)通信[7]。設(shè)備接入物聯(lián)網(wǎng)平臺流程如圖12所示。
圖12 阿里云接入流程
終端設(shè)備與云端通過MQTT協(xié)議進行通信,在MQTT協(xié)議下,平臺作為消息代理,終端設(shè)備作為消息發(fā)布者,而電腦或者移動端作為消息訂閱者。創(chuàng)建設(shè)備最后得到了設(shè)備認證三元組信息,通過三元組信息,建立設(shè)備與物聯(lián)網(wǎng)平臺的連接,將數(shù)據(jù)通過BC20上發(fā)給阿里云物聯(lián)網(wǎng)平臺,實時監(jiān)控數(shù)據(jù),監(jiān)控界面如圖13~15所示。
圖13 溫度曲線
圖14 溶氧量曲線
圖15 pH曲線
為了保證系統(tǒng)開發(fā)的完整性,聯(lián)動控制系統(tǒng)數(shù)據(jù)同時上傳到自建服務(wù)器。NB-IoT支持4種常用協(xié)議TCP、MQTT、COAP、UDP,采用MQTT協(xié)議或者COAP協(xié)議可以對接阿里云平臺、電信云平臺等平臺。而采用TCP協(xié)議或者UDP協(xié)議與自建服務(wù)器進行數(shù)據(jù)通信。
UDP(User Datagram Protocol)用戶數(shù)據(jù)包協(xié)議,簡稱UDP。IP通過IP地址信息把數(shù)據(jù)包發(fā)送給指定的電腦,然后UDP協(xié)議通過端口號就能把數(shù)據(jù)包發(fā)送給指定的程序。
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。相比于UDP而言,TCP協(xié)議是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議[8]。
對比了2種協(xié)議優(yōu)缺點,在傳感器數(shù)據(jù)收發(fā)過程中,需要保證數(shù)據(jù)的完整性和可靠性,因此考慮使用TCP協(xié)議建立連接。
測試階段,由于NB-Io T模塊與自建服務(wù)器進行通信時,只能通過公網(wǎng)IP地址和端口號與自建服務(wù)器建立連接,而PC端是通過路由網(wǎng)關(guān)連接到Internet網(wǎng)絡(luò)的,此時給電腦分配的IP地址稱為內(nèi)網(wǎng)IP,NB-Io T模塊不能通過內(nèi)網(wǎng)IP來與自建服務(wù)器進行連接的。想要進行通信必須將自建服務(wù)器的IP地址和端口號映射到公網(wǎng)上,將內(nèi)網(wǎng)中的PC端IP地址映射到公網(wǎng)中的過程被稱為內(nèi)網(wǎng)穿透,又稱NAT穿透[9]。PC端上安裝“花生殼”軟件,可以實現(xiàn)把內(nèi)網(wǎng)IP地址和端口號映射到云端。
圖16為花生殼軟件進行內(nèi)網(wǎng)穿透的結(jié)果。
圖16 利用花生殼進行內(nèi)網(wǎng)穿透
本機地址為127.0.0.1,端口號為8081,映射公網(wǎng)IP為103.46.128.49,端口號為56430,如圖17所示。
通過實驗測試,各個設(shè)備間的聯(lián)動控制與報警實現(xiàn)功能運行正常,UPS不間斷供電運行正常,數(shù)據(jù)上傳下發(fā)功能正常,云平臺數(shù)據(jù)收發(fā)正常,使得工作人員可以遠程監(jiān)控,節(jié)約人力成本,較好地實現(xiàn)了對魚菜共生系統(tǒng)的智能化管理,同時,在此系統(tǒng)基礎(chǔ)上可以開發(fā)更多的參數(shù)監(jiān)測以及聯(lián)動控制,而不局限于水質(zhì)參數(shù)的監(jiān)測。對將來的集成化、規(guī)?;?、智能化發(fā)展具有十分重要的意義。
圖17 建立TCP連接
本文設(shè)計的智能監(jiān)測與聯(lián)動控制系統(tǒng)從魚菜共生系統(tǒng)的水質(zhì)參數(shù)入手,實時獲取到水質(zhì)參數(shù)信息,運行穩(wěn)定可靠。從以下幾個方面實現(xiàn)了魚菜共生系統(tǒng)的智能化管理,對于規(guī)模化養(yǎng)殖有十分重要的意義。
針對魚菜共生系統(tǒng)需要監(jiān)測的關(guān)鍵參數(shù),利用stm32單片機,利用RS485總線傳輸,進行了模塊化設(shè)計,即分成水質(zhì)參數(shù)監(jiān)測、云平臺數(shù)據(jù)交互、語音報警、LCD彩屏顯示、設(shè)備控制等模塊,在每一個模塊中,同時方便增刪單個傳感器,方便以后的二次開發(fā)。
利用STM32和NB-IoT,對魚菜共生系統(tǒng)中所需的參數(shù)進行監(jiān)測,實現(xiàn)了遠程監(jiān)測。
通過對關(guān)鍵參數(shù)的監(jiān)測,對影響魚菜共生系統(tǒng)涉及的設(shè)施設(shè)備運行的參數(shù)進行了融合,基于STM32和物聯(lián)網(wǎng)技術(shù),實現(xiàn)了多參數(shù)融合下設(shè)施設(shè)備的智能聯(lián)動控制。
市面上的DTU設(shè)備只考慮到數(shù)據(jù)監(jiān)測,沒有實現(xiàn)數(shù)據(jù)的分析與聯(lián)動控制。本系統(tǒng)針對魚菜共生系統(tǒng)中比較重要的幾個參數(shù)入手,不但實現(xiàn)數(shù)據(jù)檢測,同時實現(xiàn)聯(lián)動控制。
本文中涉及到的是養(yǎng)殖水體的pH值、溶解氧、溫度等參數(shù),在這個模式的基礎(chǔ)上可以進一步開發(fā),將蔬菜生長環(huán)境參數(shù),如溫濕度、光照度、CO2濃度、氣壓等重要參數(shù)考慮進去,從而實現(xiàn)魚菜共生的多參數(shù)智能化監(jiān)測與聯(lián)動控制。