Как работает датчик влажности почвы, и его взаимодействие с Arduino
Когда вы слышите термин «умный сад», вам приходит в голову система, которая измеряет влажность почвы и автоматически поливает ваши растения.
С этим типом системы вы можете поливать растения только при необходимости и избегать чрезмерного или недостаточного полива.
Если вы хотите построить такую систему, вам обязательно понадобится датчик влажности почвы.
Как работает датчик влажности почвы, и его взаимодействие с Arduino
Как работает датчик влажности почвы?
Работа датчика влажности почвы довольно проста.
Вилка в форме зонда с двумя открытыми проводниками действует как переменный резистор (потенциометр), сопротивление которого изменяется в зависимости от содержания воды в почве.
Рисунок 1 – Работа датчика влажности почвы
Это сопротивление обратно пропорционально влажности почвы:
- большее количество воды в почве означает лучшую проводимость и приводит к снижению сопротивления;
- меньшее количество воды в почве означает худшую проводимость и приводит к повышению сопротивления.
Датчик выдает выходное напряжение в соответствии с сопротивлением, измеряя которое мы можем определить уровень влажности.
Обзор аппаратного обеспечения
Типовой датчик влажности почвы состоит из двух компонентов.
Датчик содержит вилочный зонд с двумя открытыми проводниками, который погружается в почву или в любое другое место, где должно измеряться содержание воды.
Как сказано выше, он действует как переменный резистор, сопротивление которого изменяется в зависимости от влажности почвы.
Рисунок 2 – Зонд датчика влажности почвы
Модуль
Датчик также содержит электронный модуль, который соединяет датчик с Arduino.
В соответствии с сопротивлением датчика модуль выдает выходное напряжение, которое доступно на выводе аналогового выхода (AO).
Этот же сигнал подается на высокоточный компаратор LM393 для его оцифровки, с выхода которого сигнал подается на вывод цифрового выхода (DO).
Рисунок 3 – Регулировка чувствительности датчика влажности почвы
Для регулировки чувствительности цифрового выхода (DO) модуль содержит встроенный потенциометр.
С помощью этого потенциометра вы можете установить пороговое значение; таким образом, когда уровень влажности превысит пороговое значение, модуль выдаст низкий логический уровень, в остальных случаях на цифровой выход будет подаваться высокий логический уровень.
Эта настройка очень полезна, когда вы хотите инициировать действие при достижении определенного порога. Например, когда уровень влажности в почве пересекает пороговое значение, вы можете активировать реле, чтобы начать перекачивание воды. Вот вам идея!
Совет: поверните движок потенциометра по часовой стрелке, чтобы увеличить чувствительность, или против часовой стрелки, чтобы уменьшить ее.
Рисунок 4 – Светодиодные индикаторы питания и состояния почвы
Помимо этого, модуль имеет два светодиода. Индикатор питания загорится, когда на модуль будет подано напряжение питания. Светодиод состояния загорится, когда на цифровой выход будет подаваться низкий логический уровень.
Распиновка датчика влажности почвы
Датчик влажности почвы очень прост в использовании и содержит только 4 вывода для связи с внешним миром.
Рисунок 5 – Распиновка датчика влажности почвы
AO (аналоговый выход) выдает аналоговый сигнал с напряжением в диапазоне между напряжением питания и 0 В и будет подключен к одному из аналоговых входов нашей платы Arduino.
Вывод DO (цифровой выход) выдает цифровой выходной сигнал со схемы встроенного компаратора. Вы можете подключить его к любому цифровому выводу на Arduino или напрямую к 5-вольтовому реле или подобному устройству.
Вывод VCC подает питание на датчик. Рекомендуется питать датчик напряжением от 3,3 до 5 В. Обратите внимание, что сигнал на аналоговом выходе будет зависеть от того, какое напряжение питания подается на датчик.
GND для подключения земли.
Измерение влажности почвы с помощью аналогового выхода
Поскольку модуль предоставляет как аналоговый, так и цифровой выходные сигналы, то для нашего первого эксперимента мы будем измерять влажность почвы, считывая аналоговые показания.
Подключение
Давайте подключим наш датчик влажности почвы к плате Arduino.
Сначала вам нужно подать питание на датчик. Для этого вы можете подключить вывод VCC на модуле к выводу 5V на Arduino.
Однако одной из широко известных проблем с этими датчиками является их короткий срок службы при воздействии влажной среды. При постоянной подаче питания на зонд скорость коррозии значительно увеличивается.
Чтобы преодолеть эту проблему, мы рекомендуем не подавать питание на датчик постоянно, а включать его только тогда, когда вы снимаете показания.
Самый простой способ сделать это – подключить вывод VCC к цифровому выводу Arduino и устанавливать на нем высокий или низкий логический уровень, когда это необходимо.
Кроме того, итоговая мощность, потребляемая модулем (оба светодиода горят), составляет около 8 мА, поэтому можно запитать модуль от цифрового вывода на Arduino.
Итак, давайте подключим вывод VCC модуля к цифровому выводу 7 Arduino, а вывод GND модуля к выводу GND Arduino.
И, наконец, подключите вывод AO модуля к выводу A0 аналого-цифрового преобразователя Arduino.
Схема соединений показана на рисунке ниже.
Рисунок 6 – Подключение датчика влажности почвы к Arduino для считывания показаний на аналоговом выходе
Калибровка
Чтобы получить точные показания с датчика влажности почвы, рекомендуется сначала откалибровать его для конкретного типа почвы, которую вы планируете контролировать.
Различные типы почвы могут по-разному влиять на показания датчика, поэтому ваш датчик в зависимости от типа используемой почвы может быть более или менее чувствительным.
Прежде чем вы начнете хранить данные или запускать события, вы должны увидеть, какие показания вы на самом деле получаете от вашего датчика.
Чтобы отметить, какие значения выводит ваш датчик, когда почва максимально сухая, и когда она полностью насыщена влагой, воспользуйтесь скетчем, приведенным ниже.
Когда вы запустите этот скетч, вы увидите похожие значения в мониторе последовательного порта:
850, когда почва сухая;
400, когда почва полностью насыщена влагой.
Рисунок 7 – Калибровка датчика влажности почвы
Этот тест может потребовать несколько проб и ошибок. Как только вы получите хороший контроль над этими показаниями, вы сможете использовать их в качестве пороговых значений, если намерены инициировать какое-либо действие.
Финальная сборка
Основываясь на значениях калибровки, программа, приведенная ниже, задает следующие диапазоны для определения состояния почвы:
- 750 – достаточно сухая для полива.
Если все в порядке, вы должны увидеть вывод в мониторе последовательного порта, похожий на приведенный ниже.
Рисунок 8 – Вывод аналоговых показаний датчика влажности почвы
Измерение влажности почвы с помощью цифрового выхода
Для нашего второго эксперимента мы определим состояние почвы с помощью цифрового выхода.
Подключение
Мы будем использовать схему из предыдущего примера. На этот раз нам просто нужно удалить подключение к выводу аналого-цифрового преобразователя и подключить вывод DO модуля к цифровому выводу 8 Arduino.
Соберите схему, как показано ниже:
Рисунок 9 – Подключение датчика влажности почвы к Arduino для считывания показаний на цифровом выходе
Калибровка
Для калибровки цифрового выхода (DO) модуль имеет встроенный потенциометр.
Вращая движок этого потенциометра, вы можете установить пороговое значение. Таким образом, когда уровень влажности превысит пороговое значение, светодиод состояния загорится, и модуль выдаст низкий логический уровень.
Рисунок 10 – Состояния цифрового выхода датчика влажности почвы
Теперь, чтобы откалибровать датчик, вставьте зонд в почву, когда ваше растение будет готово к поливу, и подстройте потенциометр по часовой стрелке так, чтобы светодиод состояния горел, а затем подстройте потенциометр обратно против часовой стрелки, пока светодиод не погаснет.
Теперь ваш датчик откалиброван и готов к использованию.
Код Arduino
После того, как схема будет собрана, загрузите в Arduino следующий скетч.
Если все в порядке, вы должны увидеть вывод в мониторе последовательного порта, похожий на приведенный ниже.
Рисунок 11 – Вывод цифровых показаний датчика влажности почвы
Источник
DIY Zigbee датчик влажности почвы
Приветствую читателей Habr! Хочу поделиться с вами своим очередным проектом, сегодня речь пойдёт о небольшом датчике измерения влажности почвы на чипе СС2530. Проект основывается на разработке с открытым исходным кодом DIYRUZ Flower, разработчик @anonymass. Измерение влажности почвы у датчика осуществляется ёмкостным методом, работает от батарейки CR2450 или CR2477, есть защита от переполюсовки батарейки, датчик предназначен для работы в сетях Zigbee.
Я уже давно посматривал в сторону Zigbee, огромное количество недорогих фабричных устройств, появившихся в последние годы и скорость с которой после появления проекта zigbee2mqtt эта технология стала захватывать умы домашних автоматизаторов, отличные DIY-проекты, которые во многом так же стали драйвером этой популярности, все эти факты просто кричали тебе туда надо.
Почти сразу как я обзавёлся небольшим количеством фабричных и DIY устройств и запустив у себя Zigbee сеть мне захотелось сделать что-то под себя. Родившаяся идея сделать датчик влажности почвы органично вписалась в мои планы, так как я как раз заканчивал тесты другого своего проекта аналогичного датчика на nRF52 c e-ink экраном. Компактные размеры и внешний вид это всё что закладывалось из требований в будущий проект, а заготовка под эти требования у меня, получается, уже была.
▍ Потратив пару часов на переработку проекта на nRF52 железная часть проекта на CC2530 была готова:
Опираясь на опыт (хоть и скромный, так как я не агроном) в повседневном использовании таких датчиков на подоконниках и с учётом параметров потребления у чипов CC2530 в датчике был заложен минимальный функционал, исключительно измерение уровня влажности почвы. Плата датчика получился в размерах 137мм х 20мм, для удобства сборки электронные компоненты располагаются на одной стороне платы, за исключением держателя батарейки, который напаивается на обратную сторону платы. Датчик имеет светодиод, пару кнопок, порт программирования, простую защиту от переполюсовки батарейки на транзисторе. Время сборки датчика при ручной пайке составляет 10-15 минут, схема датчика состоит всего из 10 элементов, включая радиомодуль.
Если сборка датчика занимает 10-15 минут, то изготовление корпуса этим, к сожалению, похвастаться не может.
▍ С разработкой модели корпуса особых проблем не было, так как за основу также был взят корпус от проекта датчика влажности почвы на nRF52 c e-ink. Пара штрихов в редакторе и корпус стал немного тоньше и без выреза под экран, ещё парой штрихов корпус был дополнен окном для индикации расположенного на плате светодиода. Сделал сразу два варианта задней крышки под батарейку CR2450 и CR2477. Печать всех трёх деталей корпуса занимает чуть больше часа. На этом лёгкая часть с корпусом заканчивается, далее начинается грустная история, шлифовка, сверловка, заливка жидким УФ полимером индикаторного отверстия под светодиод, полировка. На всё это времени было потрачено около полутора двух часов. Наверное, как самый хороший и правильный вариант изготовления корпуса стоит рассматривать просто печать корпуса на хорошо настроенном принтере, уверен результат будет не хуже.
▍ Основа программной части проекта это популярный проект DIYRUZ Flower. Я определённо не программист, мой багаж — это опыт пары лет программирования в Arduino, который в принципе позволил мне прочитать код проекта и разобраться в нём. Трудным моментом, пожалуй, можно отметить настройку среды для разработки. Но описание проблем с которыми столкнулся, опущу, в этой статье просто приведу пару ссылок на мануалы и статьи, на которые я опирался (ссылка 1, ссылка 2, ссылка 3) и также поблагодарю неравнодушных к чужим проблемам участников чата ZIGDEV, помогавших советами. Изменения, которые я внёс в код оригинального проекта: увеличение интервала чтения сенсора влажности почвы до 1 часа, хранение предыдущих значений влажности почвы для сравнения с новыми значениями и отправки данных в сеть только при изменении значений на 1%. Добавлено чтение внутреннего температурного сенсора CC2530, сравнение, и отправка данных при изменении температуры на 1°С. Конечно, точность температуры с внутреннего температурного сенсора имеет большую погрешность, но в целом даёт понимание об изменении температуры воздуха. Точнее, этот параметр можно откалибровать в конверторе zigbee2mqtt, правда, особой (и не особой) нужды я в этом не увидел.
Так выглядит передача данных об уровне влажности почвы, запрос уровня влажности почвы через модуль Телеграм в Мажордомо
Проблема с которой я столкнулся при тестировании
Об этом решил упомянуть, уверен это кому-то поможет быстрее найти решение, столкнувшись с чем-то похожим. Вопрос, возникший при тестировании датчиков, вызывал непонимание в каком направлении копать, рождал разнообразные теории магического характера :). Суть проблемы была в том, что датчики при слабом сигнале (linkquality ▍ На своём GITHUB для желающих повторить я выложил гербер файлы проекта для заказа плат, список компонентов, схему, модели корпуса, исходники проекта, скомпилированные файлы программы для прошивки радиомодулей.
Устройство уже добавлено в список поддерживаемых на гитхабе проекта zigbee2mqtt, автор проекта очень оперативно реагирует на pull requests.
Немного о грустном в этом направлении, я использую Мажордомо в качестве системы умного дома у себя, для этой системы написан замечательный модуль z2m, к сожалению, мой pull request висит там не рассмотренным уже месяц, так что пока на своём гитхаб я написал инструкцию о том, где необходимо внести изменения чтобы вывод информации о датчике в мажордомо заиграл красками :).
Такая же печальная история с другим проектом — SLS шлюз. Я планировал на даче развернуть сеть Zigbee управляемую через шлюз SLS, протестировать его, погонять свои датчики, поделится своими впечатлениями. Но мне так и не удалось получить обещанную прошивку с поддержкой моего датчика, наверное, забыли, а внешние конверторы в этом проекте не поддерживаются :(.
Если вы как и я, хотите понять, что такое Zigbee, попытаться сделать свои первые DIY Zigbee устройства, то приглашаю вас в чат для разработчиков zigbee девайсов/прошивок ZIGDEV
Если вам интересно всё, что связано с DIY, вы являетесь DIY разработчиком или хотите только начать, вы заинтересованы в использовании DIY девайсов и хотите узнавать первыми о моих проектах, то приглашаю всех в телеграм чат — DIYDEV.
Так же приглашаю читателей обсудить это и любые другие устройства в самый главный Телеграм-чат по Zigbee.
Источник