Меню

Автоматика для теплицы ардуино

Умная теплица на Arduino с управлением/мониторингом по GSM/GPRS

Описание:

В данном проекте мы создадим умную теплицу, которая способна управлять освещением, проветриванием и автополивом, имеет на борту часы реального времени и GSM/GPRS Shield для удалённого управления всей системой, а так же для мониторинга текущего состояния.

Видео:

Логика:

Данное устройство позволит вам организовать полностью автоматический режим работы вашей теплицы или гроу-бокса (на случай, если вы выращиваете овощи/фрукты зимой в домашних условиях). Система позволяет управлять сразу 3 важными параметрами: освещение, температура, орошение.

Логика довольна проста:

  • Датчик освещённости фиксирует количество света, попадающего на растение и при понижении его ниже критической отметки — включает дополнительное освещение;
  • Датчики влажности и температуры фиксируют влажность и температуру как воздуха, так и земли, благодаря чему вовремя происходит проветривание или закрытие теплицы, дабы урожай не вымерз и не сгорел;
  • Наличие модуля часов реального времени позволит задать точное время дня (или ночи), когда насос будет подавать воду к растению. При этом длительность полива тоже можно задать!
  • И дополнением к данной системе станет наш GSM/GPRS Shield, благодаря которому вы сможете как следить за состоянием вашего зелёного друга, так и вовремя задать требуемый режим или выполнить команду просто отправив смс на устройство;

Следуя инструкциям нашего урока в скором времени вы сможете обзавестить своей собственной «умной теплицей», которая будет радовать вас круглый год!

Нам понадобится:

  • 1x Piranha ULTRA;
  • 1х GSM/GPRS Shield;
  • 1х Trema Shield;
  • 1х Trema-модуль Зуммер;
  • 1х Trema-модуль Pull switch UP/DOWN;
  • 1х Trema-модуль I2C-FLASH датчик температуры и влажности;
  • 1х Датчик температуры DS18B20;
  • 1x Trema-модуль Емкостной датчик влажности почвы;
  • 1x Trema-модуль Датчик освещенности;
  • 1х Trema-модуль Часы реального времени DS3231;
  • 4х Trema-модуль Кнопка;
  • 2х Flash-модуль Электромеханическое I2c-реле;
  • 1х I2C-Hub;
  • 1х I2C-LCD-дисплей;
  • 1х Мембранный насос;
  • 1х Светодиодная или УФ-лента;
  • 1х Линейный привод;
  • 1х провод красный;
  • 1х провод чёрный;
  • 1х Источник питания (12В);
  • 1х Силиконовый шланг;

Для реализации проекта необходимо установить следующие библиотеки:

О том, как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.

Подключение:

Для удобства подключения мы воспользуемся Trema Shield для Arduino.

Для начала подключим GSM/GPRS Shield к Piranha ULTRA:

Стоит добавить, что в том, случае, если вы не будете использовать в проекте GSM/GPRS Shield, для нормальной работы устройства будет достаточно и версии Arduino/Piranha UNO.

Подключим Trema Shield к GSM/GPRS Shield:

Подключим к Trema Shield 4 Trema-кнопки:

Кнопка «НАЗАД» Trema Shield
S D5
V VCC
G GND
Кнопка «ВПЕРЁД» Trema Shield
S D6
V VCC
G GND
Кнопка «ПРИНЯТЬ/ВОЙТИ» Trema Shield
S D9
V VCC
G GND
Кнопка «ОТМЕНИТЬ/ВЫЙТИ» Trema Shield
S D10
V VCC
G GND

Подключим к Trema Shield Trema Зуммер:

Зуммер Trema Shield
S D4
V VCC
G GND

Подключим к Trema Shield Trema Датчик температуры:

Датчик температуры DS18B20 Модуль PULL SWITCH UP/DOWN Trema Shield
Жёлтый провод 2 D2
Красный провод V VCC
Синий провод G GND

Подключим к Trema Shield емкостной Trema Датчик влажности почвы:

