Этот скетч автоматически включает полив, когда почва становится слишком сухой, и выводит информацию на 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 вместо реле для тихой работы
Этот скетч идеален для автоматизации полива комнатных растений или небольших теплиц!