Этот скетч автоматически включает полив, когда почва становится слишком сухой, и выводит информацию на LCD дисплей и в Serial Monitor.
Необходимые компоненты:
Плата Arduino (Uno, Nano и др.)
Датчик влажности почвы (например, FC-28)
Релейный модуль (для управления насосом)
LCD дисплей 1602 (I2C)
Водяной насос 5-12V
Источник питания для насоса (если насос не 5V)
Резистор 10 кОм (опционально для датчика)
Провода
Скетч
#include <LiquidCrystal_I2C.h>
// Настройка LCD (адрес I2C, размер дисплея)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Пины
#define SOIL_MOISTURE_SENSOR A0 // Датчик влажности почвы
#define RELAY_PIN 7 // Управление реле
#define PUMP_ON_TIME 3000 // Время работы насоса (мс)
// Пороговые значения влажности (калибруйте под свои условия)
const int DRY_SOIL = 600; // Значение для сухой почвы
const int WET_SOIL = 300; // Значение для влажной почвы
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // Выключаем реле изначально
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Soil Moisture:");
}
void loop() {
int moistureValue = analogRead(SOIL_MOISTURE_SENSOR);
int moisturePercent = map(moistureValue, DRY_SOIL, WET_SOIL, 0, 100);
moisturePercent = constrain(moisturePercent, 0, 100);
// Вывод на LCD
lcd.setCursor(0, 1);
lcd.print("Value: ");
lcd.print(moistureValue);
lcd.print(" (");
lcd.print(moisturePercent);
lcd.print("%) ");
// Вывод в Serial Monitor
Serial.print("Moisture: ");
Serial.print(moistureValue);
Serial.print(" (");
Serial.print(moisturePercent);
Serial.println("%)");
// Управление поливом
if (moisturePercent < 30) { // Если почва сухая
lcd.setCursor(13, 1);
lcd.print("WET!");
digitalWrite(RELAY_PIN, LOW); // Включаем насос
delay(PUMP_ON_TIME); // Работа насоса
digitalWrite(RELAY_PIN, HIGH); // Выключаем насос
delay(1000); // Пауза перед следующим измерением
} else {
lcd.setCursor(13, 1);
lcd.print("OK ");
}
delay(2000); // Интервал между измерениями
}Как это работает?
Датчик влажности измеряет уровень влажности почвы (0-1023).
Преобразование значений:
map() преобразует сырое значение в проценты
constrain() ограничивает диапазон 0-100%
Управление насосом:
Если влажность <30%, включается реле и насос на 3 секунды
Визуализация:
LCD показывает сырое значение и проценты
Serial Monitor дублирует данные для отладки
Подключение компонентов
Датчик влажности FC-28:
VCC → 5V
GND → GND
AOUT → A0 (аналоговый вход)
Релейный модуль:
VCC → 5V
GND → GND
IN → 7 (цифровой пин)
LCD 1602 (I2C):
Стандартное подключение (SDA→A4, SCL→A5)
Насос:
Подключается через реле к отдельному источнику питания
Калибровка системы
Запустите скетч и посмотрите значения:
Полностью сухая почва - запомните значение (DRY_SOIL)
Политая почва - запомните значение (WET_SOIL)
Подстройте пороги в коде:
const int DRY_SOIL = 600; // Ваше значение const int WET_SOIL = 300; // Ваше значение
Улучшения
Добавьте кнопку для ручного запуска полива
Реализуйте WiFi-мониторинг через ESP8266
Добавьте датчик уровня воды в резервуаре
Используйте MOSFET вместо реле для тихой работы
Этот скетч идеален для автоматизации полива комнатных растений или небольших теплиц!

