亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

Arduino早期洪水检测系统——源代码与电路设计

早期洪水监测系统——电路与项目源代码

无论发展中或发达国家,洪水均为造成人畜伤亡与财产损失的重大自然灾害。海底地震、飓风、暴雨等引发的洪水每年在全球多地发生。

暴雨期间,各地排水系统管理不善导致洪水泛滥,夺走无数生命。若拥有洪水早期预警系统,可提前疏散人群挽救生命。利用技术手段检测水位上升并提前报警,可大幅提高疏散效率。

本项目提供原型系统:检测水池、水坝或水库水位,通过蜂鸣器报警。属小规模原型,采用Arduino UNO、超声波传感器、蜂鸣器、LCD显示屏及连接线。

相关项目:

早期洪水检测电路图

Arduino早期洪水检测系统——源代码与电路设计

所需元件

相关项目:

下面逐一介绍电路元件。

Arduino UNO

Arduino是开源电子开发平台,易于编程、擦除与重编程。市面常见板卡:Arduino UNO、Nano、Mega、LilyPad等,规格各异。

本项目用Arduino UNO自动控制家电。搭载ATmega328单片机,主频16MHz,支持USART、I2C、SPI通信协议。

通常用Arduino IDE经Micro USB编程。ATmega328预烧录引导程序,无需外部硬件即可上传代码。广泛应用于电子项目产品开发。采用C/C++语言,易学易用。

相关项目:

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)。

相关项目:

HC-SR04超声波传感器

HC-SR04非接触测距传感器,原理同雷达/声纳,高精度测量距离。

理论量程450cm,实测2-80cm,精度3mm。工作电压5V,电流<15mA,频率40Hz。

Arduino早期洪水检测系统——源代码与电路设计

模块集成发射器与接收器。距离计算基于距离=速度×时间。

发射器发射超声波,遇障碍物反射回接收器。已知超声波速度约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得距离。

相关阅读:

16×2 LCD显示屏

16×2 LCD指两行每行16字符。搭载日立HD44780驱动,支持4/8位模式。本项目采用4位模式(仅需4数据线),简化接线。

Arduino早期洪水检测系统——源代码与电路设计

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);
  }
}

相关项目:

工业技术

  1. 基于 AT89S52 单片机与 LM35 传感器的温控系统设计
  2. 仅用 Arduino 构建 DTMF 解码器 – 无需额外 IC
  3. 基于 Arduino 与 Python 的可靠 RFID 考勤系统
  4. 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
  5. SERENA:基于 Arduino Mega 2560 与 TFT 触摸屏的多级密码报警系统
  6. 实时森林火灾监测系统:短信报警方案
  7. 基于Arduino、Windows IoT与Azure云的高级跌倒检测系统
  8. Arduino智能防碰撞预警系统:超声波测距+声光分级报警
  9. 1Sheeld + Arduino 手机无线控制家庭灯光系统
  10. Symphony Link:数据中心可靠漏水检测方案
  11. Biz4Intellia物联网漏水检测:五大优势驱动工业效能跃升
  12. 掌握 C# using 指令:命名空间导入、别名与静态导入全解析