国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Arduino的水位監(jiān)測系統(tǒng)設(shè)計與實現(xiàn)

2023-03-22 09:28:40杜政隆謝麗明王飛飛
物聯(lián)網(wǎng)技術(shù) 2023年3期
關(guān)鍵詞:蜂鳴器服務(wù)器端頁面

杜政隆,謝麗明,王飛飛

(平頂山學(xué)院 信息工程學(xué)院,河南 平頂山 467000)

0 引 言

近年來,我國境內(nèi)出現(xiàn)暴雨的次數(shù)越來越多,所造成的經(jīng)濟(jì)損失不可估量,而且暴雨期間洪澇災(zāi)害的發(fā)生概率也大大增加。因此亟需建立一個完善的水位監(jiān)測系統(tǒng),讓人們可以及時直觀地了解水位數(shù)據(jù),對預(yù)防洪澇災(zāi)害有極大的幫助[1]。目前,許多地方仍采用人工水位監(jiān)測方式,個別地方雖采用了水位監(jiān)測系統(tǒng),但還存在諸多問題,如:設(shè)備通信覆蓋不完全;受老舊設(shè)備影響,水位信息不精確;不能直觀實時分析各個節(jié)點的水位數(shù)據(jù)等?;诖?,本文設(shè)計了基于單片機(jī)的水位監(jiān)測系統(tǒng),可應(yīng)用于水庫、天氣水文監(jiān)測站等實際場地,工作人員可根據(jù)需求在移動端對水位數(shù)據(jù)進(jìn)行實時監(jiān)測,設(shè)置預(yù)警水位,若超出預(yù)警水位,系統(tǒng)會及時發(fā)出警告,保證民眾的安全[2]。

1 水位監(jiān)測系統(tǒng)的總體設(shè)計

本系統(tǒng)根據(jù)所需功能主要設(shè)計了數(shù)據(jù)采集端、服務(wù)器端和上位機(jī)端。數(shù)據(jù)采集端有多個節(jié)點,每個節(jié)點連接LCD顯示屏、水位傳感器和蜂鳴器。采用水位傳感器進(jìn)行水位數(shù)據(jù)采集、LCD顯示屏進(jìn)行數(shù)據(jù)顯示。當(dāng)水位數(shù)據(jù)超過安全閾值時,LCD顯示屏?xí)敵鰣缶畔?,蜂鳴器進(jìn)行報警。數(shù)據(jù)采集端和服務(wù)器端之間通過UDP進(jìn)行數(shù)據(jù)通信,將水位數(shù)據(jù)存儲到數(shù)據(jù)庫中。上位機(jī)端從服務(wù)器端的數(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)的詳細(xì)設(shè)計

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

圖2 水位監(jiān)測系統(tǒng)功能模塊

2.1 數(shù)據(jù)采集端的詳細(xì)設(shè)計與實現(xiàn)

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

圖3 數(shù)據(jù)采集端結(jié)構(gòu)

系統(tǒng)運行過程中,將MSP20水位傳感器的測量橡膠管插入水庫或雨量筒中[6],每隔5 s測量一次水位,水位數(shù)據(jù)顯示在LCD屏幕上。當(dāng)水位超出預(yù)設(shè)的安全閾值時,LCD屏幕顯示報警信息且通過蜂鳴器進(jìn)行報警[7]。

數(shù)據(jù)采集端的程序設(shè)計根據(jù)Arduino的編程特點,分為初始化程序設(shè)計和循環(huán)程序設(shè)計。初始化程序中首先調(diào)用LiquidCrystal_I2C.h庫函數(shù)的lcd.init()函數(shù)和lcd.backlight()函數(shù)分別進(jìn)行顯示屏初始化和打開LCD顯示屏的背光,之后使用pinMode()函數(shù)將連接蜂鳴器定義的引腳設(shè)為輸出模式,并通過digitalWrite()設(shè)置蜂鳴器的初始狀態(tài)完成蜂鳴器的初始化。同時通過Serial.begin(9600)的函數(shù)調(diào)用設(shè)置串口波特率,最后調(diào)用WiFi.mode()將WiFi設(shè)為AP模式,Udp.begin()開始UDP端口偵聽。初始化程序流程如圖4所示。

圖4 初始化程序流程

