Контроль отопления и вентиляции на базе ARDUINO своими руками (Часть 1. Подготовка материалов)

Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри
Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри

Всем привет!

Многие читатели моего блога просят выложить схему устройства управления микроклиматом на базе Arduino, о котором я рассказывал в этой статье. Но так сложилось, что изначально никакой схемы нарисовано не было, и прибор создавался как творческий проект — каждый новый компонент добавлялся спонтанно, по ходу сборки, каждая новая функция и строчка программного кода возникала уже, казалось, после окончательного завершения проекта. В итоге проект дорабатывался несколько раз, как по аппаратной, так и по программной части.

И вот однажды один из подписчиков попросил меня изготовить для него подобную систему управления микроклиматом, но с более широким функционалом. И в этот раз я решил не обделять читателей 🙂  и предоставить не только схему и скетч, но и подробно описать весь процесс разработки системы в мельчайших подробностях.

 

 

Это первая статья из серии, посвященной сборке системы контроля отопления и вентиляции на базе Arduino. И как видно из заголовка, речь пойдет о подготовке необходимых материалов.

Для начала, несколько слов о функционале будущей системы. Проектируемая система будет выполнять следующие функции:

  • Включение и отключение вентиляции в зависимости от влажности и температуры в помещении
  • Включение и отключение отопления в зависимости от влажности и температуры
  • Включение вентиляции утром и вечером на заданный интервал времени для принудительного проветривания
  • Управление освещением с помощью кнопки-таймера
  • Управление водонагревателем — включение утром и вечером на заданное количество минут для подогрева воды
  • Запись показаний всех датчиков и состояний реле на SD-карту (логгирование событий)
  • Чтение настроек прибора с карты памяти (возможность настройки прибора при помощи компьютера)

Как видите, список функций значительно расширился. Особенно интересны для реализации будут функции управления освещением и логгирования событий. Возможно, в процессе сборки возникнут новые идеи, и функционал будет дополнен 🙂

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

Управление микроклиматом на Arduino. Материалы для сборки
Управление микроклиматом на Arduino. Материалы для сборки

Основные части системы:

  1. Arduino Nano 3.0
  2. Модуль часов DS1307 или DS3231
  3. Модуль micro-SD card adapter
  4. Датчики влажности и температуры DHT11 (2 шт)
  5. Модули реле (у меня 2 модуля: 2 реле + 4 реле)
  6. Блок питания 12 вольт 1А (для Arduino)
  7. Блок питания 5 вольт 1А (для модулей реле)
  8. Дисплейный модуль LCD2004 I2C
  9. Монтажная плата 5х7 см (будущая материнская плата)
  10. Батарейка CR2032 3V
  11. SD карта, отформатированная на компьютере в FAT32
  12. Управляющие кнопки (3 шт)
  13. Светодиоды (3 шт)
  14. Резисторы номиналом от 330 Ом до 1 кОм (3 шт)
  15. Соединительные провода
  16. Различные разъемы и коннекторы (по необходимости)
  17. Высоковольтный выключатель (250V 6A)
  18. Корпус для прибора (в статье будет сборка без корпуса)

Из необязательного можно добавить макетную плату — для тестирования компонентов по отдельности перед установкой на материнскую плату, а также программатор — для смены загрузчика ардуино. О смене загрузчика и зачем это нужно будет рассказано в одной из следующих статей.

Перед началом сборки все компоненты желательно протестировать по отдельности.

Схема подключения и дальнейший процесс сборки будут опубликованы в продолжении статьи.

А пока предлагаю вашему вниманию занимательное видео о том, как я тестировал модуль часов RTC DS1307 и внутренний таймер Arduino. Суть такова, что модуль часов и ардуино при запуске однократно синхронизируют время между собой, и далее ардуино выводит показания часов RTC и своих внутренних часов (SYS) на LCD экран каждую секунду. Мне было интересно, возникнет ли через некоторое время расхождение в показаниях времени, и как скоро оно возникнет. В следующем видео показан результат этого эксперимента.

Как видите, расхождение в 2 секунды появилось уже спустя сутки, а спустя еще 20 часов расхождение составило уже целых 5 секунд! Кто из них бежит вперед, а кто отстает, судить сложно, поскольку все относительно, но пока эксперимент продолжается, и позже эти данные будут сравнены с часами на компьютере 🙂

Ниже приведен программный код для воспроизведения этого эксперимента.

#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#include <LiquidCrystal_I2C.h>

tmElements_t tm;
LiquidCrystal_I2C lcd(0x27,20,4);
String str = "";

void setup() {

  lcd.init();
  lcd.backlight();
  
  lcd.setCursor(0, 0);

  lcd.clear();
  
  if (RTC.read(tm)) {
    setTime(makeTime(tm));  
  } else {
    if (RTC.chipPresent()) {
      lcd.print("The DS1307 is stopped");
    } else {
      lcd.print("DS1307 read error!");
    }
    //delay(9000);
    while(1);
  }
}

void loop() {

  //lcd.clear();
  
  if (RTC.read(tm)) {
    lcd.setCursor(0, 0);
    str = "RTC Time=";
    str = str + print2digits(tm.Hour) + ":" + print2digits(tm.Minute) + ":" + print2digits(tm.Second);
    lcd.print(str);

    lcd.setCursor(0, 1);
    str = "RTC Date=";
    str = str + String(tm.Day, DEC) + "." + String(tm.Month, DEC) + "." + String(tmYearToCalendar(tm.Year), DEC);
    lcd.print(str);
  }

//а тут выведем системное время

    lcd.setCursor(0, 2);
    str = "SYS Time=";
    str = str + print2digits(hour()) + ":" + print2digits(minute()) + ":" + print2digits(second());
    lcd.print(str);

    lcd.setCursor(0, 3);
    str = "SYS Date=";
    str = str + String(day(), DEC) + "." + String(month(), DEC) + "." + String(year(), DEC);
    lcd.print(str);
    
  delay(1000);
}

String print2digits(int number) {
  String s = "";
  if (number >= 0 && number < 10) {
    s = "0";
  }
  s = s + String(number, DEC);
  return s;
}

9 мыслей о “Контроль отопления и вентиляции на базе ARDUINO своими руками (Часть 1. Подготовка материалов)”

  1. Автору респект. Проект хорош.
    Очень жду продолжения и второй части.
    А можно хотя бы скетч. Сделать не терпится автоматику в курятник.
    Водонагреватель при желании можно будет заменить на управление лазом в курятник.

  2. зачем воду греть целый день. если никого нет. экономия электричества, очевидно.

  3. Интересно, а зачем водонагревателем так управлять? У него же встроенная система поддержания температуры и в постоянно включённом состоянии на мой взгляд он работает наиболее оптимально

    1. Ну это зависит от самого водонагревателя 🙂 Я не уточнял, видимо там что-то нестандартное 🙂

Добавить комментарий для Андрей Отменить ответ

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