Архив Июль 2019

Система автополива

Всем привет!

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

Система состоит из следующих компонентов:

Блок управления – сердце системы. Здесь находится Аккумуляторы, Arduino, модуль времени DS3231, дисплей, преобразователи напряжения и органы управления.

Могут понадобиться

Беспроводной радио модуль Arduino NRF24L01
Драйвер двигателей на L293
Контроллер Arduino UNO
TM1637 7-сегментный светодиодный модуль-дисплей
Беспроводная система управления на 433 Мгц

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

Распределение воды между растениями можно дополнительно отрегулировать с помощью гребенки с кранами

Все технические элементы системы можно спрятать за шторы и горшки, чтобы сильно не бросались в глаза

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

1. Автономная работа от аккумуляторов около 5 месяцев
2. Система поддерживает управление 3-мя помпами. К каждой помпе можно подключить гребенку с 2-4 кранами и дополнительно регулировать потоки воды. Итого получаем возможность подключить до 12 растений 
3. Время снимается с отдельного независимого модуля часов DS3231. Помпа срабатывает при наступлении часа, указанного в настройке (например 8:00) . 
4. На дисплей выводится информация
5. Настройки полива указываются в коде программы, их можно поменять, перепрошив Arduino

Пояснения по отображаемой на дисплее информации:
Первая строка – шапка таблицы. Каждая строка показывает информацию по соответствующей помпе. Первый столбец – показывает период работы (ПР) . Например при значении «5» — помпа будет срабатывать каждые 5 дней. Второй столбец – час работы (ЧР) – час в начале которого включится помпа. Третий столбец – время работы (ВР) – продолжительность работы помпы в секундах. Четвертый столбец – дней осталось (ДО) – показывает сколько осталось дней до ближайшего срабатывания. Дата и время также выводятся на дисплей.

Система не имеет обратной связи, поэтому настройки нужно подбирать опытным путем. Лучше всего группировать растения близкие по требованиям к поливу (какие-то хорошо переносят засуху, другие наоборот любят обильный полив) и размерам горшков.
Настройки задаются примерно следующим образом: каждые 5 дней включать помпу в 8:00 на 30 секунд.
Ниже будет указано, в какой части кода эти настройки находятся.

В коде программы можно отключить 2-ю и 3-ю помпы. В этом случае на экран будет выводиться информация только по включенным помпам. 

Автономность обеспечивается благодаря:
• Питанию от аккумуляторов формата 18650
• Ардуино и уходит в глубокий сон (Powerdown) и просыпается по Watсhdog
• У стабилизатора напряжения Arduino откушена левая нога 
• Дисплей во время работы находится в выключенном состоянии. Для активации дисплея нужно удерживать кнопку выхода из сна около 10 секунд.
• С модулей выпаяны все индикаторные светодиоды

Система потребляет около 3мА, 1 помпа потребляет около 350 мА в режиме работы.

Основные Детали:

• Пищевой контейнер для корпуса
• Китайский клон Arduino nano
•  DS3231 Модуль реального времени
• Аккумуляторы формата 18650 
• Повышающий модуль до 5В (ток около 1 А)
• Понижающий модуль до 3,3В для питания дисплея
• Дисплей Nokia 5110
• TP4056 модуль для зарядки (+защита) аккумулятора 
• Индикатор зарядки аккумулятора
• Различная «рассыпуха»: полевые транзисторы, резисторы, конденсаторы (электролитические и керамические) 
•  Выключатели и кнопки 

Монтажная «схема» устройства:

Пояснения по схеме:

1. 4 аккумулятора формата 18650 соединены параллельно. Общая емкость – около 13000 мА/ч.
2. Аккумулятор подключен к зарядно — защитному модулю TP4056. Зарядка осуществляется через разъем micro USB от телефонной зарядки. Зарядка нужна с током не менее 1А. Примерное время полной зарядки – 13 -14 часов. Индикаторные светодиоды можно выпаять и вывести на корпус.
3. Далее через выключатель подключен повышающий преобразователь до 5В. Он будет питать большую часть компонентов схемы, включая помпы. С падением уровня заряда аккумуляторов напряжение снизится с 4,2В до 2,7В, что для работы схемы не достаточно. Модуль обеспечит стабильное напряжение. На выход модуля ставится фильтр из электролитического и керамического конденсаторов. Электролитический конденсатор выполняет сглаживающую, стабилизирующую роль. Керамический конденсатор служит для борьбы с высокочастотными помехами. Если у модуля «пищит» дроссель во время работы, для устранения этого явления можно поставить ещё дополнительный электролитический конденсатор на вход модуля. Электролитические конденсаторы емкостью 1000 мкФ на 6,3В. Керамические конденсаторы подойдут от 1-2 мкФ. В схеме использованы на 10 мкФ, потому, что у меня было много лишних.
4. Для питания дисплея нужно напряжение 3,3В, поэтому добавляется понижающий преобразователь с аналогичными фильтрами из конденсаторов.
5. Модуль часов DS3231, нужен для более точного отсчета времени. Светодиод Power (1) отпаян у модуля DS3231. Сделано это для целей энергосбережения. Если вы используете обычные батарейки (не аккумуляторные), то нужно отпаять резистор (2). Модуль рассчитан на аккумуляторные батарейке в том числе заряжает их. Если батарея обычная, зарядный ток быстро приведет ее в негодность.

6. Основной мозг системы – платформа Arduino nano. Для целей энергосбережения нужно отпаять все светодиоды (или хотя бы только Power), а также откусить левую ногу стабилизатора напряжения. \

7. Управление помпы осуществляется через полевые транзисторы. Подойдут любые, которые открываются 5В напряжением и способны коммутировать ток от 1А. Сначала я использовал готовые. Я спаял батарею из полевых транзисторов + резисторы (100 Ом для защиты Arduino, 10к Ом для подтягивания затвора транзистора к земле, чтобы мосфет закрывался)+ также припаял разъемы KF 301-2P для фиксации проводов

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

Дополнительные моменты по сборке:
• Емкость с водой, должна обязательно располагаться ниже горшков, иначе есть риск, что после отключения помп вода продолжит литься.
• Расстояние от дна емкости до конца трубки не должно превышать 70см. На большую высоту помпе будет сложнее поднять воду.
• На мини помпу с Али отлично подходят прозрачные шланги 6х1,5 мм
• Важно чтобы отверстие помпы для забора воды не упиралась в стенку емкости с водой, иначе нормального напора не будет.
• Для крепления шланга на помпу нельзя использовать железные детали (хомуты, проволоку и т.д.) Всё ржавеет очень быстро.
• У помпы короткие провода. Их скорее всего придется наращивать. Для герметизации проводов лучше всего использовать термоклей, а сверху термоусадку. 

Логика работы программы:

• Arduino выходит из сна
• Показания модуля DS3231 (дата и время) присваиваются переменным
• При изменении даты меняется значение счетчика прошедших дней
• Если период работы (настройка) совпадает с числом прошедших дней, проверяется час
• При совпадении часа (настройка) и часа из модуля времени включаем помпу на время указанное в настройках
• Arduino уходит в сон
• Если удерживать кнопку выхода из сна подается питание на дисплей и Arduino пробуждается

Настройки полива указываются вот в этой части кода: