Arduino 物联网水质监测系统 — 实时 TDS/电导率检测与蓝牙上传
元器件清单
| 元件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 主控 |
| HC-05 蓝牙模块 | 1 | 透传串口,连手机 App |
| RGB LED 共阴 | 1 | 指示水质等级 |
| 1602 LCD(带 I2C/并口均可) | 1 | 显示电导率与 TDS |
| 电位器 10 kΩ | 1 | LCD 对比度调节 |
| 电阻 1 kΩ | 1 | 分压基准 |
| 电阻 330 Ω | 3 | RGB LED 限流 |
| 公母杜邦线、面包板 | 若干 | 搭建电路 |
所需工具
- 剥线钳
软件与 App
- Arduino IDE
- Ardutooth(安卓蓝牙串口调试 App)
原理与算法
什么是 TDS?
TDS(总溶解固体,ppm)反映水中溶解物质总量,通过电导率换算。WHO 建议饮用水 TDS < 300 ppm,< 100 则矿物质不足。常见水体参考:
- 纯净水:80-150 ppm
- 自来水:250-350 ppm
- 地下水:500-1000 ppm
- 海水:~30000 ppm
电路原理:分压法测水阻
已知基准电阻 R₁=1 kΩ 与水体电阻 R₂ 串联接 5 V,Arduino A0 读取中点电压 V₁。
由分压公式:V₁ = 5 × R₁/(R₁+R₂) → R₂ = R₁ × (5-V₁)/V₁。
从电阻到 TDS 的换算
ρ = R₂ × A / L // 电阻率 Ω·m
σ = 1 / ρ // 电导率 S/m
TDS = σ × 7000 // 经验系数换算为 ppm
其中 L=6 cm 为两测量导线间距,A=1.54 mm² 为导线截面积(需按实测容器修正)。
硬件连接要点
- Arduino 5V/GND 给面包板供电轨
- A0 接分压中点,1 kΩ 接地,另一端接测量导线
- LCD:VSS→GND, VDD→5V, V0→电位器中间脚, RS→D7, RW→GND, E→D8, D4-D7→D10-D13
- HC-05:VCC→5V, GND→GND, TX→D3(Arduino RX), RX→D2(Arduino TX)
- RGB LED:公共阴极→GND, R→D9, G→D6, B→D5(均经 330 Ω)
软件流程
- 读取 A0 电压 → 计算 R₂ → 电导率 → TDS
- LCD 显示电导率(S/m)
- RGB LED 按阈值变色:
<200 粉/紫(纯净) → 200-600 蓝 → 600-900 青 → >900 红(高矿化) - 蓝牙发送 CSV:
电导率,TDS;供手机 App 记录绘图
代码关键片段
reads = analogRead(A0);
vOut = reads * 5.0 / 1023;
buffer = (5.0 / vOut) - 1;
R2 = 1000 * buffer;
r = R2 * A / L;
C = 1 / r; Cm = C * 10; // mS/cm
TDS = Cm * 700;
机箱制作
作者利用废弃试管打孔穿导线,两端用胶泥固定密封,作为测量池。
原理图与完整代码

完整代码见文末 Code 章节,含 SoftwareSerial 与 LiquidCrystal 库调用。
制造工艺
- 树莓派对接HDC2010:I²C温湿度传感器完整接线与编程指南
- 树莓派 3 接 DHT11 传感器上传数据到 ThingsIo.ai 云平台
- 智能垃圾桶:基于蜂窝物联网的自动化废物管理解决方案
- 基于 Helium 网络的太阳能供电空气质量监测站:设计与部署全指南
- Phantom YoYo 高灵敏度水位传感器接入 MCP3008 ADC 树莓派实战 (Windows 10 IoT Core + C#)
- Windows 10 IoT Core 上基于 SHT15 的精准温湿度监测
- 多位置温度传感器系统,助力智能家居集成
- 智能 Arduino 水杯:实时监测饮水量与智能提醒
- 基于 Arduino Nano 的智能运动感应水枪
- Arduino Nano 多传感器气象站:BMP280 + DHT11 + GUVA-S12SD + DS3231 + OLED
- 基于Arduino UNO的智能红外感应水龙头控制系统——高效节水环保
- 先进碳基 NO₂ 传感器提升室内空气质量监测水平