Датчик влажности почвы Trema Shield
S A0
V VCC
G GND

Подключим к Trema Shield Trema Датчик освещённости:

Датчик освещённости Trema Shield
S A1
V VCC
G GND

Подключим к Trema Shield Trema I2C Hub:

I2C Hub Trema Shield
SCL SCL
SDA SDA
Vcc Vcc
GND Gnd

Подключим к Trema I2C Hub через I2C Trema Часы реального времени:

Часы реального времени I2C Hub
SCL SCL
SDA SDA
Vcc Vcc
GND Gnd

Подключим к Trema I2C Hub через I2C Trema Датчик температуры и влажности I2C-Flash:

По умолчанию все модули FLASH-I2C имеют установленный адрес 0х09.

— Перед подключением 1 модуля к шине I2C настоятельно рекомендуется изменить адрес модуля.

— При подключении 2 и более FLASH-I2C модулей к шине необходимо в обязательном порядке предварительно изменить адрес каждого модуля, после чего уже подключать их к шине.

Более подробно о том, как это сделать, а так же о многом другом, что касается работы FLASH-I2C модулей, вы можете прочесть в этой статье.

Датчик температуры и влажности I2C Hub
SCL SCL
SDA SDA
Vcc Vcc
GND Gnd

Подключим к Trema I2C Hub через I2C ЖК Дисплей:

ЖК Дисплей I2C Hub
SCL SCL
SDA SDA
Vcc Vcc
GND Gnd

Подключим к Trema I2C Hub через I2C Flash электромеханическое реле:

По умолчанию все модули FLASH-I2C имеют установленный адрес 0х09.

— Перед подключением 1 модуля к шине I2C настоятельно рекомендуется изменить адрес модуля.

— При подключении 2 и более FLASH-I2C модулей к шине необходимо в обязательном порядке предварительно изменить адрес каждого модуля, после чего уже подключать их к шине.

Более подробно о том, как это сделать, а так же о многом другом, что касается работы FLASH-I2C модулей, вы можете прочесть в этой статье.

Электромеханическое реле I2C Hub
SCL SCL
SDA SDA
Vcc Vcc
GND Gnd

Подключим второе I2C Flash электромеханическое реле к первому:

По умолчанию все модули FLASH-I2C имеют установленный адрес 0х09.

— Перед подключением 1 модуля к шине I2C настоятельно рекомендуется изменить адрес модуля.

— При подключении 2 и более FLASH-I2C модулей к шине необходимо в обязательном порядке предварительно изменить адрес каждого модуля, после чего уже подключать их к шине.

Более подробно о том, как это сделать, а так же о многом другом, что касается работы FLASH-I2C модулей, вы можете прочесть в этой статье.

Электромеханическое реле Электромеханическое реле
SCL SCL
SDA SDA
Vcc Vcc
GND Gnd

Подключим к первому реле мембранный насос:

Подключим к первому реле светодиодную ленту:

Подключим ко второму реле линейный толкатель:

Скетч проекта:

Алгоритм работы всех систем:

Всю логику работы теплицы можно разбить на несколько частей:

  • Информационное табло;
  • Освещение;
  • Проветривание;
  • Полив;

Рассмотрим работу каждой части более подробно.

Информационное табло.

После подачи питания на устройство, происходит:

  • настройка сенсоров и датчиков;
  • устанавливаются режимы работы всех систем, взятые либо из постоянной памяти (должны были быть записаны в массив CurrentResumeOrBorderSettingValue при предыдущем запуске), либо из массива с настройками по умолчанию ( DefaultResumeOrBorderSettingValue );
  • опрос всех датчиков и вывод их значений на ЖК-дисплей. Обратите внимание, что на дисплее поочерёдно отображаются 2 страницы, а время смены страниц задано переменной CHANGE_DEFAULT_SCREEN_TIME :
    • 1 страница отображает показатели температуры и влажности земли и воздуха;
    • 2 страница отображает время, значение освещённости и состояние установленных режимов работы каждой из систем (освещение, проветривание, полив);
  • дополнительно в скетч добавлена функция автовозврата к стартовому табло при простое устройства дольше, чем указано в DEFAULT_SCREEN_RETURNING_TIME ;

