Материалы:
* Ардуино (Uno, Nano или подобный)
* Модуль таймера (например, DS3231)
* Датчик влажности почвы (например, YL-69)
* Реле (5 В)
* Водяной насос (5 В или 12 В, в зависимости от мощности реле)
* Блок питания (5 В или 12 В, в зависимости от напряжения насоса)
* Трубка и фитинги для подачи воды
Схема:
Подключите компоненты следующим образом:
* Датчик влажности почвы: GND (земля) к GND Ардуино, VCC (питание) к 5 В Ардуино, DO (цифровой выход) к любому аналоговому входу Ардуино.
* Модуль таймера: GND к GND Ардуино, VCC к 5 В Ардуино, SCL (часовая линия) к A5 Ардуино, SDA (линия данных) к A4 Ардуино.
* Реле: GND к GND Ардуино, VCC к 5 В Ардуино, IN (управляющий вход) к любому цифровому выходу Ардуино.
* Насос: GND к GND источника питания, VCC к выходу VCC реле.
Код:
«`
#include
#include
#define SOIL_SENSOR_PIN A0
#define RELAY_PIN 7
#define MOISTURE_THRESHOLD 500 // Перенастраиваемый порог влажности
char daysOfTheWeek[7][12] = {«Sunday», «Monday», «Tuesday», «Wednesday», «Thursday», «Friday», «Saturday»};
DS3231 rtc;
void setup() {
Serial.begin(9600);
Wire.begin();
rtc.begin();
rtc.setDateTime(__DATE__, __TIME__);
pinMode(SOIL_SENSOR_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
// Получить текущее время
DateTime now = rtc.now();
// Запросить влажность почвы
int moistureLevel = analogRead(SOIL_SENSOR_PIN);
// Проверить, нуждается ли растение в поливе
bool needsWatering = moistureLevel < MOISTURE_THRESHOLD;
// Проверить, разрешено ли поливать в текущее время
bool isWateringAllowed = now.hour() >= 6 && now.hour() <= 22;
// Полить растение, если оно нуждается в поливе и разрешено
if (needsWatering && isWateringAllowed) {
digitalWrite(RELAY_PIN, HIGH);
Serial.println("Watering the plant...");
delay(60000); // Поливать в течение 60 секунд
digitalWrite(RELAY_PIN, LOW);
} else {
Serial.println("No watering needed.");
}
// Отобразить текущие настройки
Serial.print("Date: ");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(", ");
Serial.print(now.day());
Serial.print("/");
Serial.print(now.month());
Serial.print("/");
Serial.println(now.year());
Serial.print("Time: ");
Serial.print(now.hour());
Serial.print(":");
Serial.print(now.minute());
Serial.println(":");
Serial.print(now.second());
Serial.println();
delay(60000); // Ждать 60 секунд перед следующим циклом
}
```
Инструкции:
1. Соберите схему.
2. Загрузите код в Ардуино.
3. Установите в модуле таймера текущее время и дату.
4. Подключите систему подачи воды к насосу.
5. Разместите датчик влажности почвы во влажной почве.
6. Настройте порог влажности в коде при необходимости.
Принцип работы:
* Датчик влажности почвы измеряет уровень влажности почвы.
* Ардуино считывает данные с датчика и определяет, нуждается ли растение в поливе.
* Модуль таймера обеспечивает текущее время, которое используется для определения того, разрешено ли поливать растение в настоящее время.
* Если необходимо полить, реле включается, активируя водяной насос. После определенного периода полива реле выключается.