使用ESP8266与KiwisIoT设计一个物联网水位监测系统
使用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





