Поливаем свои растения автоматически с помощью Arduino UNO

На даче или дома вы часто поливаете растения? Я думаю, да. Я как раз тоже озадачился таким вопросом. Вот недавно на просторах интернета я нашёл удивительно простое решение для полива комнатных растений. А на чём собрать? Автоматический полив на Ардуино — это достаточно простая и не дорогая автоматика. Её можно поставить на горшки с растениями и вообще забыть о поливе. Только воду периодически нужно доливать.
Из этой статьи вы узнаете:
Общее описание проекта
Часть 1. Датчики и Шильды
Часть 2. Заливаем код в Arduino
Часть 3. Сборка элементов
Приветствую дорогие друзья и подписчики. С вами снова я, Гридин Семён. На этот раз в этой статье будет говориться о системе полива растений на базе Arduino UNO.
В Китае существует такая фирма Elecrow. Они производят различную электронику, контроллеры, мониторы и тому подобное. У них же есть и готовые решения для разных систем. В том числе и «поливалка» для комнатных растений.
Просто назревает вопрос, а зачем изобретать велосипед? Собирать электрическую схему, писать заново код, тестировать и отлаживать. Есть уже готовый проект, модули и даже программы с исходным кодом.
Общее описание проекта
Судя по информации у компании было несколько таких прототипов, и в основном все они были на одно комнатное растение. Потом разработчики решили доработать схему, чтобы управление сразу шло на 4 горшка. А что, мне кажется разумно.
Вот таким образом выглядит система:
Очень удобная система, в ближайшем будущем хочу приобрести и поставить для полива комнатных растений. А мы двигаемся дальше.
Часть 1. Датчики и Шильды
Этот проект состоит из следующих элементов:
- Датчик влажности почвы — 4 шт
- Шильд для управления насосами — 1 шт
- Насос — 1 шт
- Блок питания 12 В — 1 шт
- Блок на 4 клапана — 1 шт
- Куча трубок (на ваше усмотрение)
- Ардуино УНО — 1 шт
Чем удобен этот комплект?
- Нету миллиона перемычек и километров проводов
- Меньше беспорядка, больше производительности
- Прост в использовании, подключай и пользуйся
- Можно контролировать до 4 комнатных растений
Часть 2. Заливаем код в Arduino
Мы заливаем сначала код, потому что дальше последует сборка и будет ограничен доступ к плате. Поэтому сделайте лучше сейчас.
Код есть во вставке, можете скопировать и залить в вашу плату.
Если впервые сталкиваетесь с платой Arduino, то про установку IDE и настройке написано в этой статье поподробнее.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | // установим все датчики влажности PIN ID int moisture1 = A0; int moisture2 = A1; int moisture3 = A2; int moisture4 = A3; // объявим значения влажности int moisture1_value = 0; int moisture2_value = 0; int moisture3_value = 0; int moisture4_value = 0; // установим выход реле для клапанов int relay1 = 3; int relay2 = 4; int relay3 = 5; int relay4 = 6; // установим выход реле на насос int pump = 2; void setup() { // Объявим реле, как выход pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(relay3, OUTPUT); pinMode(relay4, OUTPUT); // Объявим насос, как выход pinMode(pump, OUTPUT); // Откроем порт для мониторинга Serial.begin(9600); } void loop() { // читаем значения с датчиков влажности moisture1_value = analogRead(moisture1); moisture2_value = analogRead(moisture2); moisture3_value = analogRead(moisture3); moisture4_value = analogRead(moisture4); // проверяем, какое растение нуждается в воде // и расскоментируйте нужную строчку для конкретного клапана // установите значение требуемой влажности //if(moisture1_value<=450){ // digitalWrite(relay1, HIGH); //} //if(moisture2_value<=450){ // digitalWrite(relay2, HIGH); //} //if(moisture3_value<=450){ // digitalWrite(relay3, HIGH); //} //if(moisture4_value<=450){ // digitalWrite(relay4, HIGH); //} digitalWrite(pump, HIGH); digitalWrite(relay1, HIGH); delay(500); digitalWrite(relay2, HIGH); delay(500); digitalWrite(relay3, HIGH); delay(500); digitalWrite(relay4, HIGH); delay(500); digitalWrite(relay1, LOW); delay(500); digitalWrite(relay2, LOW); delay(500); digitalWrite(relay3, LOW); delay(500); digitalWrite(relay4, LOW); digitalWrite(pump, LOW); delay(500); // убедитесь, что есть хотя бы одно растение, которое нуждается в воде // если есть, включите насос //if(moisture1_value<=450 || moisture2_value<=450 || moisture3_value<=450 || moisture4_value<=450){ // digitalWrite(pump, HIGH); //} // Оросите растение в течении 5 с //delay(5000); // Выключите насос //digitalWrite(pump, LOW); // Пройдитесь по каждому клапану и выключите их //digitalWrite(relay1, LOW); //digitalWrite(relay2, LOW); //digitalWrite(relay3, LOW); //digitalWrite(relay4, LOW); // Подождите 5 минут и повторите процесс //Serial.println(moisture1_value); //delay(10000); //delay(300000); } |
Как вы видите код в нашем случае является универсальным, тут достаточно раскомментировать нужные строчки.
Часть 3. Сборка элементов
Из двух плат у нас получается некий «Бутерброд»:
Затем подключаем клапана:
После этого подключаем насос:
Следующим шагом у нас будет подключение датчиков влажности, для них уже специально выведены интерфейсы:
Порядок датчиков у нас следующий:
- А0 — растение №1
- А1 — растение №2
- А2 — растение №3
- А3 — растение №4
К интерфейсу можно подключить ещё два датчика, используя при этом А4 и А5. Ну к примеру:
- Добавить датчик освещения, чтобы узнать достаточно ли цвета получают растения
- Добавить датчик влажности, для определения влажности воздуха
- Добавить датчик температуры воды, чтобы понять холодная она или горячая
- Добавить датчик наличия дождя
Придумать здесь можно всё что угодно.
В итоге в сборе должна получиться вот такая система:
Система достаточно простая. Будет поливать ваши растения круглосуточно, самое главное не забывать менять баллон с водой.
На этом у меня всё, спасибо за внимание, пока-пока.
С уважением, Гридин Семён
Семён, привет!
Читаю твою статью про поливку растений, а в голове стрельнула мысль про реализацию управления пневмоподвеской автомобиля.
Ну вот смотри, насос — можно заменить на компрессор, клапаны так и будут клапанами, а датчики влажности заменить на датчики положения кузова (на каждой стойке).
Все это, конечно, грубое сравнение, да и скетч потребуется другой. Это я к тому веду, что при таком подходе можно реализовать много полезных штуковин, только успевай менять датчики и исполнительные устройства…
Привет, ну я скажу больше, даже алгоритмы практически идентичные. Код там придётся поковырять чуть-чуть, но ненамного. Честно, никогда не интересовался пневмоподвесками для машин. Я считаю, что это штука эта не нужная. Так чисто, на выставку съездить, попонтоваться.
Для выставки было бы круто реализовать не пневмо, а гидроподвеску. Видел, наверное, когда-нибудь прыгающие low-ride автомобили. В США это популярное направление у афроамериканцев.
Ну, а возвращаясь к теме пневмы, так она у нас популярна в узких кругах. Например, есть сообщество БПАН. Там парни пружины пилят, а особо продвинутые ставят пневмоподвеску.
Кто чем болеет, каждый по своему…