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

使用 Arduino 的早期洪水检测系统 - 源代码

早期洪水 监控 系统 - 电路和项目源代码

在发展中国家和非发展中国家,洪水都是造成人类和动物生命财产损失的大规模自然灾害。全球许多地方每年都会发生由海洋地震、飓风、降雨和其他自然灾害引起的洪水。

在降雨期间,各个地理区域未管理的排水系统导致洪水泛滥,许多人丧生。如果我们有一些系统可以让我们对洪水进行早期预警,那么我们就可以挽救人们的生命。一种利用技术检测水位升高并提前提醒人们疏散的系统。

所以在这个项目中,我们为您带来了一个原型,它可以用来检测一些池塘、大坝或水库的水位,然后使用蜂鸣器发出警报。这只是一个小型原型,我们将在其中使用 Arduino UNO、超声波传感器、蜂鸣器、LCD 和一些连接线。

相关项目:

早期洪水检测电路图

需要的组件

相关项目:

现在,让我们一一了解这个基本电路中用到的元件。

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++语言编写,非常易学易用。

相关项目:

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

相关项目:

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 模块和物体之间的距离。

相关帖子:

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

相关项目:


工业技术

  1. C# 使用
  2. 使用 Symphony Link 作为数据中心的漏水检测系统
  3. 使用 LM35 的基于温度的设备控制系统
  4. 仅使用 Arduino 的 DTMF 解码器
  5. 使用 Arduino 和 RFID 和 Python 的考勤系统
  6. 使用 Arduino Uno 的人体检测机器人系统
  7. Arduino 报警系统:SERENA
  8. 森林火灾监测和探测系统(带短信警报)
  9. 基于 Arduino、Windows 和 Azure 的跌倒检测系统
  10. 基于Arduino的碰撞检测预警系统
  11. 使用智能手机控制您的灯光系统
  12. 在行业中使用 Biz4intellias 物联网驱动的漏水检测系统的 5 大优势