循環(huán)程序中首先使用analogRead()讀取A0引腳的數(shù)據(jù),通過公式轉(zhuǎn)換成實際需要的水位數(shù)據(jù),然后設(shè)置安全閾值判斷水位數(shù)據(jù)是否超過閾值。若超過閾值,調(diào)用lcd.print()函數(shù)在LCD顯示屏上顯示當(dāng)前水位信息和報警信息,同時通過digitalWrite()函數(shù)設(shè)置蜂鳴器高低電平使蜂鳴器進(jìn)行報警;若沒有超過閾值則LCD屏正常顯示水位數(shù)據(jù)。最后通過設(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 服務(wù)器端的詳細(xì)設(shè)計與實現(xiàn)

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

圖6 服務(wù)器端程序流程

服務(wù)器端以jsp項目為主體、JAVA語言為主要編程語言。項目首先通過DatagramSocket()建立UDP Socket端點,并 通 過 DatagramPacket(byte[]buf,int length,InetAddress address,int port)提供數(shù)據(jù)封裝打包,inport里填入節(jié)點的IP地址,封裝打包完成后使用send()方法進(jìn)行數(shù)據(jù)包的發(fā)送,發(fā)送完成后調(diào)用close()方法關(guān)閉資源;然后調(diào)用udpsend()方法獲得節(jié)點的水位數(shù)據(jù),同時調(diào)用SimpleDateFormat()方法獲取當(dāng)前時間,取得所有所需的數(shù)據(jù)后進(jìn)行數(shù)據(jù)庫插入;最后使用 Class.forName(“com.mysql.jdbc.Driver”)方法驅(qū)動DriverManager.getConnection()取得正確的數(shù)據(jù)庫IP、數(shù)據(jù)庫用戶名和密碼后,執(zhí)行數(shù)據(jù)庫插入命令。

2.3 上位機(jī)端的詳細(xì)設(shè)計與實現(xiàn)

本系統(tǒng)的上位機(jī)端基于HTML5、Python語言,創(chuàng)建Flask項目。使用route()函數(shù)來記錄頁面路由,直接訪問所要到達(dá)的頁面,并調(diào)用pymysql.connect()實現(xiàn)從數(shù)據(jù)庫中調(diào)取節(jié)點水位數(shù)據(jù)以及時間數(shù)據(jù),且當(dāng)水位數(shù)據(jù)超過安全閾值時在數(shù)據(jù)可視化展示頁面中輸出報警信息彈窗。

水位數(shù)據(jù)匯總頁面使用pymysql.connect{}連接數(shù)據(jù)庫IP和指定的表,使用datalist.append()將數(shù)據(jù)表進(jìn)行展示,并在頁面中使用HTML5語言標(biāo)簽寫入文字進(jìn)行顯示。水位數(shù)據(jù)匯總頁面如7所示。

圖7 水位數(shù)據(jù)匯總頁面

為更直觀地看到數(shù)據(jù)變化趨勢,本系統(tǒng)在數(shù)據(jù)可視化展示頁面中使用了ECharts可視化功能,將節(jié)點水位數(shù)據(jù)進(jìn)行了可視化展示[8]。ECharts技術(shù)在本網(wǎng)頁中使用的是折線圖,通過定義option{}來設(shè)置折線圖的參數(shù)。用title{text:}設(shè)置標(biāo)題,legend{“節(jié)點1”,“節(jié)點2”}來設(shè)置兩個可以點擊的按鈕以顯示指定折線圖,x軸上用data:{}方法指定數(shù)據(jù)表中的字段,y軸同樣使用data:{}方法指定數(shù)據(jù)表中的字段。數(shù)據(jù)可視化頁面如圖8所示。

圖8 數(shù)據(jù)可視化頁面

在數(shù)據(jù)可視化頁面,當(dāng)水位數(shù)據(jù)超過安全閾值時會通過彈窗進(jìn)行報警來提示工作人員。在本頁面中設(shè)置一個判斷語句,如果y軸中的數(shù)據(jù)超過指定安全閾值,使用window.open()函數(shù)彈出一個含有報警信息的彈窗。超出安全閾值時報警頁面[9-10]如圖9所示。

圖9 水位報警頁面

3 結(jié) 語

本文的系統(tǒng)能夠有效實時地對水位數(shù)據(jù)進(jìn)行監(jiān)測,可以省去高額的人工成本,并加快水位信息的傳輸速度;水文系統(tǒng)的工作人員不用在各個地方手工統(tǒng)計水位信息,只需在上位機(jī)端通過網(wǎng)頁訪問進(jìn)行水位信息統(tǒng)計,也可以訪問歷史水位信息,必要時可以去監(jiān)測點觀測顯示屏來查看水位信息;且當(dāng)水位超出安全閾值時系統(tǒng)會自動報警,可以有效地減輕水位監(jiān)測工作人員的負(fù)擔(dān)。但系統(tǒng)硬件設(shè)備長時間安裝在潮濕環(huán)境中,會加快硬件設(shè)備的損耗,這是后續(xù)研究中需要改善的地方。

猜你喜歡
蜂鳴器服務(wù)器端頁面
刷新生活的頁面
電動自行車產(chǎn)品車速提示音檢測現(xiàn)狀和整改技術(shù)研究(2)
掌控板制作簡易鋼琴
電腦報(2020年12期)2020-06-30 19:56:42
單片機(jī)驅(qū)動蜂鳴器的程序設(shè)計
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
成功(2018年10期)2018-03-26 02:56:14
豐田凱美瑞240V車間隙警告蜂鳴器異常鳴響
在Windows中安裝OpenVPN
網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
同一Word文檔 縱橫頁面并存
淺析ASP.NET頁面導(dǎo)航技術(shù)
许昌市| 健康| 罗源县| 沙洋县| 宿迁市| 新宾| 团风县| 赣榆县| 达州市| 新巴尔虎右旗| 进贤县| 新宾| 东乌珠穆沁旗| 娄底市| 临泽县| 津南区| 陈巴尔虎旗| 双牌县| 鄱阳县| 昆山市| 诸城市| 洪湖市| 呈贡县| 内黄县| 平安县| 申扎县| 南澳县| 新巴尔虎右旗| 靖州| 漳浦县| 石门县| 鞍山市| 盐津县| 同江市| 姚安县| 嘉鱼县| 鸡泽县| 乡宁县| 富裕县| 松滋市| 天等县|