Итак, это будет система автоматического полива.
Автоматический полив будет осуществляться при наступлении определенных
климатических условий.
Кроме этого, данные о климатических условиях можно будет посмотреть
на веб-странице, подключившись по сети.
И также с этой же веб-страницы можно будет включить принудительный полив растений.
Ну начнем с того, что действовать система может,
поливая что-то – то есть у нас, естественно, присутствует помпа.
Поливает она в автоматическом режиме в зависимости
от наступления каких-то климатических условий.
Каких климатических условий?
Мы будем ориентироваться на влажность почвы, мы будем ориентироваться
на температуру воздуха и мы будем ориентироваться на освещенность.
Вы, наверное, знаете, что разные растения предпочитают различный режим ухода.
И на самом деле можно ориентироваться еще на большее количество показателей,
например: на кислотность почвы, на расписание полива,
привязанное ко времени, на, не знаю, атмосферное давление и влажность воздуха.
Но для базового варианта вот этих трех показателей будем считать, что достаточно.
Например, мы можем сделать вариант, что в темноте растение не нужно поливать или не
нужно его поливать, когда температура ниже какой-то отметки, и так далее.
Итак, значит, с помощью трех вот этих вот датчиков мы можем
определить момент, когда следует осуществить полив.
Затем мы говорим, что эти данные, полученные с датчиков,
мы хотим отображать на веб-странице.
Для нас это нечто новое.
Мы для реализации этого воспользуемся новой платой расширения Ethernet shield,
которая и позволит подключать Arduino к локальной сети,
ну а там и до Интернета рукой подать.
Значит, вывод веб-страницы будет реализован благодаря Ethernet шилду.
Соответственно, получение команды на
принудительный полив будет реализовано благодаря этой же части.
Вроде бы, все, но когда мы начнем все это реализовывать, мы быстро поймем,
что в какой-то момент вода в емкости, откуда помпа ее берет, заканчивается.
А как мы знаем, помпа плохо переносит перекачку пустоты – воздуха.
Поэтому нам для сохранности устройства нужно определять момент,
когда в емкости закончилась вода.
То есть у нас появляется какой-то новый функционал,
который не связан с заявленным пользовательским,
скажем так, функционалом, который был в описании устройства.
Здесь нам предстоит выбрать какое-то решение для
определения наличия воды в емкости.
Я навскидку могу предложить 3 варианта: например,
использовать ультразвуковой дальномер и направить его
вниз на воду, и измерять уровень воды.
Соответственно, когда он станет слишком низким,
то есть до воды получится слишком большое расстояние, значит она кончилась.
У этого метода есть еще и такой плюс, что мы можем точнее дозировать воду.
Если мы знаем площадь поверхности воды, то, зная расстояние до нее,
мы можем вычислить объем выливаемой воды.
Это первый вариант.
Другой вариант: мы можем поместить в емкость какой-нибудь поплавок
и разместить, например, на нем магнит,
и на корпусе разместить датчик Холла (то есть датчик магнитного поля),
и определять прохождение магнита мимо этого датчика.
Либо мы на поплавке можем разместить какую-то контрастную
разметку и с помощью датчика оттенка серого определять,
прошла ли метка мимо него.
Ну сейчас я предлагаю попробовать самый простой вариант –
это вариант с кодовым названием «концы в воду».
Просто опустить туда 2 провода и на один из них подавать сигнал,
а с другого считывать.
Соответственно, вода у нас не дистиллированная,
то есть в ней есть какие-то примеси, она является проводником.
И если оба контакта находятся в воде, мы будем на входе получать
простой цифровой сигнал, как будто бы нажатую кнопку.
Кстати, пока мы готовились к съемкам, мой коллега предложил
еще один хитрый вариант: можно светить в емкость лазером,
который, как известно, будет по-разному преломляться,
проходя через воду и проходя через пустую емкость.
И можно по преломлению луча определять, есть ли там вода.
Но мы вернемся к простому способу «концы в воду».
Что же мы будем делать, если обнаружим то, что вода кончилась?
Мы не станем замахиваться на подключение к водопроводу,
чтобы наполнить емкость вновь.
Поэтому все, что мы можем сделать, это проинформировать пользователя о такой
нештатной ситуации и не осуществлять полив, то есть не мучить зря помпу.
Для оповещения пользователя мы можем воспользоваться звуковым сигналом,
если пользователь находится поблизости.
Ну а также невредно будет выводить об этом информацию на веб-страницу,
потому что если вы, например, уехали в отпуск и тщательно следите за
судьбой своего растения, и вдруг вы обнаруживаете,
что в емкости-то кончилась вода, и при всем желании вы не сможете
его автоматически полить, вам нужно срочно предпринять какие-то меры по наполнению,
по возвращению и наполнению емкости водой.
Итак, у нас базовая конфигурация с попмой, датчиками и Ethernet шилдом
дополнилась двумя проводами, которые, по сути, представляют собой датчик воды,
и пьезодинамиком, который будет индикатором окончания воды.
Что касается прохождения сигнала.
С подключением датчиков температуры и освещенности нам все уже понятно.
Подключение датчика влажности почвы является пока что для нас белым пятном.
С ним предстоит разобраться.
Помпу мы тоже уже умеем подключать,
и здесь мы пользуемся посредником – транзистором в модуле «Силовой ключ».
Ethernet shield подключается,
понятно, как плата расширения, а что делать с кодом,
с вот этой всей работой по формированию веб-страницы мы,
пока что не знаем, у нас очередное белое пятно.
Простой цифровой сигнал мы умеем и записывать, и получать.
И работать с пьезодинамиком мы также умеем.
Поэтому у нас в схеме образовалось два вопросительных знака,
которые нам нужно устранить.