Программа

#include <DS1302.h> //Библиотека часов
#include <LiquidCrystal.h>//Библиотека для работы с дисплеем
#include <DHT.h> //Бибилиотека датчика
#define DHTPIN 8 //Определение пина для получения данных
#define DHTTYPE DHT21 //Определение типа датчика

DS1302 rtc(10, 9, 7); //Часы
Time ti;//Переменная даты
LiquidCrystal lcd(12, 11, 2, 3, 4, 5); //Инициализация дисплея с номерами пинов

int Ventil = 6;//Определение пина для управления вентиляторами
int Lampa220 = 13;//Определение пина для управления реле 220 В для лампы
String temp = ""; //Переменная для вывода температуры
String hum = ""; //Переменная для вывода влажности
DHT dht(DHTPIN, DHTTYPE); //Инициализация датчика
int Water220 = A0;// Увлажнитель воздуха
void setup()
{
Serial.begin(9600);// подключаемся к порту
lcd.begin(16, 2); //Установка количества колонок и строк на дисплее
dht.begin(); //Запуск датчика
pinMode(Ventil, OUTPUT);//вентиляторы
pinMode(Lampa220, OUTPUT);//подсветка
pinMode(Water220, OUTPUT);//увлажнитель воздуха
rtc.halt(false); //Запуск часов
//Установим время, и отключим защиту от записи
rtc.writeProtect(false);
// Если у вас в DS1302 уже сохранено установленное время, то нужно за комментировать
//rtc.setDOW(SATURDAY); // Устанавливаем день недели SATURDAY
//rtc.setTime(15, 02, 00); // Устанавливаем время 20:30:10 (24часа формат времени)
//rtc.setDate(20, 01, 2019); // Устанавливаем число месяц и год
}
void loop()
{
delay(1000); //Задержка 1 секунды
ti = rtc.getTime(); //Заносим время в переменную ti
float h = dht.readHumidity(); //Чтение данных влажности
float t = dht.readTemperature();//Чтение температуры в градусах по Цельсию
if (isnan(h) || isnan(t)) // Проверка, все ли данные корректны
return; //Возврат, если данные некорректно считались
temp = "T" + String(t) + "C"; //Строка температуры
hum = "H" + String(h) + "%"; //Строка влажности
//(Помним, что нумерация колонок и строк начинается с 0)
lcd.setCursor(0, 0); //Установим курсор в первую строку
lcd.print(temp); //Вывод температуры
lcd.setCursor(0, 1); //Ставим курсор на вторую строку
lcd.print(hum);//Вывод влажности
lcd.setCursor(8, 0); //Установим курсор в первую строку на 8 символ
lcd.print(rtc.getTimeStr()); //Печатаем время
lcd.setCursor(8, 1); //Ставим курсор на вторую строку на 8 символ
lcd.print(ti.date); //Печатаем дату
lcd.print( "." ); //Печатаем точку
lcd.print(ti.mon); //Печатаем месяц числом
//Управление гроубоксом
if (ti.hour>=9) {digitalWrite(Lampa220, HIGH);} //Если время 9-00, то включаем лампу посредством реле
if (ti.hour>=21) {digitalWrite(Lampa220, LOW);} //Если время 21-00, то выключаем лампу посредством реле
if (t>=29) {digitalWrite(Ventil, HIGH);} //Если температура больше 29 гр, то включаем вентиляторы
if (t<28) {digitalWrite(Ventil, LOW);} //Если температура меньше 28 гр, то выключаем вентиляторы
if (h<57) {digitalWrite(Water220, HIGH);} //Если влажность меньше 57%, то включаем увлажнитель посредством реле
if (h>=62) {digitalWrite(Water220, LOW);} //Если влажность больше 62%, то выключаем увлажнитель посредством реле
if (ti.min==59 && ti.sec>=40) {digitalWrite(Ventil, HIGH);} //Раз в час включаем вентиляторы на 20 секунд
}

Программа контролирует уровень влажности в гроубоксе в пределах от 57 до 62%. Включает лампу в 9-00 и выключает в 21-00. Если температура повышается выше 29 градусов, то включает вентиляторы и выключает, если температура падает ниже 28 градусов. Раз в час включаются вентиляторы на 20 секунд, для проветривания гроубокса.

1+

Изменено:

Гроубокс своими руками: 2 комментария

  1. Дешево, «сердито», просто. Отличный «гайд» для самосборки!
    Только вот двух вентиляторов (по моему опыту), будет недостаточно при добавлении дополнительного освещения, поэтому для желающих повторить, совет:
    Ставьте по 3 вентилятора на вдув/выдув (если компьютерные) — при средних оборотах, почти не шумят, а воздуха прогоняют больше. Можно поставить пару недорогих канальных вентиляторов, запитав их через регуляторы оборотов (недорогие китайские или SSD с управлением по ШИМ).
    Андрей, скажите пожалуйста, где Вы купили крепления для подвесов на лампу? Скажите хотя бы, как они называются. Уже давно ищу!

    0
  2. Двух компьютерных вентиляторов в моем проекте хватает. Я подбирал вентиляторы, а не взял первые попавшиеся. Я бы привел расчеты выбора, но на данный момент нет расчетов под рукой. Вентиляторы были Xilence XF039. Могу только сказать, что благодаря этим вентиляторам, воздух обновляется примерно за 16 секунд. Ночью вентиляторы не доставляют дискомфорта.

    У лампы уже были крепления для подвеса. Но для крепления в гроубоксе я использовал обычные металлические уголки, купленные в магазине крепежа.

    1+

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.