使用 Arduino 的早期洪水检测系统 - 源代码
早期洪水 监控 系统 - 电路和项目源代码
在发展中国家和非发展中国家,洪水都是造成人类和动物生命财产损失的大规模自然灾害。全球许多地方每年都会发生由海洋地震、飓风、降雨和其他自然灾害引起的洪水。
在降雨期间,各个地理区域未管理的排水系统导致洪水泛滥,许多人丧生。如果我们有一些系统可以让我们对洪水进行早期预警,那么我们就可以挽救人们的生命。一种利用技术检测水位升高并提前提醒人们疏散的系统。
所以在这个项目中,我们为您带来了一个原型,它可以用来检测一些池塘、大坝或水库的水位,然后使用蜂鸣器发出警报。这只是一个小型原型,我们将在其中使用 Arduino UNO、超声波传感器、蜂鸣器、LCD 和一些连接线。
相关项目:
- 自动植物浇水和灌溉系统 - 电路、代码和项目报告
- 雨警报电路 - 雪、水和雨探测器项目
早期洪水检测电路图
需要的组件
- Arduino UNO
- HC-SR04 超声波传感器
- 蜂鸣器
- 16×2 液晶显示屏
- 跳线或连接线
相关项目:
- 使用 Arduino 和超声波传感器进行距离测量
- 使用 Arduino UNO 的可变电源 - 电路和代码
现在,让我们一一了解这个基本电路中用到的元件。
Arduino UNO
Arduino 是一个用于开发电子项目的开源平台。它可以随时轻松地进行编程、擦除和重新编程。市场上有很多 Arduino 板,如 Arduino UNO、Arduino Nano、Arduino Mega、Arduino lilypad 等,根据用途有不同的规格。
在这个项目中,我们将使用Arduino UNO来自动控制家电。它上面有 ATmega328 微控制器 IC,以 16MHz 时钟速度运行。功能强大,可在 USART、I2C 和 SPI 通信协议上工作。
这个板子通常是使用软件 Arduino IDE 使用 micro USB 电缆进行编程的。 ATmega328 带有预编程的板载引导加载程序,无需外部硬件帮助即可更轻松地上传代码。它在制作电子项目或产品方面有着广泛的应用。开发板采用C和C++语言编写,非常易学易用。
相关项目:
- 水位指示器电路图 - 两个简单的项目
- 使用 SRF04 的全自动水位控制器
Arduino IDE 让编程变得更加容易。它将代码分为两部分,即 void setup() 和 void loop()。函数 void setup() 只运行一次,主要用于启动某个进程,而 void loop() 包含应该连续执行的代码部分。
该模型由6个模拟输入引脚和14个数字GPIO引脚组成,可用作输入输出,其中6个提供PWM输出和模拟使用pinMode()、digitalWrite()、 digitalRead() 和analogRead() 函数。 6个模拟输入通道通道从引脚A0到A5,提供10位分辨率。
该板可以使用工作在 5 伏的 USB 电缆或工作在 7 到 20 伏的直流插孔供电。板载稳压器可产生 3.3 伏电压,用于运行低功率设备。
由于 ATmega328 工作在 USART、SPI 和 I2C 通信协议上,有 0 (Rx) 和 1(Tx) 引脚用于 USART 通信、SDA (A4) 和 SCL (A5) SPI 通信协议的 I2C 和 SS (10)、MOSI (11)、MISO (12) 和 SCK (13) 引脚。
相关项目:
- Arduino 对象检测自动门铃
- 使用 Arduino 的自动夜灯
HC-SR04超声波传感器
HC-SR04 是一种超声波传感器,可帮助在许多地方测量距离,无需人工接触。它的工作原理与雷达和声纳相同,提供了一种以非常精确的方式测量距离的有效方法。
理论上它可以测量最远450厘米的距离,但实际上它可以测量2厘米到80厘米的距离,精度为3毫米。工作电压为 5 伏,电流小于 15 毫安,频率为 40 赫兹。
HC-SR04上安装了一个发射器和一个接收器。距离是用我们在学校学过的基本速度、距离和时间公式计算的,即
距离 =速度 x 时间
HC-SR04传感器的发射器在空气中发射超声波。如果该波被传感器范围内的某个物体反射,则空气中的反射波被传感器的接收器接收。所以用上面的公式计算距离我们应该知道速度和时间。
我们知道超声波的普遍速度在330m/s左右。时间由微控制器上的电路测量。在超声波返回接收器的时间段内,回波引脚变高。这样我们就可以计算出物体与HC-SR04超声波传感器之间的距离。
相关项目:
- 自动铁路闸机控制系统 - 电路和源代码
- 车速检测电路 - 工作原理和源代码
HC-SR04与Arduino UNO接口
HC-SR04超声波传感器可与Arduino、PIC、Raspberry Pi等所有微控制器一起使用。在这个项目中,我们将HC-SR04超声波传感器与Arduino UNO接口. HC-SR04模块有四个引脚:VCC、GND、Trig和Echo。
我们为 HC-SR04 模块提供 5 伏电压和 GND 到 Arduino UNO。触发引脚和回声引脚是输入和输出引脚,因此它们必须连接到 Arduino UNO 的输入和输出引脚。所以要测量距离,我们首先将触发引脚设置为“高”10微秒,然后设置为“低”。
这将产生一个频率为 40 kHz 的超声波到达物体并反射回模块的接收器。如果波检测到某个物体,它会立即返回模块的接收器部分,并且回波引脚在返回传感器的时间段内变为“高电平”。
现在这个时间段乘以 330 m/s 的波速就是 HC-SR04 模块和物体之间的距离。
相关帖子:
- 智能家居自动化系统 - 电路和源代码
- Arduino PWM 编程及其在 Arduino 中的功能
16×2 LCD 显示屏
将 16 X 2 LCD 与 Arduino UNO 连接起来非常简单。市场上有各种类型的 LCD,但我们在这个项目中使用的是 16×2,这意味着它有两行,每行可以显示 16 个字符。
这个模块上有来自日立的 HD44780 驱动程序,有助于与微控制器进行接口和通信。此 LCD 可以工作在 4 位模式和 8 位模式。在 4 位模式下,只需 4 个数据引脚即可在 LCD 和微控制器之间建立连接,而在 8 位模式下,则需要 8 个数据引脚。
这里我们将在 4 位模式下使用它,因为它需要更少的电线并简化电路。再来看看16×2 LCD的管脚说明。
16×2液晶模组管脚说明:
液晶屏上的引脚 | 说明 |
VSS | 接地针 |
VCC | +5V供电 |
VEE | 改变LCD对比度的引脚 |
RS | 寄存器选择:数据模式或命令模式 |
RW | 读写模式 |
E | 启用液晶屏 |
DB0-DB7 | 数据和命令使用这些引脚输入 |
LED+ | 背光LED的阳极 |
LED- | 背光LED的阴极 |
这个LCD没有自己的光,所以屏幕后面有一个LED作为显示器的背光。将此 LCD 与 Arduino UNO 连接非常简单,因为 Arduino IDE 提供了一个 LiquidCrystal 库,该库具有许多内置功能,可以更轻松地初始化和打印显示器上的任何内容。本项目中我们主要会用到的LCD功能有:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
洪水预警系统工作原理及源码
一个超声波传感器将被放置在某个基准面,这样发射器和接收器将面对水位。 Arduino UNO 将测量传感器与水位之间的距离。
LCD 会打印它们之间的距离。我们将为洪水水位设置一些基准,当水位达到基准时,我们会将蜂鸣器设置为“高”,LCD 将打印警告洪水的文本。
代码说明
#include
LiquidCrystal lcd(2,3,4,5,6,7);
lcd.begin(16,2);
内置LCD显示库。函数 LiquidCrystal lcd() 获取连接到 Arduino UNO 的数据的引脚号。 Lcd.begin() 启动 16×2 LCD。
pinMode(18,OUTPUT); //trigger pin
pinMode(19,INPUT); //echo pin
pinMode(20,OUTPUT); //buzzer
引脚18和20分别设置为触发器和蜂鸣器的输出引脚,引脚19设置为回声引脚的输入。
t=pulseIn(19,HIGH);
dist=t*340/20000;
时间变量“t”检测触发引脚设置为高电平之前的时间量,该时间进一步用于计算以厘米为单位的时间并将值存储在变量“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。因此,当水位达到 40 厘米或低于 40 厘米时,蜂鸣器将设置为高电平发出警报,液晶显示屏将打印并显示洪水警报消息。
完整源代码:
#include
LiquidCrystal lcd(2,3,4,5,6,7);
float t = 0;
float dist = 0;
void setup()
{
lcd.begin(16,2);
pinMode(18,OUTPUT); //trigger pin
pinMode(19,INPUT); //echo pin
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);
}
}
相关项目:
- 使用 IC 4017 和 555 定时器的交通灯控制电子项目
- 简单的手机充电器电路图 - 5V 从 230V 交流电
- 电子继电器开关电路 - NPN、PNP、N 和 P 通道继电器开关
- 使用 555 定时器和 4017 计数器的 LED 轮盘赌电路图
- 电子断路器 - 原理图和工作原理
- 红外运动探测器电路图
- 简单的触摸感应开关电路
- 使用555定时器IC的基本倍压器电路图
- 双电源电路图 - 230VAC 至 ±12VDC
- 简单的手机充电器电路图 - 5V 从 230V 交流电
工业技术