Оглавление:

APIS - Автоматизированная система полива растений: 12 шагов (с изображениями)
APIS - Автоматизированная система полива растений: 12 шагов (с изображениями)

Видео: APIS - Автоматизированная система полива растений: 12 шагов (с изображениями)

Видео: APIS - Автоматизированная система полива растений: 12 шагов (с изображениями)
Видео: БОКОВУШЕЧКА У ТУАЛЕТА в плацкарте 2024, Ноябрь
Anonim
APIS - Автоматизированная система полива растений
APIS - Автоматизированная система полива растений

ИСТОРИЯ: (следующая эволюция этой системы доступна здесь)

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

Вот видео полива: поливочный цикл

Так появился APIS:

У нас есть два растения красного острого перца, которые едва «пережили» несколько наших отпусков и на данный момент почти считаются членами семьи. Они пережили сильную засуху и чрезмерный полив, но всегда каким-то образом восстанавливались.

Идея создания системы полива растений на основе Arduino была чуть ли не первой идеей, как Arduino можно было бы применить в качестве проекта домашней автоматизации. Так была построена простая система полива растений.

Однако в версии 1 не было никаких указаний на влажность почвы, и не было способа сказать, собирался ли он поливать растения или полив был через несколько дней.

Любопытство, как мы все знаем, убило кошку, и Версия 2 была построена с 4-значным 7-сегментным модулем для постоянного отображения текущей влажности.

Этого было недостаточно. Следующий вопрос: «Когда в последний раз поливал растения»? (Поскольку мы редко бывали дома, чтобы увидеть это). В версии 3 7-сегментный модуль также использовался для отображения того, как давно произошел последний цикл полива (в виде бегущей текстовой строки).

Однажды ночью в 4 часа утра начался полив, разбудив всех. Разочарование… Выявив, что отключать APIS на ночь и включать днем, чтобы предотвратить полив посреди ночи, слишком много, были добавлены часы реального времени, которые переводили устройство в спящий режим в ночное время как часть Версии 4.

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

На этом все не закончилось. Я заметил, что датчик влажности имеет тенденцию довольно быстро разрушаться, вполне возможно, из-за того, что он (по замыслу) находился под постоянным напряжением, и, следовательно, между датчиками был постоянный электрический ток (эрозия анода). Дешевый почвенный зонд из Китая продержался около недели. Даже гальванизированный гвоздь «съел» за месяц. Зонд из нержавеющей стали держался лучше, но я заметил, что даже он сдался. Версия 6 включает датчик только на 1 минуту каждый час (и все время во время полива), что значительно снижает эрозию (~ 16 минут в день против 24 часов в сутки).

Идея:

Разработайте систему полива растений со следующими возможностями:

  1. Измерьте влажность почвы
  2. При достижении заранее установленной отметки «низкая» влажность включите водяной насос и поливайте растения, пока не будет достигнута отметка «высокая» влажность.
  3. Полив следует проводить в несколько циклов, разделенных периодами бездействия, чтобы обеспечить насыщение почвы водой.
  4. Система должна деактивироваться ночью между периодами сна и пробуждения.
  5. Время «пробуждения» следует скорректировать для выходных на более позднее значение.
  6. Система должна вести журнал откачиваний.
  7. Система должна отображать текущее значение влажности почвы.
  8. Система должна отображать дату / время последнего запуска насоса.
  9. Параметры полива должны регулироваться без перепрограммирования.
  10. Остановите подачу и укажите состояние ошибки, если работа насоса не приводит к изменению влажности (отсутствие воды или проблемы с датчиком), предотвращая затопление установки и утечку воды.
  11. Система должна включать / выключать датчик влажности, чтобы избежать эрозии металла.
  12. Система должна слить воду из трубок, чтобы в них не образовывалась плесень.

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

  1. Отметка «низкая» влажности в% для запуска насоса (по умолчанию = 60%)
  2. Отметка «высокой» влажности в% для остановки работы насоса (по умолчанию = 65%)
  3. Продолжительность одного цикла полива в секундах (по умолчанию = 60 секунд)
  4. Количество попыток достижения целевой влажности (по умолчанию = 4 запуска)
  5. Военное время для отключения на ночь, только часы (по умолчанию = 22 или 22 часа)
  6. Военное время для активации утром, только часы (по умолчанию = 07 или 7 утра)
  7. Корректировка выходных для утренней активации, дельта-часы (по умолчанию = +2 часа)
  8. Текущая дата и время

APIS записывает дату / время 10 последних поливов в память EEPROM. Журнал может отображаться, показывая дату и время прогонов.

Одна из многих вещей, которые мы узнали из APIS, заключается в том, что на самом деле вам не нужно поливать растения каждый день, что было нашим обычным делом, пока мы не увидели показания влажности почвы на 7-сегментном дисплее …

Шаг 1: ДЕТАЛИ и ИНСТРУМЕНТЫ

ДЕТАЛИ И ИНСТРУМЕНТЫ
ДЕТАЛИ И ИНСТРУМЕНТЫ
ДЕТАЛИ И ИНСТРУМЕНТЫ
ДЕТАЛИ И ИНСТРУМЕНТЫ

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

БЛОК УПРАВЛЕНИЯ И ТРУБКИ:

  1. Плата Arduino Uno: на Amazon.com
  2. Перистальтический жидкостный насос 12 В с силиконовыми трубками: на Adafruit.com
  3. 4-кратный цифровой светодиодный дисплей Цифровая трубка Модуль JY-MCU: на Fasttech.com
  4. Комплект коммутационной платы часов реального времени DS1307: на Adafruit.com (опционально)
  5. Тактовый переключатель Microtivity IM206 6x6x6 мм: на Amazon.com
  6. Доска Vero: на Amazon.com
  7. Микросхема драйвера двигателя L293D: на Fasttech.com
  8. 3 резистора по 10 кОм
  9. Пластиковый корпус Arduino: на Amazon.com
  10. Адаптер 12 В переменного / постоянного тока с разъемом питания 2,1 мм: на Amazon.com
  11. Бамбуковые шпажки
  12. Протектор и немного суперцементного клея
  13. Сверхмягкая латексная резиновая трубка Внутренний диаметр 1/8 дюйма, внешний диаметр 3/16 дюйма, стенка 1/32 дюйма, полупрозрачный янтарь, длина 10 футов: на McMaster.com
  14. Прочный нейлоновый фитинг с зазубринами и плотным уплотнением, тройник для трубки 1/8 дюйма с внутренним диаметром, белый, упаковки по 10 штук: на McMaster.com
  15. Прочный нейлоновый фитинг с зазубринами и плотным уплотнением, звезда-звезда для трубки с внутренним диаметром 1/8 дюйма, белый, упаковки по 10 шт.: на McMaster.com
  16. Как обычно, провода, паяльники и т. Д.

ДАТЧИК ВЛАЖНОСТИ:

  1. Небольшой кусок дерева (1/4 "x 1/4" x 1 ")
  2. 2 иглы для удаления прыщей из нержавеющей стали: на Amazon.com
  3. Модуль датчика влажности почвы: на Fasttech.com

Шаг 2: ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V1

ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V1
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V1
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V1
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V1
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V1
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V1

Влажность почвы измеряется на основе сопротивления между двумя металлическими датчиками, вставленными в землю (на расстоянии около 1 дюйма друг от друга). Схемы представлены на картинке.

Первым зондом, который я попробовал, был тот, который можно купить у ряда интернет-провайдеров (например, этот).

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

Шаг 3: ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V2

ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V2
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V2
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V2
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V2

Зонд «следующего поколения» был изготовлен из двух оцинкованных гвоздей, деревянной доски и пары проводов.

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

Оцинкованные гвозди, к моему удивлению, тоже разъедались (хоть и медленнее, чем тонкая фольга), но все же быстрее, чем хотелось бы.

Другой зонд был разработан на основе игл для удаления прыщей из нержавеющей стали. (см. следующий шаг).

Шаг 4: ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V3 "Katana"

ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V3
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V3
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V3
ДАТЧИК ВЛАЖНОСТИ ПОЧВЫ V3

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

Я считаю, что быстрая эрозия может быть связана с тем, что зонд всегда находился под электрическим напряжением (24x7) независимо от того, как часто проводились фактические измерения.

Чтобы смягчить это, я изменил интервалы измерения на один раз в 1 час (в конце концов, это НЕ система реального времени) и подключил пробник к одному из цифровых контактов вместо постоянных 5 В. В настоящее время зонд получает питание только ~ 16 минут в день вместо 24 часов, что должно значительно увеличить срок его службы.

Шаг 5: ОСНОВНАЯ ФУНКЦИОНАЛЬНОСТЬ

ОСНОВНАЯ ФУНКЦИОНАЛЬНОСТЬ
ОСНОВНАЯ ФУНКЦИОНАЛЬНОСТЬ
ОСНОВНАЯ ФУНКЦИОНАЛЬНОСТЬ
ОСНОВНАЯ ФУНКЦИОНАЛЬНОСТЬ

APIS основан на плате Arduino UNO.

APIS измеряет влажность почвы один раз в час и, если она опускается ниже заданного порогового значения, включает насос на заданный период времени заданное количество раз, разделенных интервалами «насыщения».

После достижения заданного порога влажности процесс возвращается в режим измерения раз в час.

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

Однако, если даже нижний предел влажности не может быть достигнут, объявляется состояние ошибки. (Скорее всего, проблема с датчиком, или в ведре закончилась вода и т. Д.). В случае ошибки устройство будет бездействовать в течение 24 часов, а затем попытается снова.

Шаг 6: 7-СЕГМЕНТНЫЙ ДИСПЛЕЙ

7-СЕГМЕНТНЫЙ ДИСПЛЕЙ
7-СЕГМЕНТНЫЙ ДИСПЛЕЙ
7-СЕГМЕНТНЫЙ ДИСПЛЕЙ
7-СЕГМЕНТНЫЙ ДИСПЛЕЙ

7-СЕГМЕНТНЫЙ ДИСПЛЕЙ НА ОСНОВЕ TM1650:

Первоначально APIS не имел возможности отображения. Без подключения по USB было невозможно определить текущий уровень влажности почвы.

Чтобы исправить это, я добавил в систему 4-значный 7-сегментный дисплей: на Fasttech.com

Мне нигде не удалось найти библиотеку для работы с этим модулем (ни лист данных для него), поэтому после нескольких часов исследования портов I²C и экспериментов я решил написать библиотеку драйверов сам.

Он поддерживает отображение до 16 цифр (4 по умолчанию), может отображать основные символы ASCII (обратите внимание, что не все символы могут быть построены из 7 сегментов, поэтому буквы типа W, M и т. Д. Не реализованы)., Поддерживает десятичные точечный дисплей на модуле, бегущая строка символов (для отображения более 4 букв) и поддержка 16 степеней яркости.

Библиотека доступна на игровой площадке arduino.cc здесь. Библиотека драйверов TM1650

Образец видео доступен здесь

АНИМАЦИЯ:

Во время бега по воде реализована небольшая 7-сегментная анимация.

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

Ненужный, но приятный штрих.

Шаг 7: НАСОС и УПРАВЛЕНИЕ НАСОСОМ

НАСОС и УПРАВЛЕНИЕ НАСОСОМ
НАСОС и УПРАВЛЕНИЕ НАСОСОМ
НАСОС и УПРАВЛЕНИЕ НАСОСОМ
НАСОС и УПРАВЛЕНИЕ НАСОСОМ

НАСОС

Я использовал перистальтический жидкостный насос 12 В (доступен здесь) для полива растений. Насос подает около 100 мл / мин (что составляет примерно 1/2 стакана - это следует помнить при настройке времени подачи воды, чтобы избежать перелива, и это действительно произошло 8-))

УПРАВЛЕНИЕ НАСОСОМ - L293D

Насос управляется микросхемой драйвера двигателя L293D. Поскольку направление вращения задано заранее, вам действительно нужно использовать только контакт включения микросхемы для управления. Направляющие контакты могут быть подключены напрямую к + 5 В и GND на постоянной основе.

Если вы (как и я) не были уверены, в каком направлении пойдет насос, вы все равно можете подключить все три контакта к Arduino и управлять направлением программно. Меньше повторной пайки.

Шаг 8: КОНФИГУРАЦИЯ и КНОПКИ

КОНФИГУРАЦИЯ и КНОПКИ
КОНФИГУРАЦИЯ и КНОПКИ
КОНФИГУРАЦИЯ и КНОПКИ
КОНФИГУРАЦИЯ и КНОПКИ

КНОПКИ:

Я использовал три кнопки для настройки и управления APIS.

