老式水浸电极泡水腐蚀、凝露乱报警?使用MicroPython快速驱动 WS61电容式水浸模组
引言
在机房、电力机柜、地下管廊、智能家居等场景,漏水检测是保障设备安全与建筑结构的关键防线。但传统电导式水浸传感器始终摆脱不了 “易腐蚀、误判率高、维护成本高” 的痛点 —— 金属电极长期暴露在潮湿环境中易被氧化腐蚀,不同水质的导电性差异会导致检测不稳定,且只能在两点间检测,存在漏点盲区。

传统电导式水浸传感器依赖电极与水的直接接触,存在诸多难以克服的缺陷:
- 易腐蚀、寿命短:金属电极长期接触水和潮湿空气,极易被氧化、腐蚀,导致检测失灵,需频繁更换维护;
- 误判率高、受水质影响大:水质、水垢、盐分等会改变水的导电性,导致检测结果不稳定,潮湿凝露也易触发误报警;
- 检测盲区多、无定位能力:仅支持两点间的开关量检测,无法覆盖大面积区域,且无法定位漏水点,故障排查效率低;
- 安装限制多:需破坏设备防水结构才能安装电极,不适用于密闭容器或已装修的场景。
而电容式水浸模组,正是针对这些痛点设计的新一代检测方案。

地下管廊、隧道等场景易受地表水或地下水影响,漏水隐患隐蔽且危害大。WS11 可部署在管廊、隧道的关键位置,实时监测水位变化,异常时即时发出警报,启动排水系统或采取应对措施;模组支持级联扩展,可实现多点漏水检测与定位,帮助管理人员快速响应,减少损失,提升基础设施运行的安全性。

在数据中心、通信机房和电力机柜中,WS11 可安装在设备底部或机柜内,实时监测水浸情况。一旦发生漏水,模组能快速检测并输出信号,触发报警或联动断电,防止水损导致的设备短路、火灾风险;非接触式设计无需频繁维护,可长期稳定运行在潮湿的机房环境中,为关键设备提供全天候安全防护。

在智能家居中,WS11 可安装在厨房、浴室、水管接口等易漏水位置,实时监测泄漏情况,及时通知用户;在楼宇建筑中,可监测管道破裂、空调冷凝水泄漏等问题,减少水损对建筑结构的破坏,降低维修成本。非接触式安装方式不影响装修美观,低功耗设计也适配智能家居设备的长续航需求。

一、模块简介
WS61(Water Sensor-MCP61)是一款电容型、非接触式感知的智能水浸传感器,采用敏源传感推出的新一代电容传感微处理器 SOC 芯片,集成了双通道电容型模拟前端传感电路(AFE CAP),并且搭载高精度温度芯片,通过 UART 接口输出电容信息,进行算法分析,有效滤除振动、凝露等干扰,实现有水/无水以及不同状态的准确区分,并可同时提供环境温度信息。

WS61 水浸传感器的产品形态、线缆规格和基础外观信息。
- WS61 是一款电容型、非接触式感知的智能水浸传感器;
- 相比传统电导式方案,具有检测范围大、可靠性高、受水质影响小等特点;
- 支持连续数字量分析与级联定位,适合漏水监测和积水检测场景;
- 默认提供
UART接口,传感器防护等级可达IP68。
二、主要芯片介绍
2.1 芯片概述
WS61 基于电容式非接触测量原理,通过检测介电常数变化判断水浸状态,并可同步输出电容值、温度和报警状态。
2.2 引脚定义

2.3 功能框图
无。
2.4 性能参数

2.5 参考电路
无。
2.6 芯片配置
无。
2.7 通信接口和相关协议



2.8 寄存器定义



三、电路工程
3.1 电路源工程
获取电路源工程,请查看下面链接:
https://mysentech.com/productinfo/3228659.html
3.2 模块使用说明
3.2.1 模块测试环境搭建和注意事项
这里,测试前先给模组配好防水外壳(或用防水胶密封接线端),隔着透明塑料容器就能模拟漏水场景,上电确认串口数据稳定后,用清水隔着不同厚度塑料板测试,观察水浸档位是否随水的接触 / 远离同步变化。
关键注意事项:模组本身无防水设计,必须安装防水外壳 / 密封接口,严禁裸板直接接触水;供电电压严禁超过 5.5V;安装时需紧贴被测平面,远离金属物体,避免影响电容检测精度。
3.2.2 Modbus Poll 的使用
Modbus Poll 是一款通用型 Modbus 主站调试工具,适配本系列所有支持 Modbus-RTU 协议的电容式传感器,可快速实现传感器与电脑的串口通信调试、实时数据读取与日志导出,是验证传感器功能、采集测试数据的通用上位机工具。软件支持 Modbus RTU/ASCII/TCP/IP 协议,兼容多种寄存器类型与数据格式,操作流程对全系列传感器通用。
使用前需先完成软件安装与激活,可通过官方渠道下载安装包,首次打开可试用 30 天,也可输入注册码永久激活。硬件连接传感器与电脑后,打开软件点击「Connection」-「Connect」,在弹出窗口中配置串口参数(端口号、波特率、数据位 / 校验位 / 停止位,本系列传感器默认采用 9600 Baud、8N1 格式,具体以对应型号规格书为准),确认后即可建立通信连接。

