Arduino для гроубокса

Контроллер для гроубокса на Arduino

Контроллер для гроубокса на Arduino.

Ссылки на компоненты:

ЖК-дисплей LCD1602 (синий экран) — http://ali.pub/alnru

Модуль расширителя интерфейса (I2C) — http://ali.pub/dwj5n

4- х канальный релейный модуль — http://ali.pub/1avx6p

Оставьте комментарий:

Юный Технарь:

Помощь проекту:

Деньги можно перечислить на карту Сбербанка России:

4276 5400 2194 5088

Поиск

Последние статьи

Идея — датчик уровня жидкости на тензода…

Идея — датчик уровня жидкости на тензодатчике своими руками.

Фреймворк JeeUI2 в программе FLProg — Ко…

Фреймворк JeeUI2 в программе FLProg — Контролер для полива своими руками.

Мой канал на YouTube

Подпишитесь!

2015, Arduinoprom.ru — блог Чилингаряна Грачика. Все авторские права на тексты принадлежат ему.

При размещении текстов и видеоматериалов на сторонних ресурсах активная гиперссылка ОБЯЗАТЕЛЬНА.

Все логотипы и товарные знаки, размещенные на сайте, принадлежат только их законным владельцам (правообладателям).

Источник

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

Программа контроллера гроубокса. Интерфейс пользователя.

Заключительная статья по разработке первого варианта контроллера для гроубокса. В ней – описание интерфейса пользователя, программы, подготовка среды Arduino IDE, результаты испытаний.

В предыдущей статье я обосновал выбор способа управления гроубоксом – Web-сервер или Web-сайт в собственной WiFi –сети контроллера. На корпусе устройства из элементов контроля и управления – только светодиод состояния.

Интерфейс пользователя.

Теперь подробно, как управлять гроубоксом.

Контроллер создает свою собственную WiFi-сеть, точку доступа. Через нее можно смотреть состояние и управлять гроубоксом через любое устройство, имеющее WiFi – смартфон, планшет, ноутбук.

В общем случае, заходите в настройки смартфона, находите сеть гроубокса (у меня Banan), и подключаетесь к ней.

Дальше есть 2 варианта реакции системы, которые могут быть выбраны в программе:

  • Смартфон автоматически открывает основную страницу Web-сайта.
  • Необходимо открыть браузер и набрать заданное доменное имя либо IP-адрес. Этот способ можно использовать, если не работает предыдущий, например, для ноутбуков, планшетов.

Это основное окно для управления и контроля состояния гроубокса.

Я не большой специалист в HTML-программировании. Поэтому реализовал самое простое оформление Web-страницы. Но получилось наглядно, понятно, удобно. Вряд ли кто-то будет собирать устройство для того, чтобы любоваться красивой картинкой на смартфоне.

Вся информация на экране обновляется каждые 2 секунды.

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

Операция завершается нажатием кнопки ”Отправить”.

Следующий абзац показывает состояние освещения и позволяет задать его параметры.

  • Звездочки ” *** ” красного цвета означают, что освещение включено.
  • Звездочки ”***” черного цвета показывают, что освещение отключено.
  • В начале и конце строки показаны времена включения и выключения освещения.

По ссылке ”установить” открывается страница задания параметров освещения.

Полив происходит с максимальным циклом неделя. Абзац полива показывает:

  • Дни недели, в которые надо поливать. Отмечены жирным шрифтом.
  • Символы ”…..” означают, что в данный момент полив не происходит.
  • Символы ” ’ ‘ ‘ ‘ ‘ ” означают, что в данный момент идет полив.
  • Время перед символами состояния показывает начало полива.
  • Время в конце строки – длительность полива.

Этот абзац, как пример, сообщает, что полив происходит по понедельникам, средам и субботам, в 8 часов вечера, в течение 1 минуты и 15 секунд.

Как задавать параметры полива догадаться не трудно.

Все параметры хранятся во FLASH микроконтроллера, защищены контрольными кодами и при выключении питания не теряются.

Остается рассказать о светодиоде состояния контроллера.

Программа раз в секунду считывает время часов, параметры из FLASH и осуществляет управление реле. Этот цикл является основным. В нем светодиод изменяет свое состояние, т.е. секунду светится, секунду погашен.

Это при нормальной работе устройства. Если в течение времени большем секунды программа не проходит через основной цикл, то светодиод состояния начинает мигать часто, примерно 3 раза в секунду.

Такое может случиться в случае, если ES88266 “отвлечется” на значительное время, например, при подключении к сети WiFi. Это не является ошибкой.

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

Также светодиод частым миганием индицирует ошибку параметров (не соответствие контрольных кодов) и ошибку часов реального времени.

