1. Подробная постановка задачи

конец апреля 2012
Итак, поздняя осень 2014 года, до дачи раньше конца апреля не добраться - снега кругом полтора-два метра - и в ожидании наступления очередного дачного сезона, долгими зимними вечерами, можно заняться детальной проработкой вопросов автоматизации.
Нужно принять во внимание, что хотя со стороны теплица и выглядит как здоровый прозрачный сарай размером 12 х 4 м, на самом деле внутри она разделена на две равных секции 6 х 4 м - фактически, это две теплицы, одна из которых предназначена для выращивания томатов, вторая - для выращивания огурцов.
Для каждой из этих агрокультур требуется свой микроклимат (в пределах возможностей, конечно) и свой режим полива. 1. раз
2. два
3. три


Структурно вся интеллектуальность теплицы естественным образом раскладывается на следующие подсистемы:
1. подсистема управления,
2. подсистема дистанционного контроля,
3. метео-станция,
4. подсистема полива,
5. подсистема вентиляции.

Все подсистемы решено делать частично самостоятельными, чтобы при необходимости замена/доработка какой-то одной подсистемы не тянула за собой необходимости перепаивать всё целиком.
В общем, этакий динозавр, у которого каждым отдельным жизненно-важным органом управляет свой собственный мозг. Ну, может и не совсем мозг, а так, мозжечок :)
atmega328

Все подсистемы, за исключением дистанционного контроля, строятся вокруг микроконтроллеров AtMega168/328/644 фирмы Atmel - популярные, хорошо документированные, многократно описанные, с множеством примером использования самой разной периферии, да и просто они мне очень нравятся.


Подсистема управления (она же Master-контроллер)
Несмотря на то, что со связью более-менее хорошо, выносить всё управление за пределы дачи не годится. А ну как БС отключат от электричества за долги, или еще какая оказия приключится. Подсистема управления должна уметь работать автономно даже в отсутствие внешней связи и уметь самостоятельно (хоть и очень кратко из-за ограниченности ресурсов) отображать происходящие в системе процессы в понятной для пользователя форме.
Master-контроллер тянет на себе довольно много функций и поэтому построен на AtMega328. И то удалось вписаться с большим трудом, выкраивая память буквально по байтам. Так что уже есть планы в дальнейшем заменить микроконтроллер на AtMega644.

Master-контроллер инициирует обмен информацией с подсистемой дистанционного контроля (и через нее далее с внешним миром), запрашивает информацию от slave-контроллеров подсистем, выдает им управляющие команды, выводит всякую существенную и несущественную информацию прямо на собственный дисплей (если вдруг другие средства коммуникаций отказали) и вообще рулит Вселенной.
Единственное - для Master-контроллера было решено отказаться от собственного пульта управления: вписывать пользовательский интерфейс в достаточно скромные возможности (памятуя, что любая программа на 80% состоит из пользовательского интерфейса :) показалось чрезмерным, эта функция возложена на подсистему дистанционного контроля.


Подсистема дистанционного контроля
RaspberryPI

Получает от Master-контроллера запросы на все случаи жизни. Например, Master-контроллер сообщает в подсистему дистанционного контроля все текущие состояния прочих подсистем, Master-контроллер запрашивает, нет-ли каких распоряжений от пользователя (и если есть - то получает и обрабатывает такие команды). Подсистема дистанционного контроля проверяет наличие связи с внешним миром, отправляет туда текущее состояние всей системы в целом, проверяет наличие команд управления, поступивших от внешнего пользователя, и если таковые есть - транслирует их в Master-контроллер.
И, наконец, подсистема дистанционного контроля реализует пользовательский интерфейс в наиболее удобной форме.

Поскольку реализуемые данной подсистемой задачи крайне ресурсоемкие, она выполнена на почти полноценном Linux-сервере с Apache, MySQL, PHP, казино, гетерами и т.д.
Почти полноценном потому, что аппаратно это - RaspberryPI, возможности скромные, но для наших целей в самый раз.
На фоне других подсистем эта обладает прямо-таки эпическими вычислительными возможностями и ресурсами :) .


Метео-станция (она же Meteo-Slave-контроллер)
Требования к ней достаточно скромные - опрашивать датчики температуры и влажности воздуха в помидорной и огуречной секциях (другая информация для теплицы не актуальна) и выдавать их по запросу в Master-контроллер.

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


Подсистема полива (она же Water-Slave-контроллер)
Тут все сложнее. Система полива по трудоемкости изготовления - это в первую очередь трубопроводы для подачи воды, а уж потом электронные потроха. Кроме того, поливать тепличные растения холодной водой напрямую из дачного водопровода (даже если повезло, и вода в водопроводе есть) - нельзя. Вода предварительно должна согреться.
Поэтому в нашем случае реализованы две независимые системы капельного полива (своя для каждой секции теплицы), которые питаются из одного резервуара-накопителя емкостью 400 литров, в котором вода предварительно нагревается забортным воздухом до приемлемой температуры.
Для нормального функционирования капельного полива требуется давление в системе от 1 кгс/см2 и более. Сессно, поднимать бак с водой на высоту 10 м в дачных условиях - дело нереальное, поэтому наша водонапорная башня высотой всего 2,2 м. Интенсивность полива, разумеется, получилась меньше заявленной, но нам же воду не ведрами таскать - так что пусть льется, сколько нужно.

Интеллектуальная часть данной подсистемы по команде от Master-контроллера открывает/закрывает краны полива для каждой из секций теплицы, и кран заполнения резервуара-накопителя, определяет текущий уровень воды в резервуаре, по запросу от Master-контроллера выдает текущее состояние подсистемы, здесь же реализовано ручное автономное управление кранами.
Контроль за переполнением (переопустошением) резервуара осуществляется здесь же - соответствующие краны запираются подсистемой независимо от полученных извне команд.


Подсистема вентиляции (она же Fan-Slave-контроллер)
вентилятор со складными лопастями

Вентиляция в теплице при слишком высоких температурах всегда выполнялась тривиально - нужно было открыть нараспашку все форточки и все двери, обеспечив приток внутрь забортного воздуха (благо, он у нас редко бывает теплее +24). К сожалению, конструкция дверей и форточек такова, что удобно и эффективно реализовать их автоматическое открытие/закрытие не представляется возможным, а переделывать всё, да еще и ставить актуаторы или какие-то другие привода - долго и довольно затратно.
Было принято решение реализовать принудительное проветривание вентиляторами с запирающимися в нерабочем положении лопастями, чтобы исключить приток забортного воздуха, когда это не нужно - по одному для каждой из секций теплицы.
Интеллектуальная часть данной подсистемы по команде от Master-контроллера запускает/останавливает вентиляторы, здесь же реализовано автономное ручное управление вентиляторами.
2 Августа, 2016  18:50 Просмотров: 766 Печать
© 2024 All right reserved CasaRural - Aspid Soft systems