🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


📊 Проект: индикатор уровня воды в баке на LCD1602

Датчик уровня воды и LCD1602

Датчик уровня жидкости показывает текущее состояние бака на LCD1602 и подаёт сигнал тревоги, если уровень критически низкий — без автоматического насоса, просто удобный мониторинг для баков с ручным доливом.

Как это работает

Простой контактный датчик уровня жидкости работает как выключатель: пока он не контактирует с водой (или другой токопроводящей жидкостью), на его выходе один логический уровень, а как только уровень воды поднимается до датчика и замыкает контакты через воду — сигнал меняется на противоположный. Такой датчик не измеряет уровень плавно, а просто сообщает «вода есть / воды нет» в конкретной точке, где он установлен.

В этом проекте один датчик установлен на минимально допустимой высоте воды в баке: пока вода выше этой точки — всё в порядке, как только она опускается ниже — датчик перестаёт контактировать с жидкостью и сигнализирует о низком уровне звуком и надписью на экране.

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

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Закрепите датчик уровня на внутренней стенке бака на той высоте, ниже которой воду нужно считать критически низкой.
  2. Подключите датчик: сигнал → D2, VCC → 5V, GND → GND.
  3. Подключите LCD1602 с I2C-переходником: SDA → A4, SCL → A5.
  4. Подключите активный зуммер: сигнал → D8, VCC → 5V, GND → GND (активный зуммер пищит сам при подаче питания, в отличие от пассивного, которому нужен сигнал `tone()`).
  5. Проверьте полярность сигнала датчика, опустив и подняв уровень воды вручную — у некоторых моделей логика «вода есть» соответствует LOW, а не HIGH, тогда поменяйте условие в коде на обратное.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

const int levelPin = 2;  // сигнальный пин датчика уровня
const int buzzerPin = 8; // пин активного зуммера
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  pinMode(levelPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
  lcd.init();
  lcd.backlight();
}

void loop() {
  // у вашего датчика логика может быть обратной — проверьте вручную и поменяйте
  // условие "== HIGH" на "== LOW", если показания инвертированы
  bool hasWater = digitalRead(levelPin) == HIGH;

  lcd.setCursor(0, 0);
  lcd.print(hasWater ? "Tank: OK      " : "Tank: LOW!    ");
  digitalWrite(buzzerPin, hasWater ? LOW : HIGH);

  if (!hasWater) {
    Serial.println("Внимание: низкий уровень воды в баке!");
  }

  delay(2000); // уровень воды меняется медленно, частый опрос не нужен
}

Для более точного контроля на несколько уровней (не только «есть/нет воды») можно поставить два-три таких датчика на разной высоте и опрашивать каждый отдельным пином.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🦎 таймер УФ-лампы для террариума на GUVA-S12…🔄 поворотный стол на шаговом двигателе 28BYJ… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 275 ₽ 248 ₽ (экономия 27 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA