当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]再也不让水箱溢出!你是否曾打开水泵后完全忘记关机?几分钟后,露台被淹,水箱溢出,不得不跑上楼关闭水泵。为了解决这一简单却常见的问题,我利用ESP8266、模拟水位传感器以及KiwisIoT构建了一个基于WiFi的水位监测系统。

使用ESP8266与KiwisIoT的物联网水位监测系统——带水箱满水蜂鸣报警

再也不让水箱溢出!你是否曾打开水泵后完全忘记关机?几分钟后,露台被淹,水箱溢出,不得不跑上楼关闭水泵。为了解决这一简单却常见的问题,我利用ESP8266、模拟水位传感器以及KiwisIoT构建了一个基于WiFi的水位监测系统。

该系统持续测量水位,并将数据发送至云端仪表盘。当水箱达到高水位时,系统可自动激活LED灯和蜂鸣器进行提醒。

最终成果是一个简单的物联网系统,让你能通过手机或电脑随时监控水箱状态。

你将完成的内容:

项目完成后,你将拥有:

- 一个ESP8266 NodeMCU,用于读取水位传感器数据

- 一个ESP8266 NodeMCU,用于读取水位传感器数据

- 一个实时的KiwisIoT仪表盘,显示当前水位

- 水位状态提示,包括低、中、高和满水

- 一个用于显示水箱满水状态的LED指示灯。

- 可选的蜂鸣器,用于发出声音警报。

- 支持WiFi连接,以便远程监控数据。

ESP8266每两秒读取一次模拟传感器,并将处理后的数值发送至KiwisIoT。

工作原理

架构非常简单:

水位传感器 → ESP8266 → WiFi → KiwisIoT → 控制面板

模拟传感器输出的数值取决于传感器与水面接触的面积。

ESP8266将原始模拟值转换为0%到100%之间的百分比。

软件随后判断当前状态:

当水位达到90%或以上时,LED指示灯和可选蜂鸣器会启动。

为什么选择KiwisIoT?

市面上有许多物联网平台,但对于这样一个小型项目,我想要的是简单易用的解决方案。

KiwisIoT提供了一个可视化仪表盘,无需搭建完整的云端后端服务器,即可直观展示传感器数据。

ESP8266发送两个信息:

第一个值由仪表盘小部件用于显示水位百分比;

第二个值则显示当前状态。

这使得我们无需编写独立的服务器程序,就能轻松创建一个简单的控制面板。

KiwisIoT仪表盘设置

设置仪表板非常简单。

步骤1 — 创建面板

在KiwisIoT中创建一个新的仪表板/面板。

给它起个名字,例如:

水箱监控器

步骤2 — 获取您的主题ID

创建面板后,复制生成的主题ID。

它会类似于:

在Arduino代码中使用您自己的主题ID。

步骤3 — 添加指针(Gauge)

添加一个指针小部件,并通过以下键配置其接收水位值:

这将显示0%到100%之间的水位。

步骤4 — 添加状态小部件

添加一个文本/标签小部件,使用以下键:

这将显示诸如“水满”等信息:

一旦ESP8266开始发送数据,仪表板将自动更新。

Arduino代码

在上传代码前,请先安装所需的ESP8266和KiwisIoT库。

请将WiFi凭据和主题ID替换为您自己的值。

实现警报闪烁功能

不要让LED和蜂鸣器持续亮起,当水箱达到满量程阈值时,可让它们闪烁并发出蜂鸣声。

将FULL部分替换为:

这将在水箱处于或超过90%时产生交替的报警提示。

理解代码

程序的主要部分是传感器读数:

ESP8266 读取传感器的模拟值。

然后将原始值转换为百分比:

例如:

约束函数可防止计算出的百分比低于0或高于100。

程序随后将百分比与四个阈值进行比较。

最后,这些数值被发送到KiwisIoT:

整个过程每两秒重复一次。

校准

最重要的步骤之一是传感器校准。

不要假设你的传感器会精确输出:

不同传感器的读数会因传感器、线路、水质和安装方式的不同而有所差异。

第一步——测量空值

保持传感器完全干燥。

打开串口监视器(Serial Monitor)在:

记录传感器读数。

例如:

第二步 — 测量完整数值

将传感器浸入所需的最大水位。

例如:

第三步 — 更新代码

如果您的测量值为8和980:

这将为您提供一个更有意义的百分比。

校准是简单演示与提供实用测量结果的系统之间的差异。

测试

上传程序后:

•打开串行监视器。

•将波特率设置为115200。

•为ESP8266供电。

•缓慢地暴露或浸入传感器。

•观察传感器读数。

•查看百分比变化。

•检查KiwisIoT仪表板。

•超过90%的阈值。

•确认LED灯和蜂鸣器是否被激活。

典型的串口监视器输出如下:

当读数达到90%时,仪表板也应显示相应变化。

水箱满后会发生什么?

完整流程如下:

这既提供了本地硬件反馈,也实现了远程监控。

我可以远程监控水箱吗?

是。

由于ESP8266连接到WiFi并将传感器信息发送至KiwisIoT,因此其他具备互联网连接的设备也可以访问仪表盘。

例如,您可以通过以下方式查看仪表盘:

•智能手机

•移动PC

•桌面

•平板电脑

当水箱位于屋顶或其他不易直接看到的位置时,这非常有用。

我可以使用超声波传感器吗?

是。

可以使用HC-SR04等超声波传感器,而不是接触式水位模拟传感器。

超声波传感器可测量传感器与水面之间的距离。

计算公式如下:

超声波方法还能避免感应元件与水直接接触。

能否自动控制水泵?

可以——这是下一步的合理升级。

可将继电器模块连接到另一个GPIO引脚,并通过合适的电气控制系统来控制水泵。

基本控制逻辑可能为:

这引入了滞后特性,防止水泵在单个阈值附近频繁快速开关。

安全注意事项:主电源驱动的水泵不应直接连接至ESP8266。应使用额定合适的继电器/接触器,并确保良好的电气隔离、外壳保护以及必要时由合格人员进行安装和防护。

未来可能的改进

本项目可进一步扩展。

自动水泵控制

根据水位自动启动或停止水泵。

移动通知

当水箱满或达到临界低位时,发送推送通知。

历史图表

存储水位测量数据,并可视化每日或每周的用水模式。

多个水箱

通过一个仪表盘监控多个水箱。

超声波测量

将电阻式水位传感器替换为非接触式距离传感器。

智能水管理

将水箱液位与以下内容结合:

•泵的状态

•流量传感器

•用水量

•降雨数据

•电机电流

这可以发展成一个完整的智能水管理系统。

物联网架构

尽管这是一个小型项目,但它展示了许多物联网系统所采用的基本架构:

同样的架构可用于多种其他传感器。

例如:

传感器会变化,但物联网的基本流程保持不变。

最终思考

这个项目始于一个简单的问题:如何在不频繁手动检查的情况下,判断水箱何时已满。

仅需一个ESP8266、一个水位传感器、几个基本元件以及KiwisIoT,我们就能将这个问题转化为一个联网的物联网系统。

该项目展示了完整的流程:

传感器 → 微控制器 → WiFi → 云端 → 控制面板 → 报警

对于刚开始接触物联网的人来说,这是一个很有用的项目,因为它引入了多个概念,这些概念日后可用于更复杂的系统中。

最棒的是,同样的架构可以扩展为自动水泵控制器,进而构建完整的智能水管理系统。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