【Ai-M61-32S开发板】水位监测计
水位检测在水资源管理、城市防洪、农业灌溉、家用电器和工业生产等多领域发挥积极建设作用。
利用水位传感器,可以实现水资源的智能管理,提高生产效率。
本文介绍了安信可 Ai-M61-32S 开发板结合水位传感器实现水位监测计的项目设计。
项目方案
- 通过读取 IO 接口的模拟值,
- 进行电压转换,获取检测到的电压值,
- 进一步通过电压-水位校准,实现水位高度的串口打印和串口绘图
- 实时水位监测功能
电压转换
根据欧姆定律,V = I / R,电压和电阻成正比;
因此通过获取 3.3V 和 GND 对应的模拟数值(实测为 3199 和 21),
即可得到实际电压的转换公式 Valtage = val * (3.3 / (3199-21))
.
代码
结合前面关于 IO 模拟值读取 的工程测试,进一步实现 实际电压 转换
#include <stdio.h>
void setup() {
pinMode(19, INPUT);
Serial.begin(115200);
}
void loop() {
int val = analogRead(19); // analog value reading
float vlt = val * (3.3 / (3199-21)); // real voltage conversion
Serial.println(vlt);
delay(200);
}
按住 IO2 键的同时,短按 EN 键,进入下载模式,配置端口号后上传工程,复位运行程序。
效果

水位传感器
水位传感器(Water Sensor)可以检测水位高度(检测高度:0 - 40 mm),亦可用作雨滴传感器,用于各种天气状况的监测,检测是否下雨及雨量的大小,广泛应用于汽车自动刮水系统、智能灯光系统、洗衣机和智能天窗系统等。
模块简介
- 当模块上电,电源指示 LED 点亮;
- 工作电压:DC
3.3V - 5V
;
- 输出类型:模拟信号;

传感器具有 10 条裸露的铜线,其中 5 条是电源铜线,另外 5 条是感测铜线。
走线隔行平行排列,每两条电源铜线间有一条感测铜线。
模块原理图

参考:水位检测报警 - Telesky .
引脚定义
- S(信号)为模拟输出;
- +(VCC)为传感器供电;
- –(GND)为接地。

参考:Arduino Uno 水位传感器 .
运行原理
当平行铜线之间有水时,水浸没的高度不同,电流不同。 铜线间的电阻根据水位的变化而变化。
电阻与水的高度成反比(传感器浸水越深,导电性越好,电阻越小,电流越大)。

参考:水位传感器如何工作并与Arduino接口 .
因此根据 ADC 测量传感器输出的电压,便可以确定水位。
硬件连接
S
-> IO19
+
-> 3V3
-
-> GND

硬件连接完成后,打开串口,此时输出的电压值应为 0
.
水位校准
由于各地的水质差异,导电性能不同,因此需要根据实际情况进行校准。
- 多次校准,取平均值;
- 每次校正前,需将 PCB 表面的平行铜线擦干,待测得电压为 0 时再置入水中,记录水位值和电压值。
校准数据采集
水位 10 毫米,相应的串口输出电压为 1.25 伏特

……
增加水位高度,采集多组电压-水位数据。
假设 ADC 读取电压(V)与水位高度(mm)为线性相关关系,
对上述数据进行拟合

获得拟合表达式 y = 41.774 x - 38.686
这里使用 Excel 软件进行拟合
工程代码
在代码中添加相应的水位高度定义
#include <stdio.h>
void setup() {
pinMode(19, INPUT);
Serial.begin(115200);
}
void loop() {
int val = analogRead(19); // analog sensor value
float vlt = val * (3.3 / (3199-21)); // real voltage conversion
float wl = 41.774 * vlt - 38.686; // water level (mm)
Serial.print(val);
Serial.print(",");
Serial.print(vlt);
Serial.print(",");
Serial.println(wl);
delay(200);
}
保存代码,构建工程,上传固件,复位后运行程序;
打开串口助手,连接目标串口对应的设备端口号,打开串口,获取实时 IO 模拟值、电压值(伏特)和水位值(毫米)

效果演示

对应的水位演化曲线

结果分析
经过多次测量,可以获得较为理想的检测结果。
此外,校准和测量过程中发现 ADC 采集的电压值会随时间逐渐减小,可能原因是
- PCB 板被液体浸润,液体表面张力导致初始时刻覆盖更大面积的铜板,电阻较小,输出电压较大;
- 随着时间推移,表面张力被克服,PCB板液面覆盖面积逐渐平稳下降,此时电压也逐渐减小,最后趋于稳定。
类似“海水退潮”
因此采样和校准时需要等待示数稳定,再记录数值,以提高精度。
总结
本文介绍了安信可 Ai-M61-32S 开发板结合水位传感器实现水位监测计的项目设计,使用 Arduino IDE 编程,通过 IO 接口的模拟值的电压转换、电压-水位校准等流程,实现水位高度的串口打印和串口绘图,以及实时水位监测功能,为该模组的快速开发和相关产品的应用提供了参考。