Освещение.

После нажатия на любую клавишу, кроме ESC , на дисплей выводится меню. И первым разделом на экране будет «Настройка работы системы освещения«. При нажатии на кнопку ОК вы перейдёте во внутреннее меню данной настройки. Что она в себя включает:

  • Настройка режима работы системы освещения. Варианты значений: Выкл/Вкл/Авто
    • Выкл — выключить питание реле, отвечающее за подачу напряжения на освещение;
    • Вкл — включить питание реле, отвечающее за подачу напряжения на освещение;
    • Авто — перевести работу системы в автоматический режим, где освещение будет включаться или выключаться самостоятельно по условию. Про само условие и его настройку будет сказано далее.
  • Настройка границы минимальной освещённости. Интервал значений: от 0 до 1023
    • Условие работы системы освещения в автоматическом режиме, где заданное число будет являться нижней границей, при переходе которой сверху вниз на реле будет подано питание и освещение будет включено.
    • Дополнительно, в условие добавлен порог HUMIDITY_GAP , который исключит переключения питания реле на границе освещённости.
  • Реальный показатель освещённости. В правом верхнем углу дисплея отображается реальное значение освещённости в настоящий момент. Это сделано для удобства установки порога освещённости, так как в этом случае есть на что ориентироваться.

Проветривание

Вторым пунктом основного меню после «Настройка работы системы освещения» идёт «Настройка работы системы проветривания«. При нажатии на кнопку ОК вы переходите во внутреннее меню настройки, включающее:

  • Настройка режима работы системы проветривания. Варианты значений: Выкл/Открыть/Закрыть/Авто
    • Выкл — выключить питание реле, отвечающее за подачу напряжения на линейный толкатель;
    • Открыть — включить питание реле, отвечающее за подачу напряжения на линейный толкатель для открытия окна;
    • Закрыть — включить питание реле, отвечающее за подачу напряжения на линейный толкатель для закрытия окна;
    • Авто — перевести работу системы в автоматический режим, где проветривание будет включаться или выключаться самостоятельно по условию.
  • Настройка минимальной температуры. Интервал значений: от 0 до 49
    • Условие закрытия окна в автоматическом режиме при переходе установленного значения сверху вниз.
    • Если установлено значение, превышающее значение установленной максимальной температуры, то значение будет автоматически снижено до значения (Максимальная температура — 1);
  • Настройка максимальной температуры. Интервал значений: от 1 до 50
    • Условие открытия окна в автоматическом режиме при превышении установленного значения.
    • Если установлено значение меньше, чем значение установленной минимальной температуры, то значение будет автоматически увеличено до значения (Минимальная температура + 1);

Полив.

Следующим пунктом меню будет «Настройка работы системы полива«. При нажатии кнопки ОК на дисплей будет выведено внутреннее меню, состоящее из следующих пунктов:

  • Настройка режима работы системы полива. Варианты значений: Выкл/Вкл/Авто
    • Выкл — выключить питание реле, отвечающее за подачу напряжения на насос;
    • Вкл — включить питание реле, отвечающее за подачу напряжения на насос;
    • Авто — перевести работу системы в автоматический режим, где полив будет включаться по условию.
  • Настройка времени суток для старта полива (час). Интервал значений: от 0 до 23
    • Параметр, отвечающий за время дня (конкретный час), когда полив будет включен автоматически.
  • Время (длительность) работы полива (в секундах). Интервал значений: от 10 до 300
    • Параметр, отвечающий за продолжительность работы насоса.

Дополнительные настройки:

Последним в списке меню идёт раздел «Дополнительные настройки«. Раздел включает в себя:

  • Настройки часов реального времени. Включает в себя 6 подразделов, с помощью которых можно выставить все необходимые значения:
    • Часы. Интервал значений: от 0 до 23
    • Минуты. Интервал значений: от 0 до 59
    • Секунды. Интервал значений: от 0 до 59
    • День недели. Интервал значений: от 0 до 6
    • День месяца. Интервал значений: от 1 до 31
    • Месяц. Интервал значений: от 1 до 12
    • Год. Интервал значений: от 0 до 99
  • Тест реле. В данный пункт входит 4 подпункта, ассоциированные с каждым из 4-х каналов I2C-реле. При выборе необходимого канала и подтверждения включения тестовой проверки, на реле будет подаваться напряжение в течении времени, указанного в RELE_TEST_FULL_TIME ;
  • Настройки работы системы оповещения (зуммер). Данный пункт отвечает за настройку звукового оповещения. Варианты значений: Выкл/Вкл/Авто
    • Выкл — выключить зуммер;
    • Вкл — включить зуммер;
    • Авто — перевести работу системы в автоматический режим, где звуковое оповещение будет включаться или выключаться по следующему условию:
      • Если хотя бы 1 из вышеперечисленных систем (освещение, проветривание, полив) установлена НЕ в автоматический режим работы, то после перевода работы зуммера в автоматический режим будет производиться отслеживание всех необходимых значений датчиков и при превышении или критическом понижении значений относительно установленных границ зуммер будет издавать прерывистый звук (время включения и выключения зуммера задано в ZUMMER_WORKING_TIME и ZUMMER_NOT_WORKING_TIME ) до тех пор, пока параметр не вернётся в допустимый диапазон значений;
      • Если хотя бы 1 из вышеперечисленных систем (освещение, проветривание, полив) установлена в ручном режиме на включение, то зуммер так же будет издавать прерывистый звук, сигнализирующий о том, что система включена в ручном режиме;
      • Для того, чтобы зуммер не издавал звуков ни в одной из вышеперечисленных ситуаций, достаточно перевести его в режим «Выкл«;

Работа с GSM/GPRS Shield:

Приятным дополнением ко всей системе «умной» теплицы будет использование GSM/GPRS Shield для её удалённого мониторинга и управления.

В скетче есть возможность с помощью флага GSM_USING_FLAG включить или полностью выключить поддержку работы данной платы расширения, тем самым сократив количество используемой памяти:

  • Размеры скетча при выключенной поддержке GSM/GPRS:
    • FLASH: 25802 байт;
    • ОЗУ: 1050 байт;
  • Размеры скетча при включенной поддержке GSM/GPRS:
    • FLASH: 45526 байт;
    • ОЗУ: 1680 байт;

Далее мы рассмотрим те возможности, которые предоставляет эта плата расширения в данном проекте.

Всего в проекте есть 10 команд, помощью которых можно управлять всей системой или получать от неё данные. Вот эти команды (при отправке кавычки не указываются!):

  • Настройка режима работы системы освещения: команда «LR +» (интервал значений: -/+/A)
  • Настройка минимального значения освещённости: команда «LMIN 200» (интервал значений: 0-1023)
  • Настройка режима работы системы проветривания: команда «ARR A» (интервал значений: -/O/C/A)
  • Настройка минимальной температуры: команда «ARMIN 0» (интервал значений: 0-49)
  • Настройка максимальной температуры: команда «ARMAX 29» (интервал значений: 1-50)
  • Настройка режима работы полива: команда «APR +» (интервал значений: -/+/A)
  • Настройка времени включения полива: команда «APTIME 20» (интервал значений: 0-23)
  • Настройка продолжительности работы команда «APDELAY 150» (интервал значений: 10-300)
  • Задать время для часов реального времени: команда «TIME 12:43» (интервал значений: 0-23:0-59)
  • Получить данные о состоянии системы: команда «INFO«
  • Полный список команд: команда «HELP«

Источник статьи: http://lesson.iarduino.ru/page/smart_greenhouse

Читайте также:  Газон некст каталог деталей
Adblock
detector