Arduino-система раннего обнаружения наводнений — исходный код и схема
Система раннего мониторинга наводнений — схема и исходный код проекта
В развивающихся и развитых странах наводнения — масштабное природное бедствие, приводящее к гибели людей, животных и имуществу. Наводнения из-за подводных землетрясений, ураганов, дождей и других стихий происходят во многих частях мира ежегодно.
Во время дождей неуправляемые дренажные системы в различных регионах приводят к наводнениям и жертвам. Если бы существовала система раннего оповещения об повышении уровня воды, можно было бы спасти жизни. Система, использующая технологии для обнаружения повышения уровня воды и предварительного оповещения людей для эвакуации.
В этом проекте представлен прототип для обнаружения уровня воды в пруде, плотине или водохранилище с оповещением через зуммер. Это маштабный прототип с Arduino UNO, ультразвуковым датчиком, зуммером, LCD-дисплеем и соединительными проводами.
Связанные проекты:
- Автоматическая система полива и ирригации — схема, код и отчет
- Схема датчика дождя — детектор снега, воды и дождя
Схема системы раннего обнаружения наводнений

Необходимые компоненты
- Arduino UNO
- Ультразвуковой датчик HC-SR04
- Зуммер (Buzzer)
- LCD-дисплей 16×2
- Перемычки / соединительные провода
Связанные проекты:
- Измерение расстояния с Arduino и ультразвуковым датчиком
- Регулируемый источник питания на Arduino UNO — схема и код
Теперь изучим компоненты базовой схемы по отдельности.
Arduino UNO
Arduino — открытая платформа для разработки электронных проектов. Легко программируется, стирается и перепрограммируется. Существует много плат: Arduino UNO, Nano, Mega, LilyPad и др. с разными характеристиками.
В проекте используется Arduino UNO для автоматического управления бытовыми приборами. На базе микроконтроллера ATmega328, тактовая частота 16 МГц. Поддерживает 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 (5В) или DC-джек (7–20В). Набортный стабилизатор 3.3В для слабого тока.
ATmega328 работает по USART, SPI, I2C: 0 (Rx) и 1 (Tx) — USART; SDA (A4) и SCL (A5) — I2C; SS (10), MOSI (11), MISO (12), SCK (13) — SPI.
Связанные проекты:
- Автоматический дверной звонок с детекцией объектов на Arduino
- Автоматический ночной светильник на Arduino
Ультразвуковой датчик HC-SR04
HC-SR04 — ультразвуковой датчик для бесконтактного измерения расстояний. Принцип как у РАДАРа и СОНАРа — точное измерение.
Теоретически до 450 см, практически 2–80 см с точностью 3 мм. Питание 5В, ток <15 мА, частота 40 кГц.

Датчик имеет передатчик и приемник. Расчет расстояния по формуле:
Расстояние = Скорость × Время
Передатчик излучает ультразвуковую волну. Если она отражается от объекта в зоне действия, приемник ловит отраженную волну. Для расчета по формуле нужны скорость и время.
Скорость ультразвука ≈ 330 м/с. Время измеряется микроконтроллером. Ножка Echo в HIGH на время полета волны туда-обратно. Так получаем расстояние до объекта.
Связанные проекты:
- Автоматическая система управления железнодорожными шлагбаумами — схема и код
- Детектор скорости автомобиля — схема и исходный код
Интерфейс HC-SR04 с Arduino UNO
HC-SR04 совместим с Arduino, PIC, Raspberry Pi и др. В проекте интерфейс с Arduino UNO. У модуля 4 ножки: VCC, GND, Trig, Echo.
Питание HC-SR04: 5В и GND от Arduino. Trig и Echo — вход/выход, подключаются к GPIO Arduino. Для измерения: Trig на HIGH 10 мкс, потом LOW.
Это генерирует ультразвуковую волну 40 кГц к объекту и обратно к приемнику. Если волна обнаружила объект, Echo становится HIGH на время возврата. Это время × скорость волны (330 м/с) = расстояние.
Связанные материалы:
- Умная домашняя автоматизация — схема и код
- PWM программирование Arduino и его функции
LCD-дисплей 16×2
Подключение 16×2 LCD к Arduino UNO простое. Существует много типов LCD, мы используем 16×2 — 2 строки по 16 символов.
Модуль имеет драйвер HD44780 (Hitachi) для интерфейса с микроконтроллерами. Работает в 4-битном и 8-битном режимах. В 4-битном нужно 4 данных пина, в 8-битном — 8. Используем 4-битный — меньше проводов, проще схема.

