🛒
0 товар.
0 руб.
Логотип

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

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

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

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

YL-69 и DS18B20 выводят на LCD1602 полную картину состояния почвы.

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

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

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

Разводка модулей у разных производителей отличается — если на вашей плате контакты называются иначе, сориентируйтесь по маркировке.

  1. YL-69: AO → A0, VCC → 5V, GND → GND.
  2. DS18B20: сигнал → D2, подтягивающий резистор 4.7 кОм между сигналом и VCC.
  3. LCD1602 с модулем I2C: SDA → A4, SCL → A5, адрес обычно 0x27 или 0x3F — если дисплей пустой, попробуйте второй адрес.
  4. Подстроечным резистором на самом модуле I2C или на LCD выставьте контраст, если экран пустой или показывает только чёрные блоки.

Скетч

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

#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);
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);
  Serial.print("Почва: "); Serial.print(soilPercent);
  Serial.print("% Температура: "); Serial.println(t);

  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  ");
  delay(2000);
}
                

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

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

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

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

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

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

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

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

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

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

Корзина

Поиск


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