基于物聯(lián)網(wǎng)的超聲波傳感器水位指示器
今天我們將研究一個水位指示器,它的數(shù)據(jù)可以通過局域網(wǎng)的網(wǎng)頁進(jìn)行監(jiān)測。水位將通過超聲波距離測量傳感器來檢測。我們之前已經(jīng)使用浮子傳感器構(gòu)建了另一個基于物聯(lián)網(wǎng)的水箱水位監(jiān)測系統(tǒng),但在這個項(xiàng)目中,我們將使用超聲波傳感器來檢測水位。
你一定見過幾種水位指示器,但它們中的大多數(shù)使用特殊的浮子傳感器,不容易獲得,也不容易使用。但在本教程中,我們將使用超聲波傳感器來測量水位。您將在本文中進(jìn)一步了解。
為了使項(xiàng)目更加用戶友好,我們將其與本地web服務(wù)器集成,通過該服務(wù)器,您可以監(jiān)控連接到與ESP板相同Wi-Fi的任何設(shè)備的數(shù)據(jù)。
超聲波傳感器的工作和使用
在了解項(xiàng)目的工作原理之前,讓我們先看看超聲波傳感器是如何工作的。本項(xiàng)目中使用的典型HC-SR04超聲傳感器如下圖所示。
超聲波傳感器是一種通過發(fā)射超聲波來測量目標(biāo)物體的距離,并將反射的聲音轉(zhuǎn)換成電信號的電子裝置。
超聲波的傳播速度比可聽聲音(即人類能聽到的聲音)的速度快。超聲波傳感器有兩個主要組成部分:發(fā)射器(使用壓電晶體發(fā)射聲音)和接收器(在聲音到達(dá)和離開目標(biāo)后接收聲音)。
為了計(jì)算傳感器和物體之間的距離,傳感器測量從發(fā)射器發(fā)出聲音到與接收器接觸所花費(fèi)的時間。這個計(jì)算公式是-
那么我們可以在哪里使用這些傳感器呢?我們以前在非接觸式溫度測量,基于物聯(lián)網(wǎng)的庫存管理和許多其他項(xiàng)目中使用過這些傳感器,除此之外,它還可以用于機(jī)器人導(dǎo)航以及工廠自動化。水位感應(yīng)是另一個很好的用途,可以通過將一個傳感器放置在水面上來完成。另一個水生應(yīng)用是使用這些傳感器“看到”水體的底部,在水中移動,但反射出底部的表面。我們在我們的洪水探測和監(jiān)測系統(tǒng)中也使用了同樣的原理。
用于測量水位的超聲波傳感器
所以,現(xiàn)在我們知道了超聲波傳感器的工作原理,很容易理解這個項(xiàng)目的工作原理。我們只需要讀取傳感器的值并將其轉(zhuǎn)換為CMs,在完成所有這些之后,我們必須在本地web服務(wù)器中發(fā)布數(shù)據(jù),該服務(wù)器將在連接到Wi-Fi后由我們的NodeMCU板創(chuàng)建。
所需的組件
為了使這個項(xiàng)目,我們將需要一些基本的組件。
ESP8266 NodeMCU板:這將是我們整個項(xiàng)目的核心。
HC-SR04超聲波傳感器:如前所述,這將用于通過超聲波感應(yīng)液位。
面包板:所有的連接將在面包板本身,使它簡單。
跳線:當(dāng)我們使用面包板時,跳線或連接線是連接的方式。
超聲波傳感器與NodeMCU的接口
由于我們使用的組件不多,所以本項(xiàng)目中使用的物聯(lián)網(wǎng)水位指示器電路圖相當(dāng)簡單。我們只需要將HC-SR04超聲波傳感器連接到我們的NodeMCU模塊。其余的工作將通過軟件部分本身完成。
這是連接的電路圖。
我使用面包板將超聲波傳感器與NodeMCU連接起來,然后使用連接線進(jìn)行連接。我的測試設(shè)置如下所示,稍后我們將使用較長的跳線將傳感器安裝在演示水箱上。
編程N(yùn)odeMCU讀取水位并在web服務(wù)器上顯示
現(xiàn)在我們已經(jīng)完成了連接。我們將繼續(xù)到項(xiàng)目的編碼部分。讓我清除我們在編寫代碼時要遵循的算法。完整的代碼可以在本頁的底部找到。
我們的Arduino代碼需要做的是,首先連接到代碼中提到的SSID和密碼的網(wǎng)絡(luò)。成功獲取后,它需要將本地IP地址吐槽給串行監(jiān)視器,以便我們可以訪問它創(chuàng)建的網(wǎng)頁。這樣做之后,它應(yīng)該開始處理超聲波傳感器,計(jì)算完距離后,它必須將數(shù)據(jù)發(fā)送到我們創(chuàng)建的網(wǎng)頁。
讓我們一步一步地理解它,所以首先,我們包括必要的庫和將在代碼中進(jìn)一步使用的全局變量。與此同時,我們還提供了我們的Wi-Fi路由器的SSID和密碼,并啟動了端口為80的web服務(wù)器。
此外,在設(shè)置部分,我們將引腳的引腳模式設(shè)置為輸入和輸出,并使用HTML將頁面存儲在page變量中。我們保留了一行HTML代碼來組成我們的網(wǎng)頁。在設(shè)置部分本身,我們連接到Wi-Fi路由器并將IP地址打印到串行監(jiān)視器。
我們創(chuàng)建的HTML頁面每三秒刷新一次。您可以在代碼本身中更改它。
大部分工作已經(jīng)完成,現(xiàn)在在回路部分,我們只是計(jì)算與超聲波傳感器的距離,存儲后,我們將數(shù)據(jù)發(fā)布在我們的網(wǎng)頁上。我們的網(wǎng)頁以這種方式制作,它每3秒刷新一次。這是關(guān)于代碼的大部分內(nèi)容,現(xiàn)在只需上傳代碼,讓我們看看實(shí)際的項(xiàng)目。
基于物聯(lián)網(wǎng)的水位指示器測試與工作
這是我們使用NodeMCU板創(chuàng)建的網(wǎng)頁。它包含一個標(biāo)題,即基于web的水位指示器,下面是打印通過HCSR04超聲波傳感器的實(shí)時數(shù)據(jù)。水位數(shù)值以cm為單位打印,數(shù)值越小,容器越空,反之亦然。
在直接測試水位之前,我們先測試了距離測量。你可以從上面和下面的圖片中看到,它很有魅力。
經(jīng)過測試,我們設(shè)置了一個水位儀來演示工作。我們把超聲波傳感器貼在罐子的頂部,還放了一個尺子進(jìn)行測量。這樣,監(jiān)視器將顯示以cm為單位的罐子的空度數(shù)據(jù)。下面是設(shè)置的樣子
現(xiàn)在工作是這樣的,首先,我們保持罐子是空的,所以服務(wù)器上應(yīng)該顯示20,因?yàn)楣拮邮?0cm深,到目前為止是空的。
現(xiàn)在我們把罐子裝滿了一半,所以現(xiàn)在它應(yīng)該顯示20的一半值。
本文編譯自iotdesignpro