При ошибке параметров отключается управление, использующее соответствующие параметры. При ошибке часов, отключается и освещение, и полив.

Тоже самое о светодиоде состояния в более строгой форме.

  • Мигает редко (секунду светится, секунду погашен) – нормальная работа.
  • Мигает часто (3 раза в секунду) не дольше 20 секунд — ожидание завершения операций WiFi. Бывает редко. Тоже нормальная работа.
  • Мигает часто (3 раза в секунду) дольше 20 секунд – ошибка.
    • Неисправны часы реального времени – аппаратная ошибка.
    • Неправильные параметры во FLASH. Исправляется переустановкой данных.

Подготовка Arduino IDE.

Мы будем разрабатывать программу, и загружать ее в контроллер в среде Ардуино. Необходимо выполнить минимальные действия для подготовки Arduino IDE.

Прежде всего, добавить поддержку нужных нам модулей.

В нижней строке окна Настройки указываем путь для менеджера плат:

Откройте менеджер плат: Инструменты -> Плата -> Менеджер плат.

И установите нужную плату.

Советуют устанавливать более старую версию библиотек поддержки платы.

С ней отсутствуют периодические проблемы при подключении к WiFi сети.

После загрузки в окне Инструменты -> Плата выбрать нужный модуль. У меня ESP-12E.

В предыдущей статье я привел 2 схемы для загрузки программы во FLASH модуля и описал последовательность действий для каждой из них. В остальном, работа в Arduino IDE с ESP-модулями не отличается от стандартных плат Ардуино.

Программное обеспечение контроллера гроубокса.

Программа состоит из 2х параллельно работающих частей: Web-сервера и блока управления.

  • Организует TCP/IP соединение с клиентом.
  • Формирует главную страницу, используя HTTP-протокол.
  • Обрабатывает GET-запросы установки параметров.
  • Формирует страницы установки параметров.

Сейчас объясню, что происходит и какие данные необходимо задать.

Созданы TCP/IP и DNS серверы.

WiFiServer server(80);
DNSServer dnsServer;

Параметры заданы в следующих строках.

const char* ssid = «Banan»; // имя сети устройства
const char* password = «12345678»; // пароль сети устройства
//const char* password = «»; // без пароля
const char* dnsName = «*»; // имя dns
IPAddress apIP(192, 168, 4, 1);

Вам необходимо заполнить их своими данными.

Если вы укажите в качестве имени dns ”*”, то это означает, что любое имя домена будет преобразовано в IP-адрес 192.168.4.1. При подключении к сети WiFi смартфонов, главное окно будет появляться автоматически.

На ноутбуке это может не сработать. Тогда необходимо явно ввести IP-адрес в адресной строке браузера: http://192.168.4.1.

Можно задать конкретное имя dns, например,

const char* dnsName = «b.ru»; // имя dns

В этом случае придется в браузере указывать адрес b.ru.

В основном цикле происходит ожидание подключения клиента. Как только клиент подключается, данные с него проверяются на соответствие HTTP-протоколу и выделяются запросы.

По первому HTTP-запросу клиенту передается главная страница и соединение разрывается.

В заголовке есть команда

client.println(F(«Refresh: 2»)); // обновить страницу автоматически

Она говорит клиенту-браузеру о том, что необходимо через 2 секунды повторить запрос главной страницы. Именно таким образом обеспечивается циклическая передача данных о состоянии контроллера.

Как только пользователь нажимает на ссылку, например ”Установить параметры освещения”, то формируется GET-запрос. Он задан в самой ссылке.

По этому запросу контроллер передает клиенту страницу задания параметров освещения.

На ней пользователь заполняет форму со стандартными HTML-объектами и посылает GET-запрос, в котором указаны параметры освещения.

Контроллер принимает его, устанавливает параметры и опять передает клиенту главную страницу.

В программном блоке управления каждую секунду:

  • Считывается время из часов реального времени. Если часы остановились, то они перезапускаются.
  • Считываются и проверяются на целостность технологические параметры из FLASH.
  • Происходит управление сигналами включения освещения и полива в зависимости от текущего времени и заданных параметров.

Обработка ошибок и реализация сторожевого таймера ESP8266.

ESP8266 имеет свойство периодически, а иногда и навсегда зависать при обработке подключений по WiFi-сети. То ли недоработка внутреннего программного обеспечения, то ли недостаток ресурсов микроконтроллера.

Очевидно, для гроубокса, работающего в круглосуточном режиме это недопустимо.

