王明軍, 樊思雨
1(西安理工大學 自動化與信息工程學院, 西安 710048)
2(陜西理工大學 物理與電信工程學院, 漢中 723001)
3(陜西省智能協同網絡軍民共建重點實驗室, 西安 710126)
目前, 我國城市化發展水平在逐年提高, 但是城市人口的飛快增長、水資源供應缺乏、以及環境污染造成的水污染等問題, 對城市水資源提出了巨大的挑戰[1].水資源的短缺和污染不僅會阻礙經濟建設, 更會對國民的身體健康帶來危害. 污水的處理不當和環境的污染, 造成目前大規劃化和高養殖密度的水產行業的水域水質逐年惡化, 水產品污染所導致的患病率也在不斷地升高[2]. 因此水質監測的重要性日益凸顯, 監測水質不僅有助于人類對水資源進行管理、保護和利用,還可以利于人類監測水產養殖的水質, 以提高養殖水產品的質量和產量, 使我們能夠食用更加健康的水產品.
我國的水質監測技術起步較晚, 發展也較為緩慢,現階段大多使用人工操作儀器的檢測方法存在諸多不足, 效率低, 且監測周期長, 無法反映水域環境的實時變化[3]. 同時, CAN總線監測系統也處于不斷發展階段, 其在實時性和監測范圍得到較大提升, 但其操作困難且易腐蝕, 造成投入成本較高[4]. 部分無線傳感器在水質監測應用方面進行了研究[5], 比如美國Heliosware公司的EMNET系統, 但其通信速度慢、系統體積也較大, 并且還存在著功耗較高的缺點, 僅適合于實驗室研究[6]. 杜治國等人[7]提出了利用ZigBee網絡和互聯網技術結合的遠程實時水質監測系統, 實現了水質數據的遠程接收, 但本監測系統體積龐大, 價格貴且需要市電供電, 局限性較大. 王文華等人[8]使用單片機采集并利用GSM傳輸相應數據, 但該方案網絡要求高, 且成本較大, 系統的功耗也較高, 布設較為困難. Adamo等人[9]提出的系統采用IEEE 802.15.4或者ZigBee進行節點和基站之間的通信, 但是這些技術的通信范圍較小, 僅限于數十米, 導致系統的空間分辨率不高. 通過使用額外的中繼節點可以擴展范圍, 但是這往往也引入了額外的路由成本, 導致成本變高, 而且ZigBee技術通常在2.4 GHz ISM的免許可頻段運行, 該頻段十分擁擠而且也容易收到干擾和攻擊.
隨著國內外物聯網技術的快速發展[10,11], 物聯網技術也被廣泛應用于水資源監測領域[12,13]. 本文采用當下物聯網發展的主要技術——LoRa通信技術設計了一種基于STM32的物聯網水質監測系統. LoRa技術具有低功耗和遠距離的優點, 在相同的功耗下, 相比于ZigBee和WiFi等無線通信方式, 其傳播距離擴大了3–5倍, 適合大多數水域環境的通信要求. 本文利用嵌入式技術集成溫度、電導率、濁度、風速風向、pH、溶解氧、氧化還原電位(ORP)傳感器, 配置嵌入式實時操作系統(FreeRTOS)實現傳感器任務調度, 通過LoRa技術和北斗GPS定位技術實現數據的發送與接收, 解決了傳統水質監測點距離短、集成度低和功耗高問題, 配套的水質監測上位機軟件實時顯示水質數據和定位信息. 本系統可持續長時間監測水質環境, 同時測量多種數據, 具有一定的實用價值.
水質監測系統主要由數據采集節點、無線通信電路和遠程控制中心3部分組成, 系統方案設計如圖1所示. 數據采集節點主要由水質傳感器組、GPS/北斗定位模塊、STM32處理器和電源電路組成. 水質傳感器組收集到的定位信息、水溫、電導率、OPR、pH、濁度、溶解氧和風速風向等數據經過STM32處理器處理并打包后, 再通過無線通信電路被發送到遠程控制中心, 遠程控制中心包括數據接收終端和上位機軟件, 數據接收終端接收無線通信電路發送過來的數據,并將這些數據在上位機軟件上進行顯示和儲存.

