- PVSM.RU - https://www.pvsm.ru -
Привет, уважаемые Хаброжители!
Недавно мне позвонил отец, рассказал, что у него есть цветок, который он постоянно забывает поливать или наливает чрезмерно много воды, в итоге тот, то засыхает, то наоборот страдает переизбытком влаги.
Будем решать эту проблему с помощью микроконтроллера и C#.
Недолго посовещавшись, было решено автоматизировать данный процесс. Мы определили для себя основные требования к тому, что хотелось бы видеть:
Задав вопрос на Хабре (вопрос [1]), получил массу предложений про Ардуино и прочие девайсы, однако остановился на AVR-USB-MEGA16 [2] (спасибо Андрею, за консультации и помощь в освоении, а так же за оперативность доставки).
В итоге были куплены следующие компоненты:
Итого не считая всяких мелочей получилось около 2200 рублей.
Все детали очень компактные, самое большое это помпа:
Итак, все куплено, пришло время сборки. Схему включения реле посоветовал @AlekseyNovikov, за что ему огромное спасибо. Вот схема:
Единственное, что решил убрать диод. Потратив вечер на пайку, получился вполне вменяемый результат:
Теперь переходим к самому интересному – логика работы.
Перед началом реализации данной затеи, основным страхом или опасением была сложность программирования микроконтроллеров, отсутствие нормального дебага и прочие трудности, поэтому основной целью данной статьи является не описание как таковой идеи, потому как она не нова, а пропаганда простоты использования подобных девайсов с помощью современных языков программирования, таких как C#.
От платы нам потребуется лишь две вещи:
Итак, я использовал WPF в связке с прошивкой Кухтецкого Сергея (подробнее, как это работает можно почитать здесь [3]).
Программа представляет собой иконку в трее и маленькое ненавязчивое окошко.
Настройки программы тоже максимально просты:
К основным сложностям в работе софта можно отнести следующие проблемы:
Для решения этих проблем был придуман простейший алгоритм на основе замеров. После того, как все стоит на своих местах, вода набрана в резервуар:
Все, система готова к работе. По первому параметру настроек – объем полива, он определяется автоматически на основе датчика влажности почвы и оптимальной влажности для данного вида растения (к сожалению, я не вынес его в интерфейс, оно устанавливается в XML файле)
Раз в десять минут снимаются показания с датчика влажности почвы (происходит ряд замеров, берется среднеарифметический ). На основе показаний принимается решение об ирригации почвы, если отклонение от нормы составляет более 5%, то происходит полив. Данные обо всех действиях записываются в БД, на их основе впоследствии строится прогноз полива, график и определяется необходимый объем полива. Алгоритм определения объема выливаемой жидкости так же очень прост. Есть некий эталон влажности, скажем 74% (указывается в XML файле под конкретное растение), происходит первый полив объемом в 100 мл, через 10 минут происходит очередной замер влажности и мы смотрим отклонение от эталонного уровня влажности, если влажность меньше чем необходима, то при следующем поливе добавляем с шагом в зависимости от отклонения (100 мл, 50 мл, 10 мл, 3 мл). Если уровень влажности не изменился +-5 единиц, то считаем, что в резервуаре закончилась вода, отправляем СМС.
К сожалению, я не люблю цветы, у меня их попросту нету, поэтому обкатать систему на реальном растении мне так и не удалось, мной была куплена экспериментальная хризантема, которая успешно погибла на первой неделе опытов. Механизм был успешно отправлен моему отцу (привет Почте России, посылка должна была дойти за неделю, уже идет три и пока неизвестно, что с ней), как только он все установит и запустит, обязательно снимет видео и я его добавлю.
К недостаткам данной системы можно отнести многое, во первых все таки зависимость от ПК, во вторых все это довольно массивно, большой резервуар, к нему идут провода, от него идет толстая трубка на верх к горшку, в горшка выходят провода с датчиков, все это включается в розетку, т.к. помпа 220В.
В планах на ближайшее будущее устранить все недостатки, хочу нарисовать 3D модель, которая будет включать все в один горшок – резервуар, помпа, каналы для воды, датчики, LCD экран и т.д., хочу, чтобы все это работало на батарейках минимум полгода, данный горшок будет работать на Ардуине Про Мини.
На данный момент осваиваю Blender (имею большой опыт в 3D Max’е), так как решил полностью отказаться от пиратского софта, после того как закончу, сдам модель в 3D печать, устраню все недостатки, запущу опытный образец и обязательно напишу продолжение данной статьи.
Код и схему устройства не стал приводить специально, так как там все совсем просто, если кому нужно пишите.
Автор: Razario777
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programming-mikrokontrollerov/44733
Ссылки в тексте:
[1] вопрос: http://habrahabr.ru/qa/46188/
[2] AVR-USB-MEGA16: http://microsin.net/programming/AVR/avr-usb-mega16.html
[3] здесь: http://microsin.net/programming/avr-working-with-usb/avr-usb-mega16-and-csharp-class.html
[4] Источник: http://habrahabr.ru/post/195998/
Нажмите здесь для печати.