Система автополива комнатных растений на Arduino
Вставка
- Опубліковано 25 сер 2024
- Автоматическая система капельного полива домашних растений на базе Arduino.
- Полив включается только при заданном уровне влажности (сухости) почвы.
- Орошение производится с нескольких точек.
- Автоматическое отключение устройства и световая индикация при недостаточном уровне жидкости в ёмкости.
- Масштабируемая зона орошения (для разных горшков, лотков или боксов)
- Стоимость всех необходимых для сборки устройства компонентов менее 500 рублей.
Присоединяйтесь ВКонтакте: im_pub
Компоненты на Aliexpress:
Arduino Nano: ali.pub/399he5
Датчик влажности грунта: ali.pub/399g5m
Микропомпа (насос): ali.pub/399hjz
Датчик уровня жидкости: ali.pub/399hnh
Светодиоды: ali.pub/399htb
Резисторы: ali.pub/399hw1
Скетч поливалки: yadi.sk/d/nytS...
#arduino #ардуино #уроки #робот #robot #uno #уно #nano #esp8266 #nodemcu #lua #обзор #esp-01 #реле #relay #часы
Спасибо!!!Отлично.Все кратко и понятно.
надо бы привязать к крайним значениям влажности почвы состояние аналогового входа,что даст возможность регулировать обьём поливаемой воды без лишнего кодинга
Работает. Спасибо.
Как подправить скетч, чтобы ещё и дисплей OLED LCD 128x64 0.96'' прикрутить к этому проекту?
Огромное спасибо!
А почему не пойти дальше и не сделать автоматическое наполнение банки из водопровода?
Есть риск залить квартиру, если сдохнет датчик влажности и будет показывать "ой, сухо, надо срочно поливать". Или тараканы прогрызут дырку в шланге с водой. Ограничение возможного вреда
Всё нашёл спасибо.
Сама конструкция очень симпатичная, но рассчитана только для одного цветка, так как если её бросить допустим на три горшка с цветами, то одни будет заливать или недоливать
ТЕХ-ОРБИТА
Я даже в варианте для одного растения не совсем понял. Вроде с одной стороны как и предусмотрена задержка но... в том ли смысле она.
Имею ввиду, что после первого срабатывания датчика почвы, включилась помпа, скажем на пять секунд, выключилась, через минуту скажем вновь замерить влажность и уже исходя из второго значения, либо вновь запускать цикл и так до тех пор пока влажность не станет необходимой или уходить так сказать в спящий режим.
@@RusNovgorod Сразу скажу, опыта по ардуинке у меня нет. Просто один молодой меня взял на слабо, что когда тебе за 40 или, к примеру за 50, то браться за изучение ардуинки - гиблый номер. Я не претендую на на создание чего-то нового, но пару полезных проектов надеюсь осилить. Так вот, я тут на досуге воспроизвел данный проект на макетке. Скетч взял из проекта без изменения. Вместо помпы пока подключил релейный модуль. Вместо горшка с землей, взял стакан с водой. Получил такой алгоритм работы. Скажу сразу, время считал без секундомера, приблизительно. При включении 3 раза моргает светодиод. Пауза около 20 сек. Идет запрос датчика уровня в емкости с водой. Если используется датчик уровня на герконе то, наличии достаточного кол-ва воды, геркон должен быть разомкнут. При разомкнутом герконе PIN D6 церез резистор 10К подтягивается на землю. Если воды в емкости не достаточно, то геркон замыкается и с PIN D5 на PIN D6 поступает высокий уровень. Отсчет прекращается и горит красный светодиод (это, если никаких других ветодтодов не ставили). Система на паузе, пока не нальете воды к емкость. Если уровень воды в емкости нормальный, то светодиод гаснет программа продолжает работу. На 25 сек подается питание на модуль влажности и, если датчик сухой, включается помпа на 25 сек. Потом пауза 25 сек и новое измерение. Если, при подаче питания на датчик влажности, он мокрый, помпа (в моем случае реле) не включается. Опять пауза и до следующего измерения. По скетчу после 6 измерений должна быть пауза 1800000 = 0,5 часа. только у меня этой паузы нет. Опрос датчика влажности происходит каждые 25 сек. Думаю, что функция delay(watering_period) пауза между измерениями влажности почвы отрабатывает не так, как надо. С этим пока не разобрался.
@@user-uu3mx3rp5t Насколько понимаю, delay она вообще полностью вешает всю систему и работает только на себя. Но с ардуиной, я вообще на вы)
@@RusNovgorod Здесь, однозначно надо скетч дорабатывать. Есть мысль для нескольких вазонов использовать такой алгоритм. На каждый вазон датчик влажности и маленькая помпа на цифровом выходе. Ардуинка периодически опрашивает каждый датчик влажности, т.е. подает питание на датчик влажности каждые 3 часа на 10 сек. Земля сухая - помпа включилась на 10 сек. если мокрая, то не включилась. И так до следующего измерения. Как-то так.
@@user-uu3mx3rp5t примерно так думаю и надо делать, но только и после этих 10 секунд, через какое то время перепроверять. Я правда не о горшках говорю а скажем о теплице. Но и настройка должна быть раздельной, что в теплице что в горшках. Растения могут оказаться разными, разный объём почвы, да и на один уже светило солнышко и почву подсушило а второй в тени оказался.
Подскажите, почему при работе такой помпы происходит зависание ардуино - даже если питание на ардуино и помпу подается от разных источников питания?
Вроде оба Насоса подгружные У продавцов написано что погружные как у тебя насос работал норм?
А реле тут обязательно или нет? Ответьте, пожалуйста, очень надо! С меня подписка, если вы неравнодушны к вопросам)
Если, например, насос от 220 работает, то реле необходимо. Микроконтроллер переключает реле, реле включает насос.
Александр класс!!! программа хороша, сделаю себе полив зацепило, вопрос такой , вместо датчика влажности почвы поставить терма датчик, вместо помпы серво привод для форточек чтоб не сразу закрывал, открывал, а замерил если нужно открыл но на половину , через пол часа к примеру замерил и открыл полностью если нужно, два концевика на открытие и закрытие форточек, серво привод стеклоподъемник от УАЗа, как полярность менять на сервоприводе, в программе, я пока не шипко разбираюсь, ( 0) читаю, древний я, вот бы такую же программу на форточки было бы супер.
:D Подать питание на двигатель стеклоподъемника с цифровых пинов arduino не получится. Arduino выдает 5V. Также у автомобильных аккумуляторов большая сила тока на выходе. Т.е. если даже запитать двигатель стеклоподъемника от сетевого адаптера питания, то он не будет работать должным образом, если силы тока будет не достаточно. Также не понятно как с помощью двигателя постоянного тока можно отслеживать угол открытия окна. Угол можно отслеживать сервоприводами, но скорее всего двигатель с подходящей мощностью (чтобы мог управлять полощением тяжелого объекта) будет стоить очень дорого. Вам, вероятно, подойдет шаговый двигатель. Но для него нужно придумывать редуктор, дабы повысить мощность.
Через реле включать блок питания мощный на стеклоподъемники, как на контролере заводском включаю тепловой каларифер, блок у меня есть, промежуточное открытие ( закрытие ) форточек определить в секундах по месту это не критично, чуть больше - меньше, а концевик когда упрется, привод должен отключится, полярность поменять , и ждать когда температура упадет до нужного порога, сработать в обратном направлении , вот как то так.
Да, через реле можно. Например через такое ali.pub/ehazf или двойное ali.pub/6vmpt Но тогда и на Arduino нужно не плюс с минусом на пинах менять, а какую-то схему на реле с переполюсовкой придумывать. Если есть схема, то по вопросу: на Arduino с питанием на выводах очень просто играть. Если значение на термометре высокое, то digitalWrite(pin1,LOW);, digitalWrite(pin2,HIGH);. LOW - земля, HIGH - плюс. Если низкое, то наоборот: digitalWrite(pin1,HIGH);, digitalWrite(pin2,LOW);
Александр спасибо! понятно, буду думать дальше, да реле надо, чтоб менять полярность.
Александр , если 2 реле, 1 реле + 2- на в паре , контроллер включает сразу оба, концевика коснулось , питание отключилось ( реле)
Принцип как я думаю такой: датчик считал что порог превысил к примеру +25 включилась первая пара реле привод поехал, уперся в концевик, контакт замкнул команда пошла на отключение реле, но тут надо прописать команда на включение должка пойти снова когда порог превышен +25 и выше, и даже когда замкнется контакт реле когда привод сработает на закрывание, команды не должно быть.
На 2й паре полярность меняю, и +20 и ниже команда на включение, для меня пока такое писать сложно,
А концевик прописать как кнопка, button, и на концевик резистор пишут надо ставить от помех.
Датчик выписал такой ru.aliexpress.com/item/1pcs-New-Digital-Temperature-Temp-Sensor-Probe-DS18B20-For-Thermometer-1m-Waterproof/1297739612.html?spm=2114.13010608.0.0.1MsegR
а реле двойное.
А где раздел? Что-то я не нашел.
Здравствуйте!
Тут уже задавали вопрос насчет того можно ли обойтись без резисторов. Ответ был нет. Можно поинтересоваться новичку в электронике почему нельзя? Ведь тот же светодиод можно подключить через вывод ШИМ, который может выдавать любое напряжение от 0 до 5 В. А подтягивающий резистор нужен чтобы гарантировать сигнал LOW или HIGH на логическом входе т.е. по большому счету для подстраховки, коей можно и пренебречь на мой взгляд, потому как я сам этим пренебрегаю и все работает без сбоев. Или может быть есть еще какие-либо моменты, которые новичку непонятны?
Если у Вас все работает, то, вероятно, мои ответы Вам не будут интересны так же как и необходимы. Не все светодиоды выдерживают силу тока выхода контроллера без резистора. На ШИМ выводе можно регулировать не напряжение, а ширину импульсов. Т.е. напряжение на нем меняется субъективно. Стягивающий резистор убирает наводки. Его отсутствие сильно снижает стабильность работы сборки в части работы датчика уровня жидкости.
Почему же не будут интересны? Будут.
Ну так вроде шириной импульсов и регулируют величину тока и напряжения. По крайней мере замеры мультиметром, как тока так и напряжения, все четко подтверждают, т.е. если на ШИМ вывод я даю команду (от 0 до 255), например analogWrite (№пина, 127), то и получаю на выходе половину от напряжения и половину от тока в сравнении с тем, если бы задал величину 255.
Ну и я понимаю что по хорошему, по правильному можно поставить подтягивающий резистор и ,честно говоря, ожидал увидеть какие-либо сбои когда его не поставил (специально, чтобы лично с этим столкнуться), но никаких сбоев не возникает, как бы сильно мне этого не хотелось)) Это я к тому, что без резисторов обойтись вполне можно, не то чтобы я питаю к ним какую-то неприязнь)), но мой небольшой практический опыт применительно к этому случаю показывает что они действительно не нужны. Хотя по правилам хорошего тона можно и поставить.
@@iomoio3897 здравствуйте, скажите пожалуйста, можно ли собрать такую же схему, но на arduino uno, хочу собрать систему автополива, на датчика влажности, но мало в этом разбираюсь
У меня не работает собрал и просто ничего не происходит помоги плз
Не подскажете каким образом прикрутить к данной сборке экран с отображением текущей влажности почвы и возможно датчик DHT-11/22 также с отображением влажности/температуры на экран?
Мы с товарищем уже несколько дней переделываем этот код под отображение на дисплее. Его нужно переписать практически полностью, иначе ничего он не будет выводить, потому что написан ждать полива в в зависшем состоянии часами.
Если получится в итоге что то рабочее, поделитесь пожалуйста
я новичек ВСЮ БОШКУ ПЕРЕЛОМАЛ ЧТО ЗА ДОП ПЛАТА НА СХЕМЕ О КОТОРОЙ НИ СЛОВА ДАТЧИК УРОВНЯ ВЛАЖНОСТИ ПОЧВЫ FC-28-G arduino 5V
поподробней можно ли без нее? или как обойти эту плату!
Плата - АЦП. Она преобразует данные о токе между электродами (сопротивлении) в цифровой сигнал.
можете подсказать как сразу подключить 2-3 датчика уровня влажности почвы
Nu pompu tam podkljuchat na premuju k mikrokontrolleru tochno ne stoit, pompa mozhet potrbitj do 300mA, a vihod mikrokontrollera dannom sluchae vidaet 40mA (a skorei vsego i togo menjshe), i vihod tupo zgorit.
Не уловил мысль. Выход сгорит от того что он не может отдать силу тока необходимую нагрузке? Это что-то новое...
Если рабочий (или стартовый) ток двигателя превышает 30-40 мА, его нужно подключать посредством транзистора или сборки Дарлингтона, в зависимости от величины тока! Иначе порт сгорит (см. даташит: DC Current per I/O Pin: 40.0mA)
ты просто не понял философии,парень;)
Привіт, а за допомогою якої програми Ви зробили графічний макет на 5:40 ?
не могу открыть скетч
Добрый день!
Сделал систему автополива по вашей инструкции один в один. При заливе скетча на ардуино выдает ошибку:
warning: overflow in implicit constant conversion [-Woverflow]
int watering_period = 1800000;
пока не смог отследить влияет ли это на работоспособность системы. Подскажите, есть ли смысл пытаться избавиться от ошибки ?
Для UNO максимальное значение переменной типа int 32767. Два нуля уберите и все будет OK.
Получается, что датчик будет включатся каждые 32 секунды. А как сделать чтобы датчик включался хотя бы 1 раз в час или больше? У меня ардуино нано на меге328, такая же проблема.
а можно ли к одной ардуинке подключить 4 мотора и соответсвенное 4 сенсора? для полива в разных горшках
Да можно. Но в этом случае лучше подсоединять моторы к Arduino через драйверы двигателей. Например для 4-х моторов можно использовать 2 вот таких драйвера: goo.gl/FCbWNX Иначе могут быть проблемы с ЭДС-помехами.
А если растений 10 или больше? Неужели ЭДС-помехи нельзя победить диодами? А чтобы не покупать 5 драйверов по 100 рублей, сделать простенький цикл обмена по прерываниям в той же Flprog?
Я всего лишь предупредил о возможной проблеме и привел один из примеров для ее избежания. Безусловно каждый для себя выбирает подходящий вариант. =)
Нужна помощь !!!! Есть датчик влажности почвы и реле для запуска насоса , когда подключен насос и он не опущен в воду , работает как надо( реле срабатывает 5 раз на определенное количество времени что вода впитывалась и датчик делал замеры )но когда насос опускаешь в воду то реле один раз включается и не отшелкует его обратно . Насос 12v
Выкинь реле, и купи новое.
@@zmeecrabevich6474 так и сделал
скажите , а без датчика уровня жидкости схема будет работать?
будет
Aeorius точно будет
Повторил Ваш проект! Спасибо! У меня происходит включение, далее светодиод который A1 A2 мигает 3 раза. Полива не происходит. Поясните пожалуйста. Спасибо!
Надо посмотреть какое значение возвращает датчик влажности. Можно на монитор серийного порта его вывести.
в loop вставить Serial.print(dry_value); ?
В начало блока setup вставить Serial.begin(9600);
В блок loop, перед if (moisture_value > dry_value), вставить Serial.println(moisture_value);
В общем полив не включается, если показания с датчика меньше значения dry_value. Поэтому надо посмотреть что возвращает датчик.
Добавил. Показания колебались в мониторе порта moisture_value 1023 -913
1. Попробовать отключить датчик уровня воды от платы. Если заработает, то дело в нём.
2. Если первое не помогло, то проверить подаётся ли питание на помпу. Для этого можно вместо помпы попробовать подключить, например, светодиод (длинная нога в 4-й пин контроллера (pump_pwr), короткая в GND). Помпу перед этим надо отключить от платы. Если светодиод загорается, дело в помпе (перепутана полярность подключения, не хватает питания или помпа неисправна).
здравствуйте а можно обойтись без резисторов
Нет
На самом деле да. Резистор на светодиод, который автор называет "стабилизирующим" (?) нужен для уменьшения вольтажа на светодиод. Т.к. 5В для них все-таки многовато, и они просто помирают раньше (но горят ярче!).
Подтягивающий резистор можно заменить внутренней подтяжкой пина при указании режима работы пина (INPUT_PULLUP)
Привет, с тобой можно как то связатся? есть пара вопросов, а в комменты картинки никак не прикрепить)
В разделе "О канале" есть адрес для коммерческих запросов.
где можно нарисовать схему для моего проекта ?
fritzing
помогите пожалуйста выдает ошибку при компиляции. warning: overflow in implicit constant conversion [-Woverflow]
int watering_period = 43200000;
Число слишком большое. Уберите один или несколько нулей.
@@iomoio3897 все равно выдаёт ошибку
Посмотрите в Интернет максимальное значение для int в arduino и задайте его для watering_period. Навскидку не помню, к сожалению.
Замените int watering_period = 43200000; на long watering_period = 43200000;
@@iomoio3897 спс
от помпы порт не сгорит ?
Люди пишут, что может сгореть порт. У меня все норм. Можно мосфет поставить на пин подключения помпы для успокоения, а саму от источника запитать. Будет лучше воду качать.
а на 6 цветков хватит одной помпы?
Зависит от конструкции капилярной трубки. И лучше тогда на помпу большее питание и ток подавать, включая ее с помощью реле или мосфета. К тому же встает вопрос о замере влажности почвы во всех горшках, а не в одном, т.к. в зависимости от цветка, объема и состава грунта высыхать будут в разное время.
а почему бы не подключить светодиод в цифровой выход и ШИМом не дать ему нужный ток? и резистор не нужен будет.
мотор на прямую на ногу контроллера - это полный бред!!!
ТАК ДЕЛАТЬ НЕЛЬЗЯ!!!
Нога контроллера максимум 20 мА может выдать!
НЕ ДЕЛАЙТЕ ТАК - РИСКУЕТЕ ИСПОРТИТЬ КОНТРОЛЛЕР !!!
Как с вами можно связаться?
В разделе "О канале" есть адрес для коммерческих запросов.
Короче тупо не работает мотор при подаче на D4 напряжения... Вот никак не работает, вынимают провод из D4 прикладываю к 5V работает... назад не работает.
Датчик хорошо, датчик работает.
Тока не хватает. Попробуйте через транзисторный ключ, например.
@@iomoio3897 Естественно с такими данными всё понятно... но я нифига не смыслю в элементной базе, чтобы понять что надо купить, чтобы что-то спаять чтобы заработало...
Пока нашел это роботехника18.рф/%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%BE%D1%82%D0%BE%D1%80%D0%B0-%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE/ но какой транзистор и какое сопротивление подойдет я хз.
@@qwertyk07 Как вариант: 30,87 руб. 10%OFF | 0-24 В верхняя кнопка Mosfet IRF520 драйвер MOS модуль MCU ARM
a.aliexpress.com/_Ads3Zv