圖1 系統方案設計
數據采集節點負責數據的采集和處理, 發送給無線通信電路. 傳感器組主要有水溫傳感器、電導率傳感器、ORP傳感器、pH傳感器、濁度傳感器、風速風向傳感器、溶解氧傳感器和GPS/北斗定位模塊構成. STM32處理器采用STM32F103系列單片機, 該系列的單片機具有功耗低、接口豐富、I/O口易擴展的特點. 數據采集節點采用RS485總線采集電路和A/D采集電路實現對傳感器組的集成. 數據采集節點結構圖見圖2.

圖2 數據采集節點
水溫傳感器采用DS18B20數字溫度傳感器, 本傳感器只有3個引腳, 電源線、地線和單總線, 該模塊與單片機進行雙向通訊通過單總線完成讀寫.
濁度傳感器采用的是TS濁度傳感器, 該模塊主要依靠光學原理來判斷溶液的渾濁度, 傳感器內部是一個紅外線對管, 當光線穿透一定量的水時, 其透過量取決于水的渾濁程度. 水越污濁, 透過的光也就越少, 光接收管中所產生的電流也越小, 而測量端通過接收到的電流大小則可以計算出水的渾濁程度.
pH傳感器采用pH和溫度一體的BHT-D型傳感器,本傳感器的測量電極為玻璃電極, 玻璃電極與溶液的pH值存在一定的數值關系, 可通過輸出的電壓值判斷溶液的pH值. pH傳感器還帶有溫度補償, 當監測的水域溫度不在范圍內時, 通過補償pH值得到實際的pH值.
ORP傳感器使用GH-GO-300B ORP傳感器, 氧化還原電位與水域的pH存在一定的線性關系, 水域的pH值增加, 則其氧化還原能力就會下降. 電導率傳感器采用GH-EC-10電導率傳感器, 風速風向傳感器采用ZZ-WIND傳感器, 風速測量部分采用三杯式組件,風向測量部分則采用精密電位器. 溶解氧傳感器采用DO615D智能水質傳感器. ORP傳感器、電導率傳感器、風速風向傳感器和溶解氧傳感器均采用MODBUSRTU協議與單片機進行通信.
GPS/北斗定位模塊采用S1216F8-BD模組, 可通過3種方式進行啟動. 電源供電不足, 模塊接收到的歷史數據丟失, 啟動方式為冷啟動; 模塊接收到的衛星數據與歷史保存的數據不一致, 啟動方式為溫啟動; 模塊接收到的衛星數據與歷史保存的數據一致, 在此情況下為熱啟動方式. 使用NMEA-0183協議獲取定位信息, 包括經緯度和UTC時間等信息. 本系統的硬件電路圖如圖3.

圖3 硬件電路圖
本系統最終應用于河流、湖泊等水域環境, 考慮到本系統工作在室外無法產電等實際問題, 所以最終采用太陽能電池板和12 V的小型蓄電池為系統供電.ORP傳感器、電導率傳感器和風速風向傳感器供電可由太陽能輸出的12 V電壓進行直接供電, 而GPS/北斗定位模塊、pH傳感器、濁度傳感器和水溫傳感器則由穩壓芯片LM-7805輸出的5 V電壓進行供電. 而蓄電池則是用來在陰雨天氣等情況下彌補由于太陽能不足造成的無法持續供電的情況.
LoRa技術是當前物聯網中應用較為廣泛的一種無線通信技術, 從表1各項技術的對比中可看出, LoRa與WiFi和藍牙技術相比, 不僅傳播距離更遠, 而且成本也更低, 相比于GPRS技術具有低功耗等優點, 可靈活布置LoRa網絡實現大范圍的監測區域. 因此本系統無線通信電路的設計采用LoRa技術進行數據的傳輸.

表1 LoRa、WiFi、GPRS以及藍牙技術的對比
無線通信電路由STM32處理器和LoRa模塊組成, 完成數據的發送和接收功能. LoRa模塊采用sx1278芯片, 當AUX=0, MD0=1時, 模塊處于工作狀態, 該芯片的工作參數可通過AT指令進行配置, 模塊的工作參數具體配置見表2. 工作模式配置完之后, 模塊便會進入通信功能, 并根據我們設置的AT指令執行功能.

表2 LoRa模塊相關指令配置
數據采集節點的軟件設計首先需要對數據采集節點中的STM32F103ZET6單片機和各個傳感器進行初始化和參數配置, 再通過串口發送AT指令, 啟動LoRa模塊. 系統連接成功之后, 會進入低消耗待機狀態, 當單片機接收到遠程控制中心查詢數據的請求之后便會開啟傳感器, 并對其水域的各項指標進行監測, 同時將監測的數據發送回控制中心.
數據采集節點的軟件采用任務調度機制來處理系統中的各個任務, FreeRTOS操作系統可處理的任務在數量上沒有限制, 因此相比于其他系統采用雙向鏈表的方式處理各個傳感器的任務, 保證了系統處理子任務的實時性和可靠性. CPU可使優先級高的任務優先運行且對于優先級相同的任務可以同時處理, FreeRTOS支持不同任務的優先級可以相同, 并能夠平均分配CPU的使用時間. 利用FreeRTOS的消息隊列功能, 數據采集節點發送任務在數據采集任務沒有完成之前處于阻塞狀態, 收到消息隊列后, 發送任務才會被調度執行. 表3是對各個傳感器任務和數據采集節點任務優先級的設置.

表3 任務優先級
軟件設計流程包括數據采集節點軟件設計和數據發送軟件設計, 設計流程如圖4所示. 首先進行硬件初始化和FreeRTOS初始化, 采用時間片對各個子任務進行調度, 溫度、pH、電導率、濁度、ORP、風速風向、溶解氧采集子任務共用一個優先級, 各個子任務采用時間片輪流執行, 數據采集完畢之后, 將數據封裝打包, 通過LoRa上傳至遠程控制中心.

圖4 軟件設計流程
pH傳感器、濁度傳感器和溫度傳感器通過A/D總線與主控制器進行通信, 風速風向傳感器、電導率傳感器、溶解氧傳感器和ORP通過RS485+MODBUS協議進行通信. GPS/北斗定位模塊通過串口與主控制器進行通信. 本系統中RS485采用兩線制的主從通信方式, 通信協議采用Modbus-RTU進行通信傳輸, 各個從機設備都有自己的從站地址, 主機端向從機端發出消息請求, 從機端接收到消息后并向主機發送數據來響應請求. 數據校驗采用16位CRC校驗, 當主從端的校驗結果一致, 數據才會被主機端接收.
數據發送軟件設計主要是LoRa采用透傳模式進行數據的發送, 不需要數據傳輸協議即可完成數據的發送與接收. LoRa數據接收端和LoRa數據發送端擁有相同的速率、信道和目標地址. LoRa節點軟件設計流程如圖5所示.

圖5 LoRa軟件設計流程圖
遠程控制中心軟件設計是實現水質參數上位機軟件的設計, 設計原理圖如圖6所示, 實現對水質數據的在線監測和顯示功能. 軟件是基于Qt的串口上位機軟件, 利用Qt的QSerialPort類實現串口通信, 包括串口號、波特率、停止位、校驗位和數據位的設置, 可進行賬號的注冊登錄、水質數據的管理和數據采集節點的地理位置信息顯示.
Qt是一種面向對象的應用程序框架, 利用C++語言進行開發設計. 通過下載離線地圖, 通過Qt與HTML交互, 實現離線定位. 而關聯按鍵和槽函數, 可完成水質數據的顯示和串口的控制. 圖6是上位機軟件結構原理圖.

圖6 上位機軟件結構原理圖
本系統通信質量測試采用LoRa模塊sx1278和ZigBee模塊CC2530進行對比實驗, 通過主節點發送300個幀數據包, 測試從節點接收到的幀個數, 以丟包率來表征通信質量, 通信質量測試表如表4所示.
由表4可看出, 在通信距離小于200 m的情況下,LoRa丟包率為0, 滿足小距離通信質量要求. 通信距離大于300 m時, ZigBee不能接收到幀數據包, 丟包率達100%. 由此可看出, LoRa技術相比于ZigBee技術更有優勢.

表4 LoRa和ZigBee通信質量測試表
本系統搭建完成之后進行了數據測試, 水質監測點選擇為西安市灞河邊相距約30 m的兩個地點, 傳感器收集到的水質及位置等信息通過LoRa無線模塊發送并被上位機軟件接收. 基于LoRa的水質環境監測系統上位機軟件在兩個不同地點的測試結果如圖7所示.

