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

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


🌱 Проект: комбинированный контроль почвы — влажность и температура на LCD1602

Датчики YL-69, DS18B20 и LCD1602

YL-69 и DS18B20 вместе выводят на LCD1602 полную картину состояния почвы — влажность подскажет, нужен ли полив, а температура покажет, не слишком ли холодно для корней.

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

Два датчика измеряют совершенно разные физические величины разными способами. YL-69 — это аналоговый датчик, который оценивает влажность почвы по электрическому сопротивлению между двумя металлическими зубцами: чем больше воды в почве, тем лучше она проводит ток и тем ниже сопротивление, что плата видит как изменение напряжения на аналоговом входе. DS18B20 — цифровой датчик температуры, который можно закопать прямо в землю (он герметичный в проводном исполнении) и получать температуру корневой зоны, а не воздуха.

Оба значения выводятся одновременно на один дисплей LCD1602, подключённый через I2C-переходник — это позволяет использовать всего 2 провода (SDA и SCL) вместо 6-7 при прямом подключении дисплея, что освобождает пины под сами датчики.

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

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

  1. Подключите YL-69: AO → A0, VCC → 5V, GND → GND.
  2. Подключите DS18B20: сигнал → D2, между сигналом и VCC — подтягивающий резистор 4.7 кОм (если его нет на самом модуле датчика).
  3. Подключите LCD1602 с I2C-переходником: SDA → A4, SCL → A5 (для Arduino Uno/Nano; на других платах пины I2C могут отличаться).
  4. Воткните зубцы YL-69 в почву на нужную глубину, а DS18B20 закопайте рядом, в зоне корней.
  5. Прежде чем полагаться на проценты влажности, откалибруйте границы `map()` под свою конкретную почву: замерьте показание в сухой земле и в только что политой.

Скетч

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

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

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2); // адрес 0x27 или 0x3F в зависимости от переходника
const int soilPin = A0;

void setup() {
  Serial.begin(9600);
  sensors.begin();
  lcd.init();
  lcd.backlight();
}

void loop() {
  sensors.requestTemperatures();
  float t = sensors.getTempCByIndex(0);
  int soil = analogRead(soilPin); // чем суше почва, тем выше значение (меньше проводимость)
  int soilPercent = map(soil, 1023, 300, 0, 100); // калибруется под свою почву
  soilPercent = constrain(soilPercent, 0, 100); // на случай если реальные показания выйдут за калибровочные границы

  lcd.setCursor(0, 0);
  lcd.print("Soil: ");
  lcd.print(soilPercent);
  lcd.print("%   ");
  lcd.setCursor(0, 1);
  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print("C  ");

  Serial.print("Влажность: "); Serial.print(soilPercent);
  Serial.print("%, сырое значение: "); Serial.print(soil);
  Serial.print(", температура: "); Serial.println(t);

  delay(2000);
}

Границы `map()` для влажности (1023 и 300) — ориентировочные, их стоит уточнить по своей почве в сухом и влажном состоянии через Serial-монитор.

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

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

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

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

← 🛢️ автозаполнение бака по датчику уровня воды📉 предсказание погоды по тренду давления на … →

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

Все 2 товара сразу в корзину: 217 ₽ 195 ₽ (экономия 22 ₽)

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

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

Корзина


Поиск



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