杜政隆,謝麗明,王飛飛
(平頂山學院 信息工程學院,河南 平頂山 467000)
0 引 言
近年來,我國境內(nèi)出現(xiàn)暴雨的次數(shù)越來越多,所造成的經(jīng)濟損失不可估量,而且暴雨期間洪澇災害的發(fā)生概率也大大增加。因此亟需建立一個完善的水位監(jiān)測系統(tǒng),讓人們可以及時直觀地了解水位數(shù)據(jù),對預防洪澇災害有極大的幫助[1]。目前,許多地方仍采用人工水位監(jiān)測方式,個別地方雖采用了水位監(jiān)測系統(tǒng),但還存在諸多問題,如:設備通信覆蓋不完全;受老舊設備影響,水位信息不精確;不能直觀實時分析各個節(jié)點的水位數(shù)據(jù)等?;诖耍疚脑O計了基于單片機的水位監(jiān)測系統(tǒng),可應用于水庫、天氣水文監(jiān)測站等實際場地,工作人員可根據(jù)需求在移動端對水位數(shù)據(jù)進行實時監(jiān)測,設置預警水位,若超出預警水位,系統(tǒng)會及時發(fā)出警告,保證民眾的安全[2]。
1 水位監(jiān)測系統(tǒng)的總體設計
本系統(tǒng)根據(jù)所需功能主要設計了數(shù)據(jù)采集端、服務器端和上位機端。數(shù)據(jù)采集端有多個節(jié)點,每個節(jié)點連接LCD顯示屏、水位傳感器和蜂鳴器。采用水位傳感器進行水位數(shù)據(jù)采集、LCD顯示屏進行數(shù)據(jù)顯示。當水位數(shù)據(jù)超過安全閾值時,LCD顯示屏會輸出報警信息,蜂鳴器進行報警。數(shù)據(jù)采集端和服務器端之間通過UDP進行數(shù)據(jù)通信,將水位數(shù)據(jù)存儲到數(shù)據(jù)庫中。上位機端從服務器端的數(shù)據(jù)庫中調(diào)取水位數(shù)據(jù),實現(xiàn)可視化數(shù)據(jù)實時展示功能[3]、歷史數(shù)據(jù)展示功能和超過安全閾值報警功能。系統(tǒng)總體框架如圖1所示。

圖1 水位監(jiān)測系統(tǒng)總體框架
2 水位監(jiān)測系統(tǒng)的詳細設計
水位監(jiān)測系統(tǒng)主要包括數(shù)據(jù)采集端、服務器端和上位機端。設備與服務器端之間使用WiFi模塊進行UDP通信[4]。系統(tǒng)用戶通過上位機端對水位數(shù)據(jù)進行實時監(jiān)測。系統(tǒng)功能模塊如圖2所示。

圖2 水位監(jiān)測系統(tǒng)功能模塊
2.1 數(shù)據(jù)采集端的詳細設計與實現(xiàn)
本系統(tǒng)有多個節(jié)點,以一個節(jié)點為例進行說明。系統(tǒng)硬件設備的主控單元芯片采用ESPDuino芯片。在ESPDuino單片機上集成Arduino模塊和WiFi模塊,ESPDuino單片機連接MSP20水位傳感器、LCD1602顯示屏與蜂鳴器,LCD1602顯示屏顯示當前節(jié)點的水位信息,當水位超過安全閾值時,顯示屏會顯示報警信息,且蜂鳴器會發(fā)出報警。將單片機設為AP模式通過WiFi連接指定路由器,通過UDP協(xié)議將采集到的數(shù)據(jù)傳輸至服務器端[5]。數(shù)據(jù)采集端節(jié)點結(jié)構(gòu)如圖3所示。

圖3 數(shù)據(jù)采集端結(jié)構(gòu)
系統(tǒng)運行過程中,將MSP20水位傳感器的測量橡膠管插入水庫或雨量筒中[6],每隔5 s測量一次水位,水位數(shù)據(jù)顯示在LCD屏幕上。當水位超出預設的安全閾值時,LCD屏幕顯示報警信息且通過蜂鳴器進行報警[7]。
數(shù)據(jù)采集端的程序設計根據(jù)Arduino的編程特點,分為初始化程序設計和循環(huán)程序設計。初始化程序中首先調(diào)用LiquidCrystal_I2C.h庫函數(shù)的lcd.init()函數(shù)和lcd.backlight()函數(shù)分別進行顯示屏初始化和打開LCD顯示屏的背光,之后使用pinMode()函數(shù)將連接蜂鳴器定義的引腳設為輸出模式,并通過digitalWrite()設置蜂鳴器的初始狀態(tài)完成蜂鳴器的初始化。同時通過Serial.begin(9600)的函數(shù)調(diào)用設置串口波特率,最后調(diào)用WiFi.mode()將WiFi設為AP模式,Udp.begin()開始UDP端口偵聽。初始化程序流程如圖4所示。

圖4 初始化程序流程
循環(huán)程序中首先使用analogRead()讀取A0引腳的數(shù)據(jù),通過公式轉(zhuǎn)換成實際需要的水位數(shù)據(jù),然后設置安全閾值判斷水位數(shù)據(jù)是否超過閾值。若超過閾值,調(diào)用lcd.print()函數(shù)在LCD顯示屏上顯示當前水位信息和報警信息,同時通過digitalWrite()函數(shù)設置蜂鳴器高低電平使蜂鳴器進行報警;若沒有超過閾值則LCD屏正常顯示水位數(shù)據(jù)。最后通過設置判斷語句來判斷是否接收到上位機發(fā)來的數(shù)據(jù),如果接收到信息,通過Udp.beginPacket()、Udpwrite()以及Udp.endPacket()函數(shù)完成開始發(fā)送包數(shù)據(jù)、寫入包數(shù)據(jù)、結(jié)束發(fā)送包數(shù)據(jù)三個步驟。循環(huán)程序流程如圖5所示。

圖5 循環(huán)程序流程
2.2 服務器端的詳細設計與實現(xiàn)
服務器端首先建立UDP端點,用來接收和發(fā)送數(shù)據(jù)包;然后通過打包數(shù)據(jù)發(fā)送給數(shù)據(jù)采集端,數(shù)據(jù)采集端接收到數(shù)據(jù)包就會將水位數(shù)據(jù)打包發(fā)送給服務器端;服務器端通過創(chuàng)建數(shù)據(jù)包來接收水位數(shù)據(jù),并連接指定IP的數(shù)據(jù)庫,將水位數(shù)據(jù)存儲到指定表的指定字段中。具體流程如圖6所示。

