黃桂萍
(龍巖學院 機電工程學院,福建 龍巖 364000)
水質監測是保護水資源的重要環節。水質自動監測在國外起步較早,我國在水質的自動監測與分析、報警體系等方面還處于初級階段[1]。國內的水質監測系統大多設在自來水廠、污水處理廠等水處理機構,其精度高但價格昂貴,一套設備動輒幾十萬、上百萬,不適合推廣和用于大面積的水質監測。再加上其顯示設備,大多是現場設備無法實現共享,滿足不了目前的網絡化、信息化、數字化要求[2-3]。本文設計了物聯網水環境監測系統,通過傳感器采集的水溫度、電導率、PH值、渾濁度等值,使用STM32將數據處理打包。通過STM32的USART接口與GPRS模塊通信,將數據傳入GPRS模塊緩存中,使用GPRS模塊將采集到的水質參數按照數據幀格式打包。后臺服務器獲取相應數據后,經過分析處理,通過采用B/S結合C/S模式存儲與顯示相關數據,實現數據的網絡化快捷顯示,使數據得到很好的共享[4]。

圖1 系統結構圖
系統通過水溫度傳感器、水電導率傳感器、PH值傳感器與渾濁度傳感器,把與水質相關的參數轉化成電信號,再經過濾波放大電路,將電信號轉化成可以被STM32采集的電壓信號和頻率信號,再通過STM32將數據封裝成HTTP協議報文的格式,使用串口與GPRS模塊通信,通過GPRS把數據發送給服務器開放的接口,再通過網頁和手機端顯示,并實現水質污染報警等功能。
PH檢測采用的是電位檢測法[5],通過玻璃電極傳感器獲取水中的氫離子含量。傳感器由兩端組成,電極的一端連接通過玻璃電極頭部的球泡的特殊敏感材料,這種材料只對氫離子敏感,另一端連接用甘汞材料制成的電極作為參考電極。當溶液中的氫離子的濃度也就是PH值發生變化時,指示電極與參考電極之間的電動勢發生變化,根據能斯特方程式(1)。式(1)中R為氣體常數的8.3 J/(K·mol),T是絕對溫度K,F為法拉第常數NA,n為電極反應中得失的電子數,OX為氧化型物質濃度,Red為還原型物質濃度,它反映的是非標準電極的電勢與標準電極電勢的關系,從而得出計算公式(2)。
E=E0-RT/nF*lg[OX/Red],
(1)
E=E0+ST(PH-7)。
(2)
式(2)中E為電極的輸出電動勢mV,E0為動標準電極電動勢單位為mV。S為能斯特系數,T為絕對溫度K,PH水的PH值??闪頚(T)=ST,根據式(3),可使用用最小二乘法可求出K(T)。
PH=(E-E0)/K(T)+7。
(3)
由于PH傳感器的輸出電動勢太小,且內阻大,無法直接被STM32微處理器采集,因此,電信號必須要進行放大。系統采用三級OP07的方法電路,如圖2所示。由于PH傳感器的內阻大,因此第一級放大電路采用電壓跟隨器的接法,以減少內阻,增強電壓信號。第二級對主要對電壓信號進行放大與濾波。其放大倍數可根據電路計算求出。第三級將放大后的信號濾波放大后,將電壓轉化成0-3.3V,以滿足STM32微處理器的AD采樣電壓的要求。

圖2 PH值監測轉化電路

