Емкостной датчик влажности почвы
Общие сведения:
Trema-модуль емкостной датчик влажности почвы — в отличие от резистивных датчиков влажности не подвержен коррозии. Датчик является аналоговым, напряжение на выходе обратно пропорционально влажности почвы. Датчик идеально подходит для наблюдения изменений влажности почвы, для создания систем автоматического полива растений и для мониторинга целостности грунтового трубопровода.
Спецификация:
- Напряжение питания Vcc: 5 В или 3,3 В
- Напряжение на выходе датчика при Vcc 5В:
3 . 1,75 В; при Vcc 3,3В:
2 . 1 В
Способ — 2 : Используя проводной шлейф и Shield
Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO
Питание:
Входное напряжение питания 5 В или 3,3 В, постоянного тока, подаётся на выводы Vcc (V) и GND (G) датчика. Датчик можно подключить к постоянному питанию (тип подключения 1), а можно управлять питанием датчика (тип подключения 2) если подавать питание на датчик с любого информационного вывода, тогда функцией digitalWrite() можно включать или выключать датчик. При таком подключении нужно дать датчику время для включения генератора частоты, примерно 50 миллисекунд.
Питание датчика от информационного вывода (тип подключения 2), возможно, благодаря низкому энергопотреблению датчика (потребляемый ток
В зависимости от влажности почвы, при питании 5 вольт показания датчика находятся в диапазоне от
1.75 вольт; при питании 3,3 вольта от
1. Соответственно, диапазон показаний функции analogRead() будет зависеть от напряжения питания датчика.
График зависимости выходного напряжения датчика от влажности почвы при питании 5В
Примеры:
Считывание показаний с датчика:
Показания датчика считываются вызовом функции analogRead(номер_вывода);
Тип подключения 1:
Тип подключения 2: датчик запитан от выводов A0 и A1.
Так как датчик является инверсным, для удобства чтения данных можно воспользоваться встоенной функцией map(), которая в следующем скетче преобразует и инвертирует «сырые» показания датчка в диапазон от 0 до 100:
Источник
Беспроводной DIY монитор влажности почвы
Приветствую всех читателей Хабра! Сегодня хочу поделится с вами моим новым проектом — беспроводным датчиком влажности почвы, который построен на основе всем известного модуля влажности почвы с алиэкспрес. Новый датчик это логическое продолжение первого моего DIY проекта на эту тему. Но в новой реализации это уже не ардуино модуль, а законченный девайс с своим собственным корпусом. Итак, каша из топора, часть вторая! 🙂
Китайский модуль измерения влажности почвы построен на таймере 555. Метод измерения — емкостной. Для моего проекта нужна была версия модуля с установленным стабилизатором напряжения XC6206P332 на 3.3В, который в дальнейшем придется удалить с платы модуля. Дело в том что в таких версиях используемся модификация таймера TLC555 с нижним порогом по питанию в 2В. В версиях без стабилизатора используются таймеры NE555 c нижним порогом по питанию в 5В. Но в любом случае что проще купить для повторения этого проекта дело повторяющего. В первом варианте выпаиваем стабилизатор напряжения, во втором меняем таймер например на такой — LMC555 (даташит) работающий даже от 1.5В. Для беспроводного модуля к китайскому датчику влажности почвы я выбрал радиомодуль от EBYTE E73C на котором установлен чип nRF52840. Аргументом стала цена модуля и имеющееся количество данных модулей у меня в запасах.
Беспроводной модуль получился очень простой, RGB светодиод, пара кнопок, полевой транзистор, батарейка. Собрать такой девайс сможет даже самый неопытный начинающий паяльщик. На датчике влажности помимо удаления стабилизатора напряжения так же необходимо выпаять разъем и впаять на его место штырьевую вилку 3P, шаг 2.54 мм.
Размеры платы получились немного меньше чем в первом проекте — 42х29мм, определялись размером держателя батарейки.
Корпус был напечатан на моем бытовом SLA принтере ANYCUBIC. Время печати деталей порядка пары часов. Последующая пост обработка заняла около получаса. Стоимость израсходованной полимерной смолы
Потребление в режиме сна — 4.7мкА, в режиме передачи 8мА. Интервал замеров изменяемый, шаг 1 минута. Время измерения 50мс (5 замеров в тестовой программе), потребление во время измерения
1 мА. Так же производятся измерение температуры чипа, измерение уровня заряда батарейки. Передача данных на контролер УД посредством сети Mysensors, передача данных на контролер УД посредством сети Zigbee.
Код тестовых программ находится на моем Github
Пример работы в сети Mysensors и УД Мажордомо
Пример работы в сети ZigBee и УД Мажордомо
Код настройки конвертора в модуле zigbee2mqtt для датчика влажности (пока не уверен, что это верное решение).
Тестовую прошивку написал один из участников нашего DIY сообщества — Lenz, вот его GIthub.
Стоимость компонентов которые пришлось добавить к китайскому влагомеру составила порядка 400-500 рублей. На мой взгляд вполне неплохо.
Видео работы датчика
Дальнейшие планы на этот проект. Хочется заменить МК на что то более простое, например на nRF52810 или nRF52811, но всё будет упирается в цену, скорее всего придется отказаться от радиомодулей и сделать просто на чипе. Возможно подумаю добавить зуммер, вполне вероятно стабилизатор питания, так как сейчас необходимо учитывать напряжение питания при замере. Довести до стабильного состояния Zigbee версию, сделать BLE версию, сделать мобильное приложение-показометр. Вообщем точно будет что-то еще.
Если вас заинтересовал данный проект, предлагаю зайти в группу телеграмм, там всегда будет оказана помощь в освоении протокола Майсенсорс, Zigbee, BLE на nRF5, помогут освоить программирование nRF52 в Ардуино ИДЕ и не только в ней.
Источник
DIY датчик влажности почвы с E-Ink экраном
Приветствую всех читателей Хабра! Сегодня хочу рассказать вам об одном из своих проектов, это датчиком влажности почвы с небольшим экраном на электронных чернилах, датчик работает от батарейки, умеет отправлять данные по воздуху в какую нибудь из систем Умного Дома. Данный проект это дальнейшее развитие другого моего DIY проекта датчика влажности почвы.
Хронология:
В этом проекте, как и в предшествующих ему для измерения влажности в почве используется 555-ый таймер. Так как в этом проекте не используется готовый китайский сенсор с АлиЭкспресс то для этого проекта я выбрал КМОП таймер LMC555CMX. Заявляется стабильная работа на низких напряжениях от 1.5в, сверх низкое потребление в районе 150мкА, частота 3 МГц (даташит). Таймер по ножкам совместим с NE555 и другими аналогами.
Для вывода информации на самом датчике был использовать e-ink дисплей с диагональю 1.02 дюйма, который я уже ранее использовал в другом своем проекте миниатюрного датчика температуры и влажности.
- модель: GDEW0102T4,
- IC Driver: UC8175,
- разрешение экрана: 128×80 пикселей (DPI 145),
- напряжение питания: 2.3в — 3.6в,
- потребление в режиме обновления изображения: 1.5мА,
- потребление в режиме глубокого сна: 200нА,
- время обновления экрана в стандартном режиме: 3сек,
- время обновления экрана в режиме частичного обновления: 300мс.
Было разработано две версии плат под два радио модуля разных производителей. Радио модули были выбраны таким образом, что бы полностью перекрыть всю линейку nRF52. Модуль MINEW MS50SFA имеет три модификации на которые устанавливаются nRF52810, nRF52811 и nRF52832. И второй модуль это EBYTE E73-2G4M08S1 который имеет две модификации C и E (на само деле уже три, в третьей вместо керамической антенны используется внешняя) на которые устанавливаются nRF52840 и nRF52833.
Почему так много nRF? Просто мне хотелось минимизировать минусы при использовании датчиков в различных условиях. Например если сенсор находится недалеко от шлюза то будет достаточно мощности радиопередатчика в 4dBm, при этом получаем очень привлекательное потребление устройства когда оно находится в режиме сна(а это большая часть времени), примерно 2 мкА. Если шлюз находится на удалении, то можно будет использовать датчики на которых установлены радиомодули с nRF52833 или nRF52840, у которых максимальная мощность радиопередачи 8dBm. Ну и в мечтах есть планы на Тред и Зигби, а для этого нужно много места, которое есть только в nRF52833 и nRF52840.
Изготовление плат заказывалось в Китае, из-за габаритов основной платы с сенсором влажности стоимость заказа была выше, так как плата не вписывалась в 10х10см, а это максимальные размеры которые можно сделать за $2. Вторая плата для дисплея естественно вписалась в двухдолларовые условия.
Корпус устройства был отпечатан на FDM принтере PLA нитью, после печати корпус был отшлифован и отполирован.
Работа устройства
Устройство может быть сконфигурировано внешними командами отправляемыми через интерфейс контроллера Умного Дома. Внешними командами можно изменить интервал считывания сенсоров влажности почвы и температуры от 1 часа до 24 часов с шагом в один час. Можно изменить интервал считывания и отправки уровня заряда батарейки, от 1 часа до 3 суток с шагом в 1 час. Изменить порог оповещения о необходимости полива, в зависимости от модели вашего цветка 🙂 и типа почвы, шаг 1 %, по умолчанию установлен порог в 45%. Так же можно внешней командой сделать сброс устройства к первоначальным настройкам, происходит полное очищение памяти устройства, после устройство перезагружается и пытается зарегистрироваться в сети как новое устройство.
Устройство имеет кнопку «меню», через меню можно инвертировать изображение на экране(черное\белое), вызвать презентацию(передача параметров в УД) устройства и доступных у него сенсоров, включить вручную одноразово режим поиска сети(при потере сети, минуя стандартный автоматический поиск с интервалом в 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. Я нашел для себя две новые функции и не успел еще их внедрить в проект.
Также в ближайшее время будет добавлена самая важная функция, а именно отправка звуковых (бипером) и мобильных (пуш) уведомлений в случае высыхания почвы. Пока как то не до этого было. Самое важное, о чем надо не забыть, это учет текущего времени, чтобы не начать пиликать ночью.
Заключение
Проект целиком на гитхабе.
Спасибо за внимание.
Отдельное спасибо моей жене за регулярный полив тестового цветка.
Источник