Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Arduino-система раннего обнаружения наводнений — исходный код и схема

Система раннего мониторинга наводнений — схема и исходный код проекта

В развивающихся и развитых странах наводнения — масштабное природное бедствие, приводящее к гибели людей, животных и имуществу. Наводнения из-за подводных землетрясений, ураганов, дождей и других стихий происходят во многих частях мира ежегодно.

Во время дождей неуправляемые дренажные системы в различных регионах приводят к наводнениям и жертвам. Если бы существовала система раннего оповещения об повышении уровня воды, можно было бы спасти жизни. Система, использующая технологии для обнаружения повышения уровня воды и предварительного оповещения людей для эвакуации.

В этом проекте представлен прототип для обнаружения уровня воды в пруде, плотине или водохранилище с оповещением через зуммер. Это маштабный прототип с Arduino UNO, ультразвуковым датчиком, зуммером, LCD-дисплеем и соединительными проводами.

Связанные проекты:

Схема системы раннего обнаружения наводнений

Arduino-система раннего обнаружения наводнений — исходный код и схема

Необходимые компоненты

Связанные проекты:

Теперь изучим компоненты базовой схемы по отдельности.

Arduino UNO

Arduino — открытая платформа для разработки электронных проектов. Легко программируется, стирается и перепрограммируется. Существует много плат: Arduino UNO, Nano, Mega, LilyPad и др. с разными характеристиками.

В проекте используется Arduino UNO для автоматического управления бытовыми приборами. На базе микроконтроллера ATmega328, тактовая частота 16 МГц. Поддерживает 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 (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.

Связанные проекты:

Ультразвуковой датчик HC-SR04

HC-SR04 — ультразвуковой датчик для бесконтактного измерения расстояний. Принцип как у РАДАРа и СОНАРа — точное измерение.

Теоретически до 450 см, практически 2–80 см с точностью 3 мм. Питание 5В, ток <15 мА, частота 40 кГц.

Arduino-система раннего обнаружения наводнений — исходный код и схема

Датчик имеет передатчик и приемник. Расчет расстояния по формуле:

Расстояние = Скорость × Время

Передатчик излучает ультразвуковую волну. Если она отражается от объекта в зоне действия, приемник ловит отраженную волну. Для расчета по формуле нужны скорость и время.

Скорость ультразвука ≈ 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 м/с) = расстояние.

Связанные материалы:

LCD-дисплей 16×2

Подключение 16×2 LCD к Arduino UNO простое. Существует много типов LCD, мы используем 16×2 — 2 строки по 16 символов.

Модуль имеет драйвер HD44780 (Hitachi) для интерфейса с микроконтроллерами. Работает в 4-битном и 8-битном режимах. В 4-битном нужно 4 данных пина, в 8-битном — 8. Используем 4-битный — меньше проводов, проще схема.

Arduino-система раннего обнаружения наводнений — исходный код и схема

Описание ножек 16×2 LCD:
Ножка LCD Описание
VSSЗемля (GND)
VCC+5В питание
VEEРегулировка контраста
RSВыбор регистра: Режим данных или команд
RWЧтение или запись
EEnable 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);
  }
}

Связанные проекты:

Промышленные технологии

  1. Освоение операторов using в C#: импорт, псевдонимы и статические директивы
  2. Symphony Link: надежное обнаружение утечек воды для дата‑центров
  3. Система управления температурой на базе LM35 с микроконтроллером AT89S52
  4. Создание DTMF-декодера на Arduino без внешних микросхем
  5. Надежная система учета рабочего времени на Arduino с RFID и Python
  6. Робот для поиска людей на базе Arduino Uno: пошаговая интеграция датчиков
  7. SERENA: Пользовательская система сигнализации на Arduino Mega 2560 с TFT Touchscreen
  8. Система мониторинга лесных пожаров в реальном времени с SMS-уведомлениями
  9. Продвинутая система обнаружения падений: Arduino + Windows IoT + Azure Cloud
  10. Почему IoT-детекция утечек воды Biz4Intellia повышает промышленную эффективность — 5 ключевых преимуществ