圖3 電導率監測電路
水電導率可通過水中含有的離子總量來判斷,簡而言之就是水的導電能力。水的電導率監測在環境水質檢測、電子工業用水水質評定中運用非常廣泛[6]。通過這一特性,就有兩種測量的方法測量水電導率:第一種,直接測量電阻;第二種,交流激勵。采用第一種方法,會導致水的電解,使測量結果不正確。系統采用第二種,使用交流激勵電極極化的方法,削弱了介質電極化現象,提高了測量的精確度和穩定度。此外,為了最大程度地減少電解對系統產生的影響,可加大電極面積或使用惰性金屬的電極。該方法一般采用1 kHz-2 kHz的振蕩頻率,由于水的電容作用,頻率不能無限增高。通過實驗選取1 kHz的振蕩頻率比較合適。系統通過NE555自激振蕩電路直接產生矩形脈沖。電路如圖3所示。
水的溫度檢測采用最常見的溫度檢測元器件DS18B20,這款芯片具有體積小、精度高的優點。一根通信線可以掛很多這樣的數字溫度計,十分方便。測量溫度范圍在-55度到+125度之間,供電電壓為3.0 V-5.5 V,分辨率為9 bit到12 bit可選,轉化時間最長為750 ms,系統采用防水凱裝的DS18B20傳感器。
水的濁度是檢測水質的重要指標之一,用來表示液體的清潔度[7]。渾濁度可通過測量光在水中傳播的散射強度來確定。光的散射是指光通過不均勻介質時一部分光偏離原方向傳播的現象。渾濁度傳感器由光束發送端與光束接收端組成,接收端由光敏感元器件組成。使用時,發射端發出一段光束,照射在接收端上面。當水質較清澈時,散射作用較弱,接收端接收到的光照強度高,電阻下降;當水質較為渾濁時,由于散射作用較強,接收端接收到的光照強度較低,電阻上升。接收端再通過簡單的放大電路使電壓到達STM32微處理器AD的采樣要求,實現對水的渾濁度的檢測。光敏電阻采用非密封型的MG45,發射的光源采用普通的發光二極管,然后把它們封裝在n形狀的透明塑料中,以保證傳感器的正常運行和穩定性。由于系統容易受外在因素的影響,所以實際使用時,采用多個傳感器多次一起采樣數據并取平均值作濾波處理。
報文的拼接是系統的難點,系統使用STM32拼接HTTP字符串,HTTP協議全稱超文本傳輸協議,是基于TCP之上的應用層網絡協議,它主要用于B/S模式下傳輸超文本文檔,它可以使得瀏覽器更加高效,傳輸任務減少。HTTP消息包括兩種顯示,第一種是客服端向服務區請求消息,第二種是服務器向客服端響應消息。請求報文由請求頭、請求體組成。請求體是數據的載體,而請求頭記錄的是數據的目的地址、格式、數據體的字節長度等[8]。請求的方式有Get,Post,Delete,Put等,系統采用Post請求方式。HTTP的請求協議具體如圖4所示。

圖4 HTTP請求報文格式

圖5 HTTP響應報文格式
響應報文由響應頭與響應體組成。響應體是HTTP數據的數據體;響應頭的功能與請求頭功能相似,包含響應數據體的格式、數據體的字節長度、請求是否成功等。具體協議格式如圖5所示。
系統通過GPRS模塊先建立TCP連接,連接成功后,首先通過鏈表動態分配出一塊內存,獲取數據,將數據轉化成JSON格式的字符串形式,接著拼接HTTP報文頭,向服務器發送請求,等待服務器響應,再把響應的報文顯示到LCD上。