圖7 基于LoRa的水質環境監測系統上位機軟件測試
本次實驗于2021年11月6號在西安市灞河邊展開, 在相距約30 m的兩處了進行測試, 將相對位于上游的地點記為地點A, 而位于下游的地點記作地點B.測試時, 首先將傳感器均置于河水中, 隨后在上位機軟件上對測試數據進行了顯示, 約20 min過后數據的變化開始減小, 數據逐漸穩定. 隨后記錄下了穩定后約2 min內的100組數據, 并將數據隨時間的變化繪制在圖8中, 圖中顯示了電導率、pH、溫度、OPR、濁度和溶解氧等共6個參數的變化趨勢.
由圖8可以知道, ORP的變化范圍為149.0–172.0 mV, pH的變化范圍為7.4–8.6, 電導率的變化范圍為120–130 μS/cm, 溫度的變化范圍為9.0–12.0 ℃,濁度的變化范圍為950–1000 NTU, 溶解氧的變化范圍為7.3–8.3 mg/L. 能夠表明本系統供電充足, 可長時間穩定運行. 而PM2.5和PM10這兩種傳感器未安裝, 因此暫無數據顯示. 圖8中測試數據的均值與標準差見表5.

圖8 傳感器測得數據隨時間的變化
從表5中能夠看出除了溫度, 其他5組數據的變異系數(標準差/均值)的結果均小于5%, 溫度的變異系數也僅為8.76%, 由數據可證明本系統具有較高的穩定性和可靠性.

表5 感器測得數據的均值與方差
根據《地表水環境質量標準》(GB 3838-2002), 每周水溫的最大溫升≤1, 最大溫降≤2時均為正常值,pH范圍為6–9時為正常值, 主要水源頭和國家自然保護區(I類水源)溶解氧的范圍≥7.5 mg/L, 集中飲用水表面水源一級保護區、珍稀水生生物棲息地、魚蝦產卵地(II類水源)的標準范圍應≥6 mg/L, 集中式生活飲用水地表水源地、魚蝦類越冬地、遷徙路線、水產養殖區及其他漁業水域、游泳區(III類水源)的范圍應≥5 mg/L.
而本次測試的結果表明, 灞河水的pH均值在限值范圍內, 灞河水的溶解氧結果滿足了II類條件, 并且幾乎全部達到了I類水質的標準. 電導率和氧化還原電位(ORP)沒有具體的標準限值, 但電導率通過水質的導電性能夠反應水中的鹽度和總離子濃度. ORP對于水質監測至關重要, 它能夠反映水質的氧化性和還原性, 以確保不會增加生物種類患病的風險. 濁度反映的是水質的渾濁度, 如果水質渾濁度太大則會影響到水體植物的光合作用, 從而降低生產氧的速率, 使得生物群落的更替速率下降, 進而會導致水體的污染程度加劇.
pH值、溶解氧和水溫等因素均會影響魚類的生存和繁殖, 例如水產養殖中過度投放魚類飼料會造成水體的富營養化, 水域污染等問題. 根據漁業水質標準(GB 11607-89), 正常的淡水魚養殖環境中, 為了使魚類能夠進行正常的生理活動, 溶解氧的范圍不得低于5 mg/L, pH一般維持在6.5–8.5, 若pH過大或者過小,則可利用酸堿緩劑進行矯正.
基于LoRa的水質環境監測系統上位機軟件通過串口接收到溫度、濁度、風速風向、電導率、ORP、pH、溶解氧等參數, 能在一定時間內持續穩定的接收數據以及對監測點的準確定位, 可長時間的對水域環境進行監測, 在水產養殖和水質監測中具有一定的應用價值.
本文應用嵌入式技術, STM32F103ZET6單片機作為控制核心, FreeRTOS系統實現了任務調度功能, 實時地處理各個傳感器任務, 完成數據的采集和處理工作, 并且利用LoRa無線技術進行數據傳輸, 實現水域環境的遠程管理. 本文對系統方案、軟硬件電路的實現進行了詳細的介紹, 并對系統的性能進行了測試, 可得出灞河水質的PH、電導率、ORP、濁度、溶解氧的變異系數的結果均小于5%, 溫度的變異系數為8.76%, 具有較高的穩定性. 本文最終實現了遠距離無線傳輸的水質監測系統, 具有功耗小、成本較低、可擴展性強等優點. 結果表明本系統可用于水廠養殖、河道監測等水域環境, 為預測環境中的水資源狀態提供了可靠的水質數據.