Описание ножек 16×2 LCD:
| Ножка LCD | Описание |
|---|---|
| VSS | Земля (GND) |
| VCC | +5В питание |
| VEE | Регулировка контраста |
| RS | Выбор регистра: Режим данных или команд |
| RW | Чтение или запись |
| E | Enable LCD |
| DB0-DB7 | Данные и команды |
| LED+ | Анод подсветки |
| LED- | Катод подсветки |
У LCD нет собственной подсветки — за экраном LED. Подключение к Arduino простое благодаря библиотеке LiquidCrystal в Arduino IDE. Основные функции для проекта:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); lcd.begin() lcd.clear() lcd.print()
Работа системы раннего обнаружения наводнений и исходный код
Ультразвуковой датчик устанавливается на базовом уровне так, чтобы передатчик и приемник были направлены к уровню воды. Arduino UNO измеряет расстояние между датчиком и водой.
LCD выводит расстояние. Устанавливается порог уровня наводнения — когда вода достигает порога, зуммер включается (HIGH), LCD выводит тревожное сообщение.
Разбор кода
#include
LiquidCrystal lcd(2,3,4,5,6,7);
lcd.begin(16,2);
Подключена встроенная библиотека LCD. LiquidCrystal lcd() принимает номера пинов данных к Arduino. lcd.begin() инициализирует 16×2 LCD.
pinMode(18, OUTPUT); // Trig
pinMode(19, INPUT); // Echo
pinMode(20, OUTPUT); // Buzzer
Пины 18 и 20 — выходы (Trig, Buzzer), пин 19 — вход (Echo).
t = pulseIn(19, HIGH);
dist = t * 340 / 20000;
Переменная времени t фиксирует длительность HIGH на 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);
}
Порог наводнения: расстояние < 40 см. Тогда зуммер = HIGH (тревога), LCD выводит сообщение об эвакуации.
Полный исходный код:
#include
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);
}
}
Связанные проекты:
- Управление светофором на IC 4017 и таймере 555
- Простая схема зарядки телефона 5В от 230В
- Схема электронного реле — NPN, PNP, N и P-канал
- Схема LED рулетки на 555 и 4017
- Электронный автомат — схема и принцип
- ИК-детектор движения
- Простой сенсорный выключатель
- Базовый удвоитель напряжения на 555
- Двухполярный источник питания 230ВAC → ±12ВDC
- Простая схема зарядки телефона 5В от 230В
Промышленные технологии
- Освоение операторов using в C#: импорт, псевдонимы и статические директивы
- Symphony Link: надежное обнаружение утечек воды для дата‑центров
- Система управления температурой на базе LM35 с микроконтроллером AT89S52
- Создание DTMF-декодера на Arduino без внешних микросхем
- Надежная система учета рабочего времени на Arduino с RFID и Python
- Робот для поиска людей на базе Arduino Uno: пошаговая интеграция датчиков
- SERENA: Пользовательская система сигнализации на Arduino Mega 2560 с TFT Touchscreen
- Система мониторинга лесных пожаров в реальном времени с SMS-уведомлениями
- Продвинутая система обнаружения падений: Arduino + Windows IoT + Azure Cloud
- Почему IoT-детекция утечек воды Biz4Intellia повышает промышленную эффективность — 5 ключевых преимуществ