圖6 服務器端程序流程
服務器端以jsp項目為主體、JAVA語言為主要編程語言。項目首先通過DatagramSocket()建立UDP Socket端點,并 通 過 DatagramPacket(byte[]buf,int length,InetAddress address,int port)提供數(shù)據(jù)封裝打包,inport里填入節(jié)點的IP地址,封裝打包完成后使用send()方法進行數(shù)據(jù)包的發(fā)送,發(fā)送完成后調(diào)用close()方法關閉資源;然后調(diào)用udpsend()方法獲得節(jié)點的水位數(shù)據(jù),同時調(diào)用SimpleDateFormat()方法獲取當前時間,取得所有所需的數(shù)據(jù)后進行數(shù)據(jù)庫插入;最后使用 Class.forName(“com.mysql.jdbc.Driver”)方法驅(qū)動DriverManager.getConnection()取得正確的數(shù)據(jù)庫IP、數(shù)據(jù)庫用戶名和密碼后,執(zhí)行數(shù)據(jù)庫插入命令。
2.3 上位機端的詳細設計與實現(xiàn)
本系統(tǒng)的上位機端基于HTML5、Python語言,創(chuàng)建Flask項目。使用route()函數(shù)來記錄頁面路由,直接訪問所要到達的頁面,并調(diào)用pymysql.connect()實現(xiàn)從數(shù)據(jù)庫中調(diào)取節(jié)點水位數(shù)據(jù)以及時間數(shù)據(jù),且當水位數(shù)據(jù)超過安全閾值時在數(shù)據(jù)可視化展示頁面中輸出報警信息彈窗。
水位數(shù)據(jù)匯總頁面使用pymysql.connect{}連接數(shù)據(jù)庫IP和指定的表,使用datalist.append()將數(shù)據(jù)表進行展示,并在頁面中使用HTML5語言
標簽寫入文字進行顯示。水位數(shù)據(jù)匯總頁面如7所示。 
圖7 水位數(shù)據(jù)匯總頁面 為更直觀地看到數(shù)據(jù)變化趨勢,本系統(tǒng)在數(shù)據(jù)可視化展示頁面中使用了ECharts可視化功能,將節(jié)點水位數(shù)據(jù)進行了可視化展示[8]。ECharts技術(shù)在本網(wǎng)頁中使用的是折線圖,通過定義option{}來設置折線圖的參數(shù)。用title{text:}設置標題,legend{“節(jié)點1”,“節(jié)點2”}來設置兩個可以點擊的按鈕以顯示指定折線圖,x軸上用data:{}方法指定數(shù)據(jù)表中的字段,y軸同樣使用data:{}方法指定數(shù)據(jù)表中的字段。數(shù)據(jù)可視化頁面如圖8所示。 
圖8 數(shù)據(jù)可視化頁面 在數(shù)據(jù)可視化頁面,當水位數(shù)據(jù)超過安全閾值時會通過彈窗進行報警來提示工作人員。在本頁面中設置一個判斷語句,如果y軸中的數(shù)據(jù)超過指定安全閾值,使用window.open()函數(shù)彈出一個含有報警信息的彈窗。超出安全閾值時報警頁面[9-10]如圖9所示。 
圖9 水位報警頁面 3 結(jié) 語本文的系統(tǒng)能夠有效實時地對水位數(shù)據(jù)進行監(jiān)測,可以省去高額的人工成本,并加快水位信息的傳輸速度;水文系統(tǒng)的工作人員不用在各個地方手工統(tǒng)計水位信息,只需在上位機端通過網(wǎng)頁訪問進行水位信息統(tǒng)計,也可以訪問歷史水位信息,必要時可以去監(jiān)測點觀測顯示屏來查看水位信息;且當水位超出安全閾值時系統(tǒng)會自動報警,可以有效地減輕水位監(jiān)測工作人員的負擔。但系統(tǒng)硬件設備長時間安裝在潮濕環(huán)境中,會加快硬件設備的損耗,這是后續(xù)研究中需要改善的地方。
亚洲久悠悠色悠在线播放|
99久久精品一区二区三区蜜臀|
国产福利一区二区三区视频在线看
|
人人妻人人妻人人片av|
亚洲国产福利精品一区二区|
男女干逼视频免费网站|
亚洲第一幕一区二区三区在线观看|
欧美人与禽zozzo性伦交|
国产女精品视频网站免费|
九九久久精品大片|
视频国产自拍在线观看|
乱人伦精品视频在线观看|
精品人妻无码一区二区色欲产成人|
鲁丝一区鲁丝二区鲁丝三区|
国产精品国产传播国产三级|
日本一区二区三区免费播放|
欧美大香线蕉线伊人久久|
麻豆国产VA免费精品高清在线|
国产三区二区一区久久|
亚洲精品tv久久久久久久久久|
怡春院欧美一区二区三区免费
|
日本一区二区三区一级免费|
大陆老熟女自拍自偷露脸|
久久亚洲精品无码va白人极品|
国产精品99久久久精品免费观看|
日本视频一区二区三区三州|
色欲av永久无码精品无码蜜桃|
1000部夫妻午夜免费|
精品国免费一区二区三区|
91成人国产九色在线观看|
国产乱了真实在线观看|
国产jk在线观看|
国产成人高清亚洲一区二区|
免费国产线观看免费观看|
97午夜理论片在线影院|
天堂网av在线|
日本人妻伦理在线播放|
88久久精品无码一区二区毛片|
国产精品白浆无码流出|
成人av资源在线播放|
国内成+人 亚洲+欧美+综合在线|
|