Все исходные коды - открыты, получить их можнно по ссылкам в конце статьи.
Возникла необходимость не просто автоматизировать рост растений, но и сделать настройку гроубокса максимально комфортной - задавать параметры света, температуры и прочего удалённо, без программирования.
Выполненные решения
Первое решение - это написание прошивки для Arduino UNO, которая бы принимала настройки в виде G-кода, подобно 3D-принтеру. G-команды позволяют :
- включать/выключать исполнительные устройства
- снимать показания с датчиков
- и самое главное - включать и настраивать автоматику: циклы освещения и вентилятора, удержание влажности и т. п.
Команды в гроубокс отправляются через serial-порт. Поэтому второе решение - это написание графического интерфейса, позволившее бы с компьютера:
- мониторить и управлять гроубоксом через тыканье мышкой
- создавать управляющие программы для разных растений и режимов их развития без программирования
- загружать в гроубокс программы из G-кода
Демонстрация программы
При первом запуске видим окошко:
Давайте нажмём на "Создать управляющую программу", чтобы создать нашу первую программу из G-команд. Увидим окно с пустыми значениями:
Кнопки с чёрным овалом посередине - это кнопка реадктирования (овал - это так отображён карандашик)
В нижнем поле отображаются G-команды, генерируемые при нажатии кнопок. В верхнем блоке можно установить значения исполнительных устройств, которые гроубокс будет устанавливать при старте. Так как мы включим автоматику, то оставим значения пустыми:
Включим автоматику, нажав на галочки:
Настроем автоматику "Резкий переход" для вытяжки:
Это значит, что вытяжка будет включаться (значение = 255) на 1 минуту, при этом в выключенном (значение = 0) состоянии будет 719 минут, т. е. почти 12 часов.
Настроем автоматику "Плавный переход" для белого света:
Это значит, что свет будет включаться на 840 минут (14 часов), а выключен - на 600 минут (10 часов). Можно указать длительность рассвета и заката - тогда включение и выключение будет плавным. Это сработает, если у вас свет представлен 12-вольтовыми светодиодами, подключёнными через транзисторный ключ. Если через симистр и светодиодные прожекторы (как у меня), то свет будет мигать вместо плавного перехода.
Если у вас есть дальний красный свет, то через автоматику резкого или плавного перехода можно настроить включение дальнего красного в момент заката, например, а синий свет включать на рассвете. То есть, один вид автоматики можно включать и настраивать для разных исполнительных устройств независимо.
Настроем автоматику "Климат-контроль" для увлажнителя:
Тут всё просто: увлажнитель будет включаться при влажности менее 70% и выключаться при более 75%. Это для экзотический растений, любящих влажный тёплый климат.
Теперь сохраним наши настройки в виде G-код файла:
Полученый файл можем открыть:
И изменить настройки.
Если нажмём "Подключиться по Serial", увидим окно настройки подключения:
Выберим порт, скорость. Таймауты - в секундах. После нажатия на "ОК":
Увидим уже знакомое окошко, добавись лишь блок с показаниями датчиков и кнопка обновления показаний. Теперь при нажатии кнопок будут отправляться соответствующие команды сразу в гроубокс. Ещё можно загружать в гроубокс ранее составленные файлы с G-кодом. Достаточно нажать на этот пункт менбю и выбрать файл:
G-код, который мы только что составили, соответствует настройкам по-умолчанию в Arduino-прошивке гроубокса.
Вот так просто настраивать гроубокс под нужды разных растений.
Большие планы
- Добавить подключение к гроубоксу через WiFi
- Разработать (в составе существующего приложения) инструмент для генерации G-кода по описанию растения. Например, в зависимости от вида реакции на тень или фотопериодичности растения, указание режима роста - генеративный или вегативный, реакции семени на дальний красный (некоторые семена начинают проклёвываться) и т. д.
- Добавить больше датчиков и исполнительных устройств для увеличнения контроля за окружающей средой
После выполнения этих планов я приступлю к более амбициозным планам, требующих анализа научных работ по исследованию морфогенеза растений. Для чего? Расскажу в следующих статьях.
Всё это - лишь начало большого проекта.
А какие функции у гроубокса Вы бы хотели?
Ссылки
- Прошивка для гроубокса: https://github.com/syeysk/sy-cnc-growbox
- Программа для управления гроубокса: https://github.com/syeysk/sy-cnc-growbox-py