圖6 硬件系統流程圖
系統一開始運行時,先對STM32的時鐘、定時器、中斷、串口等初始化,再通過串口發送AT指令與GPRS模塊通信,對GPRS模塊進行初始化,通過GPRS嘗試連接服務器。連接服務器失敗時,重新初始化、GPRS模塊重新連接。連接上服務器時,即以服務器建立穩定的TCP連接就可以向服務器發送數據了。
發送過程:首先,STM32通過自帶12位AD獲取經過水質的3種指數,水的渾濁度,電導率,PH;接著,獲取溫度值;獲取完所有的值后,使用戰艦板子上自帶的LCD顯示屏顯示具體參數;利用動態數組拼接HTTP字符串;再通過串口把HTTP字符串發送給GPRS模塊,通過GPRS發送到服務器上。硬件系統流程圖如圖6所示。
上位機服務器軟件,利用asp.net設計相關網頁,使用Web API接口實現數據的傳輸。Web API網站是程序的一部分,網頁端在讀寫數據庫的過程中與接收端軟件讀寫數據庫時就不會發生沖突問題。使用HTTP的報文可以訪問Web API接口,即實現了GPRS數據發送給Web API。STM32主控如何將數據發送TCP報文,因為水質數據的長度會變化,如果使用靜態字符串將不能滿足數據變化的需要,所以使用動態鏈表來解決數據長度變化問題。在數據庫方面采用SQLite小型數據庫。軟件系統將從硬件獲取的數據,寫入數據庫中,利于高德地圖的JavaScript接口,將實時數據顯示在高德地圖上面,通過High Charts將歷史數據顯示通過折線圖顯示出來;開發相應的手機端接口,通過手機APP把數據顯示在手機上,在手機上實現用戶管理。實現報表導出、報警的自定義設置、數據表格形式的查看、用戶管理設置、系統管理等功能。
系統采用高德地圖顯示,無論是在顯示的效果方面,還是在人性化與趣味性方面都有很好的效果。用戶登錄時,為了提高用戶體驗,先加載網頁,然后通過Ajax異步加載地圖,獲取相應的數據再加載到客服端上。由于數據結構比較多,包括各個點的實時數據和歷史數據,所以,使用一般的for語句無法遍歷,因而系統采用正則表達式分離數據,再拼接成相應的HTML格式文本,最后調用高德地圖的接口含數顯示在網頁上面。為了增加顯示效果,在系統打開是默認以水源地為中心畫陰影,并在監控的水源地點與點之間畫線,如圖7所示。

圖7 高德地圖頁面
系統采用Bootstrap完成數據的表格形式顯示。Bootstrap是Twitter的前臺框架,是基于HTML、CSS、JavaScript的簡潔靈活的Web開發工具。使用Bootstrap顯示表格數據極大地美化了前臺的顯示效果。由于數據量比較龐大,為了滿足用戶需求,可以通過選擇或自定義時間設置、查詢相關的數據,當點擊導出報表時,獲取用戶的自定義時間,重新查詢數據庫,并生成報表提供給用戶下載。表格形式顯示如圖8所示。

圖8 表格顯示圖
當水質發生問題時,及時發現并處理問題是非常必要的,這就需要及時地發出報警信息。系統在每次接收到數據時,與數據庫設置的最小值與最大值進行比較,當小于最小值或大于最大值時,給指定用戶發送此時超標的指數和超標的值。系統開發了相應的報警設置,如圖9所示,可以自由設置溫度、pH值、渾濁度、電導率的最高值和最低值,并設置報警的方式與報警的頻率。

圖9 設置報警消息圖
本文利用STM32作為主控制器,設計相關電路用于檢測水環境的PH值、電導率、溫度與渾濁度,并在STM32上面實現HTTP報文傳輸協議,最終通過GPRS模塊發送至服務器上。研究與使用了TCP、HTTP等相關協議,利用asp.net設計及相關數據庫系統設計相關網頁,實現了對水質的多項指標進行監測,可長期監測并實時上傳數據到公共平臺。
[1] 劉文利,代進,張俊棟.水源地水質監控預警體系的建立[J]. 工業安全與環保, 2011,37(3):15-16.
[2] 許佳,張明珊. 基于物聯網的水環境在線監測系統的研發[J]. 中國新通信, 2015,17(10):120.
[3] 盧亞楠. 水環境智慧監測服務系統設計與實現[D].南京:南京郵電大學,2014.
[4] 肖彥均,蘇世旭,郭永安.基于物聯網的水環境智能監控分析系統[J]. 微型機與應用, 2016,35(22):102-104,107.
[5] 胡月明,黃建清,王衛星,等. 水產養殖水質pH值無線監測系統設計[J]. 傳感器與微系統, 2014,33(11):113-116,120.
[6] 金倩倩. 在線水溶液電導率儀的研制[D].南昌:東華理工大學, 2013.
[7] 盛強,何小剛. 遠紅外發光二極管與水的濁度檢測[J]. 科技情報開發與經濟,2007,17(7):274-275.
[8] 王超,胡晨,劉新寧,等. 嵌入式系統中HTTP協議的實現[J].電子器件, 2002,25(1):93-96.