基于物联网的超声波传感器水位指示器
扫描二维码
随时随地手机看文章
今天我们将研究一个水位指示器,它的数据可以通过局域网的网页进行监测。水位将通过超声波距离测量传感器来检测。我们之前已经使用浮子传感器构建了另一个基于物联网的水箱水位监测系统,但在这个项目中,我们将使用超声波传感器来检测水位。
你一定见过几种水位指示器,但它们中的大多数使用特殊的浮子传感器,不容易获得,也不容易使用。但在本教程中,我们将使用超声波传感器来测量水位。您将在本文中进一步了解。
为了使项目更加用户友好,我们将其与本地web服务器集成,通过该服务器,您可以监控连接到与ESP板相同Wi-Fi的任何设备的数据。
超声波传感器的工作和使用
在了解项目的工作原理之前,让我们先看看超声波传感器是如何工作的。本项目中使用的典型HC-SR04超声传感器如下图所示。
超声波传感器是一种通过发射超声波来测量目标物体的距离,并将反射的声音转换成电信号的电子装置。
超声波的传播速度比可听声音(即人类能听到的声音)的速度快。超声波传感器有两个主要组成部分:发射器(使用压电晶体发射声音)和接收器(在声音到达和离开目标后接收声音)。
为了计算传感器和物体之间的距离,传感器测量从发射器发出声音到与接收器接触所花费的时间。这个计算公式是-
那么我们可以在哪里使用这些传感器呢?我们以前在非接触式温度测量,基于物联网的库存管理和许多其他项目中使用过这些传感器,除此之外,它还可以用于机器人导航以及工厂自动化。水位感应是另一个很好的用途,可以通过将一个传感器放置在水面上来完成。另一个水生应用是使用这些传感器“看到”水体的底部,在水中移动,但反射出底部的表面。我们在我们的洪水探测和监测系统中也使用了同样的原理。
用于测量水位的超声波传感器
所以,现在我们知道了超声波传感器的工作原理,很容易理解这个项目的工作原理。我们只需要读取传感器的值并将其转换为CMs,在完成所有这些之后,我们必须在本地web服务器中发布数据,该服务器将在连接到Wi-Fi后由我们的NodeMCU板创建。
所需的组件
为了使这个项目,我们将需要一些基本的组件。
ESP8266 NodeMCU板:这将是我们整个项目的核心。
HC-SR04超声波传感器:如前所述,这将用于通过超声波感应液位。
面包板:所有的连接将在面包板本身,使它简单。
跳线:当我们使用面包板时,跳线或连接线是连接的方式。
超声波传感器与NodeMCU的接口
由于我们使用的组件不多,所以本项目中使用的物联网水位指示器电路图相当简单。我们只需要将HC-SR04超声波传感器连接到我们的NodeMCU模块。其余的工作将通过软件部分本身完成。
这是连接的电路图。
我使用面包板将超声波传感器与NodeMCU连接起来,然后使用连接线进行连接。我的测试设置如下所示,稍后我们将使用较长的跳线将传感器安装在演示水箱上。
编程NodeMCU读取水位并在web服务器上显示
现在我们已经完成了连接。我们将继续到项目的编码部分。让我清除我们在编写代码时要遵循的算法。完整的代码可以在本页的底部找到。
我们的Arduino代码需要做的是,首先连接到代码中提到的SSID和密码的网络。成功获取后,它需要将本地IP地址吐槽给串行监视器,以便我们可以访问它创建的网页。这样做之后,它应该开始处理超声波传感器,计算完距离后,它必须将数据发送到我们创建的网页。
让我们一步一步地理解它,所以首先,我们包括必要的库和将在代码中进一步使用的全局变量。与此同时,我们还提供了我们的Wi-Fi路由器的SSID和密码,并启动了端口为80的web服务器。
此外,在设置部分,我们将引脚的引脚模式设置为输入和输出,并使用HTML将页面存储在page变量中。我们保留了一行HTML代码来组成我们的网页。在设置部分本身,我们连接到Wi-Fi路由器并将IP地址打印到串行监视器。
我们创建的HTML页面每三秒刷新一次。您可以在代码本身中更改它。
大部分工作已经完成,现在在回路部分,我们只是计算与超声波传感器的距离,存储后,我们将数据发布在我们的网页上。我们的网页以这种方式制作,它每3秒刷新一次。这是关于代码的大部分内容,现在只需上传代码,让我们看看实际的项目。
基于物联网的水位指示器测试与工作
这是我们使用NodeMCU板创建的网页。它包含一个标题,即基于web的水位指示器,下面是打印通过HCSR04超声波传感器的实时数据。水位数值以cm为单位打印,数值越小,容器越空,反之亦然。
在直接测试水位之前,我们先测试了距离测量。你可以从上面和下面的图片中看到,它很有魅力。
经过测试,我们设置了一个水位仪来演示工作。我们把超声波传感器贴在罐子的顶部,还放了一个尺子进行测量。这样,监视器将显示以cm为单位的罐子的空度数据。下面是设置的样子
现在工作是这样的,首先,我们保持罐子是空的,所以服务器上应该显示20,因为罐子是20cm深,到目前为止是空的。
现在我们把罐子装满了一半,所以现在它应该显示20的一半值。
本文编译自iotdesignpro