Arduino早期洪水检测系统——源代码与电路设计
早期洪水监测系统——电路与项目源代码
无论发展中或发达国家,洪水均为造成人畜伤亡与财产损失的重大自然灾害。海底地震、飓风、暴雨等引发的洪水每年在全球多地发生。
暴雨期间,各地排水系统管理不善导致洪水泛滥,夺走无数生命。若拥有洪水早期预警系统,可提前疏散人群挽救生命。利用技术手段检测水位上升并提前报警,可大幅提高疏散效率。
本项目提供原型系统:检测水池、水坝或水库水位,通过蜂鸣器报警。属小规模原型,采用Arduino UNO、超声波传感器、蜂鸣器、LCD显示屏及连接线。
相关项目:
- 自动植物浇水灌溉系统——电路、代码与项目报告
- 雨水报警电路——雪/水/雨检测项目
早期洪水检测电路图

所需元件
- Arduino UNO
- HC-SR04超声波传感器
- 蜂鸣器
- 16×2 LCD显示屏
- 跳线/连接线
相关项目:
- Arduino与超声波传感器测距
- Arduino UNO可变电源——电路与代码
下面逐一介绍电路元件。
Arduino UNO
Arduino是开源电子开发平台,易于编程、擦除与重编程。市面常见板卡:Arduino UNO、Nano、Mega、LilyPad等,规格各异。
本项目用Arduino UNO自动控制家电。搭载ATmega328单片机,主频16MHz,支持USART、I2C、SPI通信协议。
通常用Arduino IDE经Micro USB编程。ATmega328预烧录引导程序,无需外部硬件即可上传代码。广泛应用于电子项目产品开发。采用C/C++语言,易学易用。
相关项目:
- 水位指示电路图——两个简单项目
- SRF04全自动水位控制器
Arduino IDE将代码分为void setup()(仅运行一次,用于初始化)和void loop()(持续执行主逻辑)两部分。
板载6路模拟输入引脚、14路数字GPIO(6路支持PWM),通过pinMode()、digitalWrite()、digitalRead()、analogRead()控制。6路模拟通道A0-A5提供10位分辨率。
供电方式:USB供电(5V)或DC插座(7-20V),板载稳压器输出3.3V供低功耗器件。
通信引脚:USART用0(Rx)/1(Tx);I2C用SDA(A4)/SCL(A5);SPI用SS(10)、MOSI(11)、MISO(12)、SCK(13)。
相关项目:
- Arduino物体检测自动门铃
- Arduino自动夜灯
HC-SR04超声波传感器
HC-SR04非接触测距传感器,原理同雷达/声纳,高精度测量距离。
理论量程450cm,实测2-80cm,精度3mm。工作电压5V,电流<15mA,频率40Hz。

模块集成发射器与接收器。距离计算基于距离=速度×时间。
发射器发射超声波,遇障碍物反射回接收器。已知超声波速度约330m/s,单片机测得回波时间即可计算距离。
Echo引脚高电平持续时间等于超声波往返时间,据此计算模块与物体距离。
相关项目:
- 自动铁路道口控制系统——电路与源代码
- 汽车测速电路——原理与源代码
HC-SR04与Arduino UNO接口
HC-SR04兼容Arduino、PIC、树莓派等单片机。本项目对接Arduino UNO。模块四引脚:VCC、GND、Trig、Echo。
VCC/GND接Arduino 5V/GND。Trig/Echo为输入输出引脚,接Arduino对应I/O。测距步骤:Trig置高10μs再置低 → 产生40kHz超声波 → 遇物反射 → Echo高电平持续往返时间 → 乘以声速330m/s得距离。
相关阅读:
- 智能家居自动化系统——电路与源代码
- Arduino PWM编程及功能
16×2 LCD显示屏
16×2 LCD指两行每行16字符。搭载日立HD44780驱动,支持4/8位模式。本项目采用4位模式(仅需4数据线),简化接线。

16×2 LCD模块引脚说明
| LCD引脚 | 功能说明 |
|---|---|
| VSS | 地 |
| VCC | +5V供电 |
| VEE | 对比度调节 |
| RS | 寄存器选择:数据/指令模式 |
| RW | 读/写模式 |
| E | 使能信号 |
| DB0-DB7 | 数据/指令输入 |
| LED+ | 背光阳极 |
| LED- | 背光阴极 |
LCD无自发光,依靠背光LED照明。Arduino IDE提供LiquidCrystal库简化操作,本项目主要用函数:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
早期洪水检测系统工作原理与源代码
超声波传感器安装于基准水位上方,发射/接收朝向水面。Arduino测量传感器与水面距离。
LCD实时显示距离。设定洪水基准水位,水位达到基准(距离≤阈值)时蜂鸣器置高报警,LCD显示撤离提示。
代码解析
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
lcd.begin(16,2);
引入LCD库。LiquidCrystal lcd()参数为数据引脚编号。lcd.begin()初始化16×2 LCD。
pinMode(18,OUTPUT); // Trig引脚
pinMode(19,INPUT); // Echo引脚
pinMode(20,OUTPUT); // 蜂鸣器引脚
引脚18、20设为输出(Trig、蜂鸣器),引脚19设为输入(Echo)。
t = pulseIn(19, HIGH);
dist = t * 340 / 20000;
变量t捕获Echo高电平时间,换算为厘米存入dist。
if (dist < 40) {
digitalWrite(20, HIGH);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Water level is rising. Kindly evacuate");
delay(2000);
} else {
digitalWrite(20, LOW);
delay(2000);
}
设洪水阈值为距离<40cm。水位上升至阈值内触发蜂鸣器报警,LCD显示撤离提示。
完整源代码
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
float t = 0;
float dist = 0;
void setup() {
lcd.begin(16,2);
pinMode(18,OUTPUT); // Trig
pinMode(19,INPUT); // Echo
pinMode(20,OUTPUT); // Buzzer
lcd.setCursor(0,1);
lcd.print(" Water Level Detector");
delay(2000);
}
void loop() {
lcd.clear();
digitalWrite(20,LOW);
digitalWrite(18,LOW);
delayMicroseconds(2);
digitalWrite(18,HIGH);
delayMicroseconds(10);
digitalWrite(18,LOW);
delayMicroseconds(2);
t = pulseIn(19,HIGH);
dist = t * 340 / 20000;
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Distance: ");
lcd.print(dist/100);
lcd.print(" m");
delay(1000);
if (dist < 40) {
digitalWrite(20,HIGH);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Water level is rising. Kindly evacuate");
delay(2000);
} else {
digitalWrite(20,LOW);
delay(2000);
}
}
相关项目:
- 4017与555定时器交通灯控制电子项目
- 简易手机充电器电路图——230V AC转5V
- 电子继电器开关电路——NPN/PNP/N/P沟道
- 555定时器与4017计数器LED轮盘电路
- 电子断路器——原理图与工作
- 红外运动检测电路图
- 简易触摸开关电路
- 555定时器基础倍压电路
- 双电源电路图——230VAC至±12VDC
- 简易手机充电器电路图——230V AC转5V
工业技术
- 基于 AT89S52 单片机与 LM35 传感器的温控系统设计
- 仅用 Arduino 构建 DTMF 解码器 – 无需额外 IC
- 基于 Arduino 与 Python 的可靠 RFID 考勤系统
- 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
- SERENA:基于 Arduino Mega 2560 与 TFT 触摸屏的多级密码报警系统
- 实时森林火灾监测系统:短信报警方案
- 基于Arduino、Windows IoT与Azure云的高级跌倒检测系统
- Arduino智能防碰撞预警系统:超声波测距+声光分级报警
- 1Sheeld + Arduino 手机无线控制家庭灯光系统
- Symphony Link:数据中心可靠漏水检测方案
- Biz4Intellia物联网漏水检测:五大优势驱动工业效能跃升
- 掌握 C# using 指令:命名空间导入、别名与静态导入全解析