Чтобы исключить такие ситуации я создал программный сторожевой таймер. В прерывании аппаратного таймера с периодом 50 мс контролируется время прохождения точки, в которой считывается время часов. При нормальной работе это время равно 1 секунде. При превышении его до 1,25 секунды, начинает часто мигать светодиод состояния, и сторожевой таймер отсчитывает время, заданное в строке:

#define WDT_TIME 400 // время сторожевого таймера (* 50 мс)

При превышении его (20 секунд), система перезапускается.

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

#define RTC_SCL 5 // часы (D1)
#define RTC_SDA 4 // часы (D2)
#define LIGHT_PIN 15 // реле освещения _-_ (D8)
#define WATER_PIN 13 // реле полива _-_ (D7)
#define LED_PIN 16 // светодиод (D0)

Загрузить итоговый скетч можно по ссылке.

У меня устройство работает в круглосуточном режиме уже 11е сутки. Все прекрасно, никаких проблем. Только, сегодня обнаружил, отражающая пленка вокруг гроубокса с бананом не сходится. А уже лезет новый лист, который по традиции будет на треть больше предыдущего.

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

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

Дополнение по поводу зависания ESP8266.

Этот параграф пишу в октябре 2021 года на основе данных длительной эксплуатации устройства.

Как я писал выше, ESP8266 может зависать при подключении к сети.

У меня такое бывает. Когда я подключаюсь к WiFi-сети гроубокса, иногда система подвисает на время 10-20 секунд, ни на что не реагирует, светодиод состояния часто мигает, индицируя ошибку. Но через указанное время система обязательно восстанавливается. За почти год эксплуатации гроубокса ни разу не приходилось выключать питание для сброса микроконтроллера.

Но Игорь из Минска нашел решение, позволяющее исправить эту проблему. У него контроллер перестал зависать после установки более старой версии библиотеки. Вот его скрины.

У него стабильно работает именно с этой версией библиотеки.

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

Источник

Гидропоника. Домашняя установка для выращивания растений.

Общие сведения

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

Плюсов у этого метода множество:

  • растения растут быстрее за счёт наличия в воде в достаточном количестве необходимых питательных веществ;
  • нет грязи, что особенно актуально при выращивании растений дома;
  • очень сложно пересушить растения, или забыть их полить — уровень влажности всегда оптимальный;
  • корневая система растений не такая большая как при традиционном созревании, что позволяет направить ресурсы развития на плодоношение, а не на развитие корней.

Видео

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

Конструкционные материалы

  • 1х Тройник ПВХ 110мм
  • 1х Муфта двухраструбная 110мм
  • 2х Заглушка 110мм
  • 2х Хомуты 110мм крепления тройника
  • 1х Горшок
  • Керамзит (мы использовали мелкий в перемешку с мелкими камнями)
  • Питательный раствор
  • 1х Силиконовый шланг 4*6 мм, 1 метр
  • 1х Силиконовый шланг 6*8 мм, 1 метр
  • 1х Воздушный компрессор или насос (например, используемые для аэрации в аквариумистике)
  • 1х Аэратор (камень) для равномерной аэрации воды. Можно обойтись без него, проделав отверстия в силиконовой трубочке
  • 1x Обратный клапан (для исключения попадания воды в воздушный компрессор)
  • 1х Соединитель для трубки, 4мм
  • 1х Set Box XL (конструктор ПВХ)
  • 1х Крепления LCD2004 (конструктор ПВХ)
  • Основа для крепления всех конструкционных элементов
  • Материал для стенок + светоотражатель (у нас — ПВХ, обклеенный фольгой)
  • Расходники в виде клея, герметика, стяжек и пр.

Электроника

  • 1x Piranha UNO (можно использовать и другой контроллер)
  • 1x Trema Shield (для удобства подключения модулей)
  • 1х Поплавковый уровнемер
  • 1x Датчик влажности почвы, емкостной (используем в качестве уровнемера)
  • 1х Реле (Trema-модуль v2.0) или другое реле для коммутации 220В
  • 1х Силовой ключ N-канал или P-канал
  • 1х Символьный дисплей LCD2004 + LCD конвертор в IIC/I2C
  • 1х I2C Hub (Trema-модуль или обычный)
  • 1х Энкодер FLASH-I2C
  • 1х Часы реального времени, RTC
  • 1х Мембранный насос 6-12В модель 280 или модель 385
  • 1х Датчик расхода воды 0.3 — 6л. / мин. (не обязателен, нужен для сбора статистики) + 3-проводной шлейф мама для подключения (например, такой — подробнее в разделе «Схема подключения»)
  • 1х Лампы освещения со всем необходимым для их подключения (патроны, провода и т.п.)
  • 1х Блок питания 9 -12В и током от 1А, например: 9В 1А или 12В 2А
  • 1х Удлинитель для удобного подключения электроники
  • 1х Кулер для вентиляции (в случае, если стенки препятствуют естественной конвекции воздуха)
  • Также вам могут понадобиться Провода