Все нажатия кнопок обрабатываются на основе прерываний вывода (библиотека PinChangeInt).

  • Красный (крайний правый) - кнопка ВЫБОР. Это заставляет APIS входить в режим конфигурации, а также подтверждает значения.
  • Крайняя левая и средняя черные кнопки (ПЛЮС и МИНУС соответственно) используются для увеличения / уменьшения настраиваемых значений (в режиме конфигурации) или отображения текущей даты / времени и информации о последнем поливе (в нормальном режиме).

Поскольку большую часть времени дисплей выключен, все кнопки сначала «разбудят» APIS, и только затем, при втором нажатии, выполнят свою функцию.

Дисплей выключается через 30 секунд бездействия (если не выполняется полив).

APIS запускает параметры конфигурации при запуске для просмотра: видео

КОНФИГУРАЦИЯ:

APIS имеет четыре режима настройки:

  1. Настроить параметры полива
  2. Настроить часы реального времени
  3. Полив "Force"
  4. Просмотр журнала полива

ПАРАМЕТРЫ ПОЛИВА:

  1. Низкий порог влажности почвы (начало полива)
  2. Высокий порог влажности почвы (прекратить полив)
  3. Продолжительность одного цикла полива (в секундах)
  4. Количество циклов полива за одну партию
  5. Продолжительность периода насыщения почвы между прогонами в пределах одной партии (в минутах)
  6. Время активации ночного режима (военное время, только часы)
  7. Время окончания ночного режима (военное время, только часы)
  8. Регулировка выходного дня для окончания ночного режима (в часах)

НАСТРОЙКА ЧАСОВ РЕАЛЬНОГО ВРЕМЕНИ:

  1. Век (т.е. 20 на 2015 год)
  2. Год (например, 15 на 2015 год)
  3. Месяц
  4. День
  5. Час
  6. Минуты

Часы настраиваются с установкой секунд на 00 после подтверждения минут.

Настройки имеют период ожидания 15 секунд, по истечении которого все изменения отменяются.

После сохранения параметры сохраняются в памяти EEPROM.

ПРИНУЖДЕНИЕ ПОЛИВА:

Все еще не уверен, зачем я это реализовал, но он есть. После активации APIS переходит в режим полива. Однако режим полива по-прежнему зависит от пороговых значений. Это означает, что если вы включили принудительный полив, но влажность почвы выше отметки ВЫСОКАЯ, полив немедленно прекратится. Обычно это работает, только если влажность почвы находится между НИЗКИМ и ВЫСОКИМ пороговыми значениями.

ОБЗОР ЖУРНАЛА ПОЛИВА:

APIS хранит журнал последних 10 поливов в памяти EEPROM, который пользователь может просмотреть. Сохраняется только дата / время полива. Пороговые значения (на тот момент) и количество прогонов, которые потребовались для достижения ВЫСОКОГО порога, не сохраняются (хотя в следующей версии они могут быть).

Шаг 9: RTC: ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ

RTC: ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ
RTC: ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ

НОЧНОЙ РЕЖИМ

Как только APIS разбудил меня ночью, мне в голову пришла идея реализовать «ночной режим».

Ночной режим - это когда измерения не производятся, дисплей выключен и полив не ведется.

В обычный рабочий день APIS «просыпается» в 7 утра (настраивается) и переходит в ночной режим в 22:00 (настраивается). В выходные дни APIS использует настройку «корректировки выходного дня», чтобы отложить пробуждение (например, до 9 утра., если выходные - 2 часа).

RTC BREAKOUT BOARD vs. "ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ" RTC:

Я использовал аппаратные RTC (доступны здесь), чтобы отслеживать дату / время и входить / выходить из ночных режимов.

Его использовать необязательно, так как скетчи могут быть скомпилированы для использования так называемого «программного» RTC (с использованием функции millis () arduino).

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

Я изменил стандартную библиотеку RTC, чтобы она точно соответствовала API, а также для решения проблемы с опрокидыванием на миллисекунды. (Для загрузки см. Этап создания эскизов).

Шаг 10: СОБИРАЕМ ВСЕ ВМЕСТЕ

СОСТАВЛЯЕМ ВСЕ ВМЕСТЕ
СОСТАВЛЯЕМ ВСЕ ВМЕСТЕ
СОСТАВЛЯЕМ ВСЕ ВМЕСТЕ
СОСТАВЛЯЕМ ВСЕ ВМЕСТЕ
СОСТАВЛЯЕМ ВСЕ ВМЕСТЕ
СОСТАВЛЯЕМ ВСЕ ВМЕСТЕ
СОСТАВЛЯЕМ ВСЕ ВМЕСТЕ
СОСТАВЛЯЕМ ВСЕ ВМЕСТЕ

Вся система (кроме зонда), включая насос, помещается в небольшую коробку для Arduino Uno.

  1. Дисплей TM1650 использует интерфейс TWI, поэтому провода SDA и SDC идут к контактам Arduino A4 и A5 соответственно. Два других провода - + 5В и GND.
  2. Плата RTC использует интерфейс TWI, как указано выше. (TM1650 и RTC используют разные порты, поэтому они мирно сосуществуют). Вывод RTC + 5v подключен к выводу 12 Arduino (питание через цифровой вывод вместо + 5v). Не помню, зачем я это сделал, тебе не обязательно.
  3. Контакты L293D подключаются следующим образом: включение (контакт 1) к D5, а контакты 2 и 7 управления направлением - к контактам D6 и D7 Arduino соответственно.
  4. КНОПКИ подключены к контактам D2, D8 и D9 для SELECT, PLUS и MINUS соответственно. (Кнопки реализованы с подтягивающими резисторами 10К - в конфигурации «активный-высокий»).
  5. Питание модуля PROBE + 5В подключается к контакту 10 Arduino (для обеспечения периодических измерений), а датчик подключается к аналоговому контакту A1.

ПРИМЕЧАНИЕ. Файл схемы Fritzing был добавлен в репозиторий github.

Шаг 11: Эскизы и многое другое

Эскизы и многое другое
Эскизы и многое другое

Обновление за март 2015 г.:

  1. Добавлена функция слива воды из трубок после полива, чтобы предотвратить образование плесени (Боже! Я счастлив, что не установил направление вращения насоса на L293D!)
  2. Более подробные записи включают дату / время начала и окончания полива, начальную и конечную влажность и сколько раз насос был включен во время полива.
  3. Обновлена подпрограмма ошибок: устройство будет полностью перезагружено через 24 часа после входа в состояние ошибки.
  4. Перекомпилирован с помощью TaskScheduler 2.1.0
  5. Различные другие исправления ошибок

По состоянию на 18 ноября 2015 г. в APIS были добавлены следующие дополнительные функции:

  1. Использование библиотеки DirectIO для более быстрой и простой смены контактов
  2. Использование библиотеки часовых поясов для правильного переключения между EST и EDT
  3. Добавлена логика деактивации кнопок с использованием только TaskScheduler
  4. Добавлена функция повтора кнопок (значения циклически меняются, если кнопка нажата и удерживается, с увеличением скорости цикла после 5 циклов)
  5. Перекомпилирован с IDE 1.6.6 AVR 1.6.9 против TaskScheduler 1.8.4
  6. Перенесено на Github

БИБЛИОТЕКИ:

APIS основан на следующих библиотеках:

  • EEPROM - часть Arduino IDE
  • Wire - часть Arduino IDE
  • EnableInterrupt - доступно на Github
  • Часовой пояс - доступно на Github
  • DirectIO - доступно на Github

Изменено (разветвлено) мной:

  • Время - доступно на Github
  • RTClib - доступен на Github

Разработано мной:

  • TM1650 - доступен на Github
  • TaskScheduler - доступен на Github
  • AvgFilter - доступен на Github

ЭСКИЗ:

Последняя версия скетча APIS, включая файл схемы fritzing, доступна на Github.

ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:

  • L293D: здесь
  • Коммутационная плата RTC: здесь

Шаг 12: *** МЫ ВЫИГРАЛИ !!! ***

*** МЫ ВЫИГРАЛИ !!! ***
*** МЫ ВЫИГРАЛИ !!! ***

Этот проект получил второй приз в конкурсе домашней автоматизации, спонсируемом Dexter Industries.

Проверьте это! У-У-У !!!

Домашняя автоматизация
Домашняя автоматизация
Домашняя автоматизация
Домашняя автоматизация

Вторая премия в области домашней автоматизации

Рекомендуемые: