Меню

Емкостной датчик влажности почвы esp8266

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Умная система полива растений на основе ESP8266, DHT11 и датчика влажности почвы

Интеллектуальная ирригационная система своими руками

Большинство дачников и фермеров имеют немалые сельскохозяйственные угодия, и иногда становится очень трудно отследить каждый уголок возделываемой земли. Иногда существует вероятность неравномерного разбрызгивания воды при поливе. Это приводит к плохому качеству урожая, что в дальнейшем может привести к финансовым потерям. В этом проекте мы рассмотрим создание интеллектуальной ирригационной системы, использующей преимущества Интернета вещей, которая полезна в практическом плане и облегчает ведение сельского хозяйства.

Интеллектуальная система полива имеет широкие возможности для автоматизации всей системы полива. В данном случае мы создадим систему полива на основе механизма Интернета вещей с использованием модуля ESP8266 NodeMCU и датчика DHT11. Она будет не только автоматически орошать воду в зависимости от уровня влажности в почве, но и отправлять данные на сервер ThingSpeak для отслеживания состояния почвы. Система будет состоять из водяного насоса, который будет использоваться для разбрызгивания воды на землю в зависимости от условий окружающей среды, таких как влажность воздуха, влажность почвы и температура.

Перед началом важно отметить, что для разных культур требуются разные условия влажности воздуха, температуры и влажности почвы. Поэтому в этом примере мы используем такую культуру, для которой влажность почвы должна составлять около 50-55%. Таким образом, когда почва теряет влажность менее чем на 50%, моторный насос автоматически включается для разбрызгивания воды и будет продолжать разбрызгивать воду до тех пор, пока влажность не поднимется до 55% и после этого насос будет выключен. Данные датчика будут отправлены на сервер ThingSpeak через определенный интервал времени, чтобы их можно было контролировать из любой точки мира. Принципиальная схема подключения для этой интеллектуальной ирригационной системы приведена далее.

А так она может выглядеть в макетном виде для тестирования.

При программировании модуля ESP8266 NodeMCU в качестве внешней библиотеки используется только библиотека датчиков DHT11. Датчик влажности выдает аналоговый выход, который может быть считан через аналоговый вывод A0 ESP8266 NodeMCU. Так как NodeMCU не может выдавать выходное напряжение более 3,3 В от своей линии GPIO, поэтому мы используем релейный модуль для привода насоса двигателя 5 В. Также датчик влажности почвы и датчик DHT11 питаются от внешнего источника питания 5 В.

Полный код с комментариями приведен далее. Здесь стоит лишь отметить ососбенности работы с ThingSpeak. В функции sendThingspeak() мы проверяем, подключена ли система к серверу, и если да, то мы подготавливаем строку, в которую записывается показание влажности воздуха, температуры, влажности почвы, и эта строка будет отправляться на сервер ThingSpeak вместе с ключом API и адресом сервера. Данные отправляются на сервер ThingSpeak с помощью функции client.print(), которая содержит ключ API, адрес сервера и строку, подготовленную на предыдущем шаге. Наконец, вот так выглядят данные на панели инструментов ThingSpeak.

Обратите внимание, что важно выключить двигатель, когда влажность почвы достигнет необходимого уровня после разбрызгивания воды. Вы можете сделать более умную систему, которая может содержать разные элементы управления для разных культур.

Источник

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

ESP8266 и датчик влажности почвы

ESP8266 – отличный пример многофункциональной электроники. Если вам нравится Arduino, вам также понравится ESP8266. Он маленький, требует всего 3,3 вольт и, что лучше всего, имеют все возможности подключения по WiFi. ESP8266 идеально подходит, если вы хотите подключить к Интернету практически любое устройство для реализации концепции Интернета вещей.

ESP8266 может использоваться во многих отраслях автоматизации, даже в автоматизации сельского хозяйства. С помощью него можно создать веб-датчик влажности, чтобы знать, когда растениям нужна вода. Таким образом, растения станут частью Интернета вещей. Из этого проекта вы узнаете, как связать датчик влажности почвы с ESP8266 NodeMCU. И узнайте, как работает датчик в зависимости от уровня влажности, и как проверить выходные данные с помощью монитора последовательного порта.

Датчик влажности можно использовать для определения влажности почвы или для определения, есть ли вода вокруг датчика, чтобы растение в вашем саду могло получать воду, когда оно испытывает жажду. Этот датчик очень прост в использовании, вы можете просто вставить его в почву и прочитать данные. С помощью этого датчика вы можете сделать небольшой проект, который позволит растению отправить вам сообщение типа «Я хочу пить, пожалуйста, налейте мне немного воды». Сам датчик состоит из чувствительного элемента в виде вилки и преобразовательного элемента в виде небольшой платы.

Читайте также:  Минеральный комплекс парник для чего

Подключить датчик влажности к ESP8266 NodeMCU очень просто. Соедините два контакта датчика влажности с двумя контактами в цепи усилителя, использовав при этом перемычки. Подключите Vcc (питание) усилителя к контакту 3,3 V на NodeMCU. Подключите вывод GND (заземление) к выводу GND на NodeMCU. Подключите аналоговый выходной контакт к контакту A0 на NodeMCU. Подключите NodeMCU к ПК через USB-кабель. Схема подключения ESP8266 NodeMCU и датчика влажности может выглядеть следующим образом.

Теперь перейдем к программной части. После запуска Arduino IDE нужно активировать поддержку ESP8266. Если у вас ее нет, то перейдите во вкладку «Файл» (File), а затем нажмите «Настройки» (Preferences). В дополнительных разделах URL-адреса диспетчера добавьте следующую ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json. Нажмите OK и затем перейдите в Инструменты — Платы — Менеджер плат (Tools — Boards — Boards Manager). В поле поиска введите esp8266, затем щелкните на «esp8266 by ESP8266 Community», потом нажмите «Установить» (Install). Теперь вы настроили Arduino IDE для работы с NodeMCU.

Код программы довольно прост и имеет следующий вид.

Загрузите этот код в ESP8266. Для большей информативности к плате также можно подключить светодиоды для индикации влажности и сухости. Информация в числовом виде будет поступать в последовательный порт, где можно вести анализ данных.

Источник

Подключение датчика влажности почвы FC-28 к ESP8266

Нужно отслеживать степень влажности почвы, чтобы подобрать режим полива для растений или организовать автоматическую систему орошения? Измерить влажность можно с помощью специального датчика FC-28.

Влажность почвы

Влажность почвы — это соотношение влаги, содержащейся в земле, к массе земли в сухом виде, также называют весовым показателем влаги. Существует другое определение, влажность определяется, как отношение объема воды к объему грунта, в котором он находится, но это уже объемный показатель влаги. Измерения влажности осуществляются в процентах. Результат меняется от 0 % при полностью сухой земле до 100 % при ее полном водонасыщении.

На верхний предел влажности грунта влияет несколько показателей:
Полная влагоемкость – это процент воды, который наполняет поры земли.
Водопроницаемость – способность грунта пропускать через себя жидкость.
Водоподъемность – возможность почвы поднимать грунтовые воды по капиллярам.

Предельная полевая влагоемкость – это то, насколько земля может удерживать влагу, учитывая ее полную влагоемкость и водопроницаемость.

Датчик влажности почвы FC-28

Плата с FC-28 — это модуль определяющий степень содержания поды в грунте. Он состоит из датчика, потенциометра, компаратора и световых диодов. С помощью потенциометра можно отрегулировать порог срабатывания, о котором сигнализирует диод индикации.

Сам датчик FC-28 представляет собой два электрода, с помощью которых он определяет степень влажности среды (земля, песок и т.д.), в которую он установлен. Чем больше воды содержится в земле, тем меньше ее сопротивление, а значит больше проводимость электричества. Модуль может работать в цифровом и аналоговом режимах, в зависимости от компоновки платы.

Аналоговое подключение датчика FC-28


При аналоговом подключении используем аналоговый выход датчика и AO платы. Датчик принимает значения от 0 до 1023. Для более наглядного представления влажности замерим значения получаемые от датчика, когда земля сухая. Мы получили значение «579», преобразуем с помощью функции map в диапазон от 0 до 100, а затем выведем в монитор порта.

Скетч для аналогового подключения

Монитор порта

Цифровое подключение датчика FC-28

При цифровом подключении используем цифровой выход датчика и D2 платы. В отличии от аналогового подключения мы будем получать 1 и 0, в зависимости от установленного порога на потенциометре. «1» — влажность меньше установленной, а «0» — выше установленной.

Источник

Год измеряем влажность почвы на ESP8266 и двух батарейках. Часть 2

Всем привет! В этой статье хочется рассказать, как заставить датчик влажности почвы проработать год на двух батарейках (ААА) и при этом сделать все более менее правильно. Первая статья — про выбор среды разработки (Arduino IDE) и платформу Blynk.

Картинка домашнего дуба для привлечения внимания

Читайте также:  Индикатор кислотности почвы своими руками

Садовод любитель

Для начала небольшое признание — я не программист и я домашний садовод. И то и другое это мое хобби. У меня на подоконниках сделаны полки, с специальной сине-красной светодиодной подсветкой, под которой растения должны расти с бОльшим энтузиазмом. Не вдаваясь в детали фотосинтеза и прочую ботанику, можно сказать, что светодиодная подсветка создала одну проблему, решая которую и родилось устройство, которому посвящена эта статья.

Светодиодные линейки (мощность примерно 6 Вт), достаточно сильно нагреваются сами и нагревают полку и горшок с растением, который на ней стоит. Самому растению, подогреваемая почва не приносит какого либо дискомфорта, но возникает проблема быстрого пересыхания почвы.

При этом земля в горшках, которые стоят просто на подоконнике высыхает медленнее. А на верхних полках, там где во время полива не видно состояние почвы, регулярно случаются переливы или засухи.

Конечно же все уже придумано, и на Ebay можно купить вагон разных измерителей влажности почвы. Например, был куплен один экземпляр измерителя влажности с бипером (цена около 300 рублей).

Устройство работает, но есть несколько но:

  1. Не понятно на какой уровень влажности настроен бипер.
  2. Если устройств будет больше чем одно, то придется ходить и прислушиваться.
  3. Я ведь тоже так могу.

И тут Остапа понесло, ведь есть опыт (раз и два). Так родилось устройство способное измерять влажность почвы, освещенность, температуру и влажность воздуха, передавать результаты измерений в мобильное приложение и работать при этом от батареек достаточно продолжительное время. Про железо тут. А про программные особенности хочется рассказать подробнее в этой статье.

Анализируем энергопотребление

Согласно даташита, 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 — то пришлось сделать так:

  1. Включаем питание (вставляем батарейки).
  2. Ждем мигание светодиода (в тестовом варианте слушаем бипер).
  3. Нажимаем кнопку и попадаем в 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. Я нашел для себя две новые функции и не успел еще их внедрить в проект.

Также в ближайшее время будет добавлена самая важная функция, а именно отправка звуковых (бипером) и мобильных (пуш) уведомлений в случае высыхания почвы. Пока как то не до этого было. Самое важное, о чем надо не забыть, это учет текущего времени, чтобы не начать пиликать ночью.

Заключение

Проект целиком на гитхабе.

Спасибо за внимание.

Отдельное спасибо моей жене за регулярный полив тестового цветка.

Источник

Adblock
detector