Библиотеки

  • iarduino_I2C_Encoder
  • LiquidCrystal_I2C
  • iarduino_RTC
    При необходимости, ознакомьтесь с нашей инструкцией по установке библиотек в Arduino IDE.

Принцип работы

Для выращивания растений методом гидропоники необходим питательный раствор. Концентрат для его приготовления можно приобрести в специализированных магазинах. Готовится он по инструкции на упаковке и уже в таком виде подаётся в ёмкость, в которой находится горшок с растением. Для долива также используется уже приготовленный раствор. Подробнее о конструкции нашей установки и принципах выращивания растений методами гидропоники вы можете посмотреть в этом видео.

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

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

Модуль RTC отвечает за отсчёт времени. Управление производится с помощью энкодера.

Подсветка экрана работает в дневное время постоянно, а в ночное можно настроить (в коде прошивки): будет она включена или нет. В любом случае, она включается при активности пользователя и, в случае выключения, отключается через определенное время.

Реализованные защиты

  • Защита от переполнения ёмкости — с помощью поплавкового уровнемера.
  • Защита от переполнения ёмкости посредством ограничения времени работы насоса — если уровень поды не увеличивается в течение заданного времени, насос выключается, а на экране появляется соответствующее уведомление. Работа системы возобновляется после любых действий пользователя в меню.
  • Защита от отключения питания. Модуль RTC самостоятельно ведёт учёт времени, поэтому при отключении питания оно не сбивается. Все настройки и статистика сохраняются в энергонезависимую память в 00:00. То есть в случае отключения питания, при последующем запуске системы применятся настройки, установленные на момент предыдущего дня. Статистика также отобразится на момент прошлого дня.

Схема подключения

Особенности подключения

  • Установка расходомера не обязательна — он лишь выполняет функцию сбора статистики о количестве израсходованной воды. Для того, чтобы подключить его к Trema Shield’у, необходимо припаять 3-проводной шлейф «мама» вместо его стандартного штекера.
  • Освещение подключается через нормально замкнутые контакты реле. То есть, когда ток на катушку реле не подаётся, лампочка горит. Такое решение обусловлено минимизацией времени подачи питания на реле, ведь большую часть времени суток освещение будет включено.
  • Мы рекомендуем поставить керамический конденсатор параллельно насосу (можно припаять прямо на его выводы вместе с проводами). Это позволит уменьшить помехи и увеличить стабильность работы схемы.

Управление системой

При включении попадаем в меню Посадки.

Выбираем общее количество дней роста (это тот период, который обычно указан на упаковке с семенами). Также выбираем текущий день. По умолчанию — первый, но если вы используете систему для уже выросших растений, то указываете другой (сколько дней этим растениям).

Далее идёт Время досвета — это то время, в которое автоматически будет включаться и выключаться освещение. Рекомендуется около 16 часов в сутки — мы указали с 7-ми до 23-х.

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

С этого момента система работает автоматически. Но рассмотрим остальные пункты меню.

При нажатии кнопки энкодера мы попадаем в главное меню, при этом свет выключается, чтобы не мешать настройке.

В Посадке мы уже были, давайте зайдём в пункт Слив. Пока мы находимся здесь, насос не будет включаться и мы можем выполнять работы по смене воды. Мы меняли воду примерно раз в 1,5 — 2 недели, при этом зацветания не происходило.

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

Последний пункт меню — Настройки. Здесь можно настроить время и дату, а также мощность освещения.

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

Ну и вот как выглядит главный экран. В первой строке — дата и время, далее — суммарный расход воды и электричества. Строчкой ниже — количество оставшихся дней, и шкала, заполняющаяся по мере роста.

Как только число дней подойдёт к концу, надпись сменится на Готово.

Сбросить статистику по расходу воды и электричества можно, если установить число дней в меню Посадка, равным 0.

В начале скетча вы найдёте дополнительные настройки, которые можете изменить при необходимости.

Навигация по экранам выглядит следующим образом:

Скетч

Особенности загрузки

Перед загрузкой программы в контроллер, необходимо раскомментировать строку с установкой времени в RTC-модуль watch.settime(i[0],i[1],i[2],i[3],i[4],i[5]); (находится в начале блока setup()). После загрузки необходимо закомментировать эту строку и снова загрузить прошивку. Это необходимо для корректной установки времени в RTC-модуль. В противном случае, отсчёт времени начнётся заново при возобновлении питания после его отключения.

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

Источник

Adblock
detector