Датчик влажности почвы (ёмкостный): инструкция по использованию и примеры
Ёмкостный сенсор влажности почвы пригодиться для создания систем автоматического полива растений. Датчик не даст засохнуть комнатным цветкам и флоре на огороде.
Принцип работы
Ёмкостный датчик выполнен в виде штыря, которым погружается в грунт на расстояние до 80 мм. На штыре в виде дорожек расположены два электрода, но в отличии от резистивной модели, электроды ёмкостного сенсора защищены токоизолирующей маской и неподвержены коррозии.
Внутри ёмкостного датчика находится RC-генератор на таймере 555, частота которого зависит от ёмкости между двумя электродами, которые выполняю роль конденсатора. Изменение влажности грунта сказывается на его диэлектрических свойствах и меняет ёмкость, что приводит к повышению или понижению выходного сигнала датчика. Итоговое напряжение пропорционально степени влажности почвы.
Пример работы для Arduino и XOD
В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например Arduino Uno.
Схема устройства
Подключите датчик влажности почвы к аналоговому пину A0 платформы Arduino. Для коммуникации понадобятся соединительные провода «мама-папа».
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
Код для Arduino IDE
Прошейте платформу Arduino скетчем приведённым ниже.
После загрузки скетча, в Serial-порт будут выводиться текущие показания сенсора в 10-битном диапазоне.
Источник
Датчик влажности почвы (резистивный): инструкция по использованию и примеры
Используйте резистивный сенсор влажности почвы для создания систем автоматического полива растений. Датчик подойдёт для ухода за комнатными цветками и флоре на огороде. Не дайте своим растениям засохнуть!
Принцип работы
Датчик для измерения влажности почвы выполнен в виде вилки с двумя электродами, которыми погружается в грунт на расстояние до 40 мм. При подключении питания на электродах создаёться напряжение. Если почва сухая, её сопротивление велико и через датчик между электродами течёт слабый ток. Если земля влажная — её сопротивление становится меньше, а ток датчика между электродами соответственно увеличивается. По итоговому аналоговому сигналу можно судить о степени увлажнения почвы.
Максимальное напряжение на выходе S не превышает 75% от напряжения питания модуля V , т.е. сигнальный диапазон датчика равен:
На показания датчика также влияют следующие факторы:
Электроды датчика покрыты золотом, чтобы предотвратить пассивную коррозию, когда он выключен. Избавиться от электролитической коррозии, вызванной протекающим током, невозможно, поэтому сенсор резистивного типа рекомендуется запитывать через силовой ключ. То есть, включать его только на время измерений, чтобы максимально продлить ресурс. В плане эксплуатации это доставляет неудобство, поэтому рекомендуем обратить внимания на ёмкостный датчик влажности почвы, который в силу своего исполнения неподвержен корозии.
Пример работы для Arduino и XOD
В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например Arduino Uno.
Схема устройства
Подключите датчик влажности почвы к аналоговому пину A0 платформы Arduino. Для коммуникации понадобятся соединительные провода «мама-папа».
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
Код для Arduino IDE
Прошейте платформу Arduino скетчем приведённым ниже.
После загрузки скетча, в Serial-порт будут выводиться текущие показания сенсора в 10-битном диапазоне.
Патч для XOD
После загрузки прошивки, в отладочной ноде watch будут выводиться текущие показания сенсора в диапазоне от 0 до 0,75:
Пример для Espruino
В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии Espruino, например Iskra JS.
Схема устройства
Подключите датчик влажности почвы к аналоговому пину A0 платформы Iskra JS. Для коммуникации понадобятся соединительные провода «мама-папа».
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
Исходный код
Прошейте платформу Iskra JS скриптом приведённым ниже.
После загрузки скрипта, в консоль будут выводиться текущие показания сенсора в диапазоне от 0 до 75%.
Пример для Raspberry Pi
В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры Raspberry Pi, например Raspberry Pi 4.
Схема устройства
К сожалению в компьютере Raspberry Pi нет встроеенного аналого-цифрового преобразователя. Используйте плату расширения Troyka Cap, которое добавит малине аналоговые пины.
Подключите датчик влажности почвы к Raspberry Pi через плату расширения Troyka Cap к 3 пину. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.
Программная настройка
Исходный код
Запустите скрипт на малине приведённым ниже.
После загрузки скрипта, в консоль малины будут выводиться текущие показания сенсора в диапазоне от 0 до 75%.
Элементы платы
Измерительные электроды
Датчик построен на основе транзисторного усилителя тока. Для измерения влажности почвы на датчике расположены два электрода, которые для проведения измерений необходимо воткнуть в почву. Электроды подключены в цепь между коллектором (точка SP) и базой (точка SN) встроенного транзистора на плате MMBT2222ALT1G.
При изменении влажности почвы, меняется сопротивление между базой и коллектором, к которому подключен положительный полюс источника питания. Соответственно меняется и протекающий ток от коллектора через эмиттер на землю. В результате изменяется и выходное аналоговое напряжение сенсора (точка OUT). Подробности найдёте на принципиальной схеме датчика.
Troyka-контакты
Датчик подключается к управляющей электронике через три провода.
Источник
Датчик влажности почвы, резистивный
Общие сведения:
Trema-модуль датчик влажности почвы — подходит для создания систем автоматического полива растений — незаменимый помощник, как для ухода за комнатными растениями, так и для растений на огороде.
Видео:
Спецификация:
- Напряжение питания Vcc: 5 В или 3,3 В
- Напряжение на выходе датчика: 0 . 4,5 В
- Максимальный потребляемый ток:
Способ — 2 : Используя проводной шлейф и Shield
Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
Питание:
Входное напряжение питания 5 В или 3,3 В, постоянного тока, подаётся на выводы Vcc (V) и GND (G) датчика. Датчик можно подключить к постоянному питанию (тип подключения 1), а можно управлять питанием датчика (тип подключения 2) если подавать питание на датчик с любого информационного вывода, тогда функцией digitalWrite() можно включать или выключать датчик. Питание датчика от информационного вывода (тип подключения 2), возможно, благодаря низкому энергопотреблению датчика (потребляемый ток
Подробнее о модуле:
Чем выше влажность почвы, тем выше её электропроводность. Датчик погружается в грунт на расстояние до 45 мм и измеряет электропроводность почвы, между своими контактами. Напряжение на выходе датчика прямо пропорционально уровню измеренной электропроводности. Чем выше влажность почвы, тем выше уровень сигнала на выходе датчика.
- 0. 300 — сухая почва*
- 300. 500 — увлажнённая почва*
- 500. 800 — влажная почва*
Из графика видно, что электропроводность почвы, а следовательно и выходной сигнал датчика имеет флуктуации (хаотичные отклонения от среднего значения). Уровень сигнала на выходе датчика лежит в диапазоне от 0 В до 4,5 В.
*На показания датчика влияют следующие факторы:
- степень погружения датчика в почву (чем глубже погружён датчик, тем выше его показания)
- тип почвы, её химические и физические свойства (чем плотнее почва, тем выше показания датчика)
- наличие и количество примесей в воде, которой поливается почва.
Примеры:
Считывание показаний с датчика:
Показания датчика считываются вызовом функции analogRead(номер_вывода); которая возвращает число от 0 до 1023 (см. график выше).
Датчик запитан от выводов A0 и A1. Если датчик подключён к постоянному питанию (тип подключения 1), то строки с символом * в комментариях, можно удалить.
Для компенсации влияния флуктуаций электропроводности почвы, можно считывать усреднённые показания датчика.
Источник
Год измеряем влажность почвы на ESP8266 и двух батарейках. Часть 2
Всем привет! В этой статье хочется рассказать, как заставить датчик влажности почвы проработать год на двух батарейках (ААА) и при этом сделать все более менее правильно. Первая статья — про выбор среды разработки (Arduino IDE) и платформу Blynk.
Картинка домашнего дуба для привлечения внимания
Садовод любитель
Для начала небольшое признание — я не программист и я домашний садовод. И то и другое это мое хобби. У меня на подоконниках сделаны полки, с специальной сине-красной светодиодной подсветкой, под которой растения должны расти с бОльшим энтузиазмом. Не вдаваясь в детали фотосинтеза и прочую ботанику, можно сказать, что светодиодная подсветка создала одну проблему, решая которую и родилось устройство, которому посвящена эта статья.
Светодиодные линейки (мощность примерно 6 Вт), достаточно сильно нагреваются сами и нагревают полку и горшок с растением, который на ней стоит. Самому растению, подогреваемая почва не приносит какого либо дискомфорта, но возникает проблема быстрого пересыхания почвы.
При этом земля в горшках, которые стоят просто на подоконнике высыхает медленнее. А на верхних полках, там где во время полива не видно состояние почвы, регулярно случаются переливы или засухи.
Конечно же все уже придумано, и на Ebay можно купить вагон разных измерителей влажности почвы. Например, был куплен один экземпляр измерителя влажности с бипером (цена около 300 рублей).
Устройство работает, но есть несколько но:
- Не понятно на какой уровень влажности настроен бипер.
- Если устройств будет больше чем одно, то придется ходить и прислушиваться.
- Я ведь тоже так могу.
И тут Остапа понесло, ведь есть опыт (раз и два). Так родилось устройство способное измерять влажность почвы, освещенность, температуру и влажность воздуха, передавать результаты измерений в мобильное приложение и работать при этом от батареек достаточно продолжительное время. Про железо тут. А про программные особенности хочется рассказать подробнее в этой статье.
Анализируем энергопотребление
Согласно даташита, ESP8266 потребляет до 170 мА в режиме работы WiFi, 15 мА с выключенным модемом (Modem Sleep) и совсем ничего в режиме Deep Sleep – примерно 10 мкА.
Из потребляющего в нашем устройстве можно выделить WiFi модем, датчик AM2302 (на который подается 3.3 В через повышалку TPS60240DGKR) и мультиплексор (CD74HC4051M96) для коммутации входов АЦП.
Самый большой вклад в энергопотребление вносит WiFi и поэтому первым делом надо заставить ESP8266 стартовать с выключенным радиомодулем. После загрузки в режиме Modem Sleep можно сделать все измерения и только потом включать модем и передавать данные на сервер Blynk (для оптимизации потребления MQTT пока отключил), после чего уже заснуть до следующего раза.
Deep sleeep
При условии, что аппаратно все ноги соединены правильно (RST пин соединен с GPIO16), перевести ESP в режим Deep Sleep можно одной командой:
sleep_time – время сна в микросекундах, которое можно динамически менять и если, скажем, попытка передать данные не удалась (не работает роутер или не отвечают сервер blynk) – то можно установить таймер на 5-10 минут и после попробовать передать данные снова. А если все хорошо, то после успешного сеанса связи можно уснуть на час или сутки.
WAKE_RF_DISABLED — указывает на то, что проснется модуль с выключенным WiFi модулем.
Работа с WiFi
В этот раз также хотелось иметь возможность настраивать устройство без помощи компьютера через Captive портал. Но если, как в прошлый раз, взять библиотеку WiFiManager, то с выключенным модемом работать она будет как минимум странно. Поэтому всю логику работы данной библиотеки пришлось привязать к нажатию кнопки. А раз кнопка у нас всего одна и та используется для загрузки ПО через UART — то пришлось сделать так:
- Включаем питание (вставляем батарейки).
- Ждем мигание светодиода (в тестовом варианте слушаем бипер).
- Нажимаем кнопку и попадаем в WiFiManager.
Теперь мы можем открыть Captive портал, сохранить настройки WiFi и Blynk token.
В следующую загрузку библиотека уже использоваться не будет, а подключаться к WiFi будем средствами самой ESP.
В некоторых мануалах по оптимизации энергопотребления ESP8266 можно встретить команду WiFi.disconnect(); которая должна отключать модем от текущей WiFi сети. Однако на практике, эта команда удаляет сохраненный в памяти модема SSID() и пароль, поэтому использоваться ее мы не будем.
Считываем датчик AM2302
Для работы с датчиком температуры\влажности также была использована библиотека DHT Sensor Library от Adafruit. В целях экономии, питание на датчик подается не постоянно, а только по сигналу, специально выделенного GPIO. Однако, опытным путем установлено, что датчик достаточно продолжительное время выходит на рабочий режим и адекватные значения влажности (отличные от 99%) начинает выдавать примерно через 5 секунд после подачи на него питания. С одной стороны такая большая задержка на «прогрев» датчика это лишние мА, но возможность управлять питанием датчика AM2302 это скорее плюс, т.к. мы можем пользоваться датчиком не каждый раз или переставать измерять температуру\влажность при снижении заряда батареек.
Измеряем показания на АЦП
АЦП у нас используется для измерения трех параметров: заряд батареек, освещенность и влажность почвы. Для коммутации разных сигналов на вход единственного АЦП — используется мультиплексор (модель).
У ESP8266 АЦП 10-битный, а диапазон измеряемых напряжений 0..1 В. Поэтому в схеме предусмотрен резистивные делители, понижающий все измеряемые сигналы до уровня 1 В. При измерении заряда батареи — все замеры на графике выглядят правильно. Однако оказалось, что по мере снижения заряда батареек начали снижать и показания датчика яркости.
Результаты измерений 4х дней. Яркость снижается вместе с зарядом батареек.
Как оказалось при снижении напряжения питания, у нас пропорционально понижается напряжение, прикладываемое к датчику яркости и как следствие измеренная яркость тоже. Но к счастью, зависимость во всем диапазоне входных напряжений от 3.3В до 2.5В оказалась линейной (в пределах допусков) и исправить проблему можно простой нормировкой результата измерения.
График зависимости максимальной измеренной яркости\влажности в зависимости от заряда батареек
Максимально возможное значение влажности\яркости при текущем заряде батареи можно посчитать по формулам:
q_w = (adcbattery * 4) / 15; // влажность почвы
q_l = (adcbattery * 25) / 101; // яркость
Чтобы учесть возможные погрешности (и случайные всплески) измерений АЦП был реализован простейший медианный фильтр. Делаем три замера с небольшим интервалом, далее с помощью алгоритма быстрой сортировки (спасибо Википедия) находим среднее значение и его принимаем за результат.
Измерение влажности почвы
Для того, чтобы измерять влажность почвы, необходимо на земляной электрод подать напряжение и на другом его конце измерить сколько этого самого напряжения дошло, а сколько «потерялось» в почве. На практике оказалось, что при подаче «единицы» диапазон возможных значений на входе АЦП при нахождении электрода в очень сухой и очень влажной почве — совершенно незначителен, что-то около 100 мВ. Но у братьев из поднебесной было подсмотрено, что надо подавать ШИМ сигнал с частотой 100 кГц и скважностью 50% и в этом случае потери сигнала во влажной почве становятся весьма заметными.
Максимальна частота ШИМ, на которую способен ESP8266 равна около 78 кГц, но как показала практика и при 75 кГц результаты измерений влажности достаточно точные и отражают состояние почвы.
Чтобы активировать ШИМ надо:
Планы на будущее
В данный момент, если проводить все измерения 1 раз в минуту, то комплекта новых батареек (2 шт ААА) хватит на 4 дня или 5760 измерений. Если же делать по 12 замеров в день (раз в два часа), то батареек должно хватить на год как минимум (480 дней).
Но время автономной работы можно еще увеличить, если включать WiFi не каждое «просыпание», а пару раз в день. Но, чтобы это реализовать надо каким то образом отличать одно включение от другого. Оперативная память для этого не годится, т.к. в режиме Deep sleep очищается. Для этой цели мог бы подойти EEPROM, однако на ESP он реализован как часть флеша и писать туда часто не самая лучшая идея (и не самая энергоэффективная).
Но, не все так плохо и в нашем распоряжении еще есть 512 байт RTC памяти, которая прекрасно сохраняет данные в то время, пока чип находится в режиме Deep sleep. Я нашел для себя две новые функции и не успел еще их внедрить в проект.
Также в ближайшее время будет добавлена самая важная функция, а именно отправка звуковых (бипером) и мобильных (пуш) уведомлений в случае высыхания почвы. Пока как то не до этого было. Самое важное, о чем надо не забыть, это учет текущего времени, чтобы не начать пиликать ночью.
Заключение
Проект целиком на гитхабе.
Спасибо за внимание.
Отдельное спасибо моей жене за регулярный полив тестового цветка.
Источник