以下为通用操作流程说明:
- 串口连接配置:将传感器通过 USB 转串口模块接入电脑后,打开 Modbus Poll 软件,点击菜单栏「Connection」-「Connect」,在弹出窗口中选择传感器对应的 COM 端口号,并配置与传感器匹配的串口参数(波特率、数据位、校验方式、停止位,本系列传感器默认采用 9600 Baud、8N1 格式),确认后即可建立通信连接。
- 导入传感器配置文件:软件支持导入各传感器型号对应的
.mbp预配置文件,文件中已预设好寄存器地址、数据格式与别名定义,无需手动配置寄存器。直接在软件中打开对应传感器的.mbp文件,即可自动加载所有参数,连接成功后将直接显示传感器的实时检测数据(如尘 / 雨 / 霜厚度值、状态标志位等)。 - 数据日志记录(可选):如需保存测试数据,可通过「Setup」-「Excel Log」功能配置日志记录规则,支持按固定周期或每次数据更新记录数据,并可设置记录条数上限,方便后续对传感器数据进行分析与验证。
以上为通用的上位机基础操作,不同传感器型号的 .mbp 预配置文件、具体寄存器定义、特殊配置细节,可参考「七、相关资料」中内容。
3.3 应用实验
这里,我们使用 GraftPort-RP2040 开发板进行测试,水浸模组 WS61 上使用 UART 接口与主控进行通信。
这里,我们首先使用 HY2.0-4P 连接线将模块通过 XH2.54-4P 转接 HY2.0-4P 接口模块连接到 GraftPort-RP2040 开发板的 UART0 接口:

该图展示了 WS61 模块与 GraftPort-RP2040 开发板的 UART 接线方式。
模块连线如下表所示:
| 开发板引脚 | 模块引脚 | 说明 |
|---|---|---|
| 引脚 16 | MTX |
UART 数据传输线,对应开发板的发送引脚 |
| 引脚 17 | MRX |
UART 数据传输线,对应开发板的接收引脚 |
这里,我们需要在 uPyPI 上搜索相关驱动包:https://upypi.net/zh/

该图演示了在 uPyPI 中搜索 WS61 驱动包的过程。
输入 ws61_driver 进行搜索,显示如下:

该图展示了 ws61_driver 搜索结果,用于确认对应驱动包。
点击复制本地安装命令:

该图展示了复制 WS61 驱动安装命令的界面,方便完成环境准备。
通过 mip 工具导入模块驱动库代码,以下是 mpremote 工具使用指令:
mpremote mip install https://upypi.net/pkgs/ws61_driver/1.0.0
导入水浸模组 WS61-MicroPython 驱动代码后,将下面 main.py 代码复制到我们的工程中:
# Python env : MicroPython v1.23.0
# -*- coding: utf-8 -*-
# @Time : 2026/4/3 下午2:30
# @Author : FreakStudio
# @File : main.py
# @Description : WS61水浸传感器数据采集主程序
# ======================================== 导入相关模块 =========================================
import time
from wd61 import WS61Water
# ======================================== 全局变量 ============================================
# ======================================== 功能函数 ============================================
# ======================================== 自定义类 ============================================
# ======================================== 初始化配置 ===========================================
# 等待硬件稳定
time.sleep(3)
# 输出初始化提示(纯英文)
print("FreakStudio: WS61 Water Sensor Initialization")
# 创建传感器对象,配置从机地址、UART编号、TX和RX引脚
sensor = WS61Water(slave_addr=1, uart_id=0, tx_pin=16, rx_pin=17)
# 写入报警电容阈值(单位:pF)
sensor.write_alarm_threshold(7.5)
# 写入解除报警阈值(单位:pF)
sensor.write_release_threshold(7)
# ======================================== 主程序 ============================================
# 主循环:打印所有可读取参数
while True:
# 读取设备ID
dev_id = sensor.read_device_id()
# 读取485节点地址
node_addr = sensor.read_485_node_address()
# 读取报警电容阈值
alarm_th = sensor.read_alarm_threshold()
# 读取解除报警阈值
release_th = sensor.read_release_threshold()
# 读取实时电容值
cap = sensor.read_capacitance()
# 读取环境温度
temp = sensor.read_temperature()
# 读取水浸状态(1:有水报警,0:无水)
status = sensor.read_water_status()
# 格式化打印所有参数(输出纯英文)
print("=" * 60)
print(f"Device ID: {dev_id if dev_id is not None else 'Read failed'}")
print(f"485 Node Address: {node_addr if node_addr is not None else 'Read failed'}")
print(f"Alarm threshold: {alarm_th} pF" if alarm_th is not None else "Alarm threshold: Read failed")
print(f"Release threshold: {release_th} pF" if release_th is not None else "Release threshold: Read failed")
print(f"Capacitance: {cap} pF" if cap is not None else "Capacitance: Read failed")
print(f"Temperature: {temp} C" if temp is not None else "Temperature: Read failed")
print(f"Water status: {'Water alarm' if status == 1 else 'No water'}" if status is not None else "Water status: Read failed")
print("=" * 60)
# 延时1秒
time.sleep(1)
烧录代码,打开终端,输出如下:

该图展示了 WS61 示例程序输出的前半部分,包含设备地址和阈值等信息。

该图展示了 WS61 示例程序输出的后半部分,包含电容、温度和水浸状态信息。

这里,需要注意的是,我们的驱动库代码中已经封装了两次读取操作,开发者无需两次读取。
相关资料


在机房、电力机柜、地下管廊、智能家居等场景,漏水检测是保障设备安全与建筑结构的关键防线。但传统电导式水浸传感器始终摆脱不了 “易腐蚀、误判率高、维护成本高” 的痛点 —— 金属电极长期暴露在潮湿环境中易被氧化腐蚀,不同水质的导电性差异会导致检测不稳定,且只能在两点间检测,存在漏点盲区。


浙公网安备 33010602011771号