Система сбора данных на ESP. Часть II. LifeOfFlowers +37




Доброго времени суток! Вот и пришло время для второй статьи на тему ESP. Я расскажу про устройство, которое позволит получать информацию о микроклимате вокруг Ваших цветов (если, конечно, они у Вас имеются) и получать уведомления, о том, что их жизни что-то угрожает.

Для чего?

Моя жена поливает цветы примерно раз в неделю. Смотрит на почву в горшках, видит или чувствует, что пора бы цветам подкрепиться и поливает. Цветы у нас разные, но как выяснилось высыхают они примерно за одинаковое время. Большой горшок – большой цветок, маленький горшок – маленький цветок, смысл понятен. Все было бы хорошо, если бы на летний сезон я не оставался дома один на пару месяцев и не забывал поливать цветы. По приезду в конце августа жена с грустным лицом вытаскивает из нескольких горшков сухие черенки.

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

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

Аппаратная реализация и описание работы

Наиболее важный момент – это автономность устройства и долговечность его работы (естественно не в ущерб качеству измерений). За основу взята все та же ESP-12E, с одним каналом АЦП на борту. Контроллер (модуль, если хотите) имеет несколько режимов работы, и, соответственно, потребления:

Power off – 0.5uA;
Deep sleep – 10uA;
Light sleep – 0.5mA;
Modem sleep – 15mA;
В режиме передачи данных до 170mA (данные разнятся и в некоторых источниках даже до 215mA).

Для наших нужд потребуются три режима: Deep sleep, Modem sleep и режим передачи. Раз все так хорошо, будем использовать две батарейки AAA для питания.

Освещенность измеряется фототранзистором BPW17N, влажность и температура окружающей среды AM2302, влажность почвы специально-разведенным электродом на плате под лаком. Так как у нас есть батарейки будем измерять и их напряжение. Чтобы это все делать по с одним АЦП используем мультиплексор CD74HC4051M96. На АЦП ESP-12E можно подавать напряжение до 1В, соответственно везде ставим делители.

Схема ниже, там накручено много чего для макетирования (в том числе на спаянной плате еще нет транзистора VT3, а последняя плата еще не готова).


Схема устройства

Две батарейки выдают напряжение 3-3,3В, мультиплексор работает в диапазоне от 2В до 6В. AM2302 работает в диапазоне 3,3-5,5В. Для ESP-12E необходимо напряжение от 2,3В. Все это проверено тестами и сверено с даташитами. Становится понятно, что AM2302 почти сразу перестанет работать, а то и совсем не заработает, соответственно делаем «хак» и ставим конденсаторный Buck-Bust TPS60240DGKR. Это решает еще одну серьезную проблему, так как при падении напряжения плывут измеряемые параметры (освещенность и влажность почвы) и приходилось корректировать значения измерений АЦП, учитывая напряжение, а это вносило погрешности.

Таким образом, получается примерно так: мультиплексор питается и управляется с ног ESP (она питается напрямую от батареек), AM2302, делители освещенности и влажности почвы запитаны от 3,3В с Buck-Bust, который, в свою очередь, управляется ногой ESP. Он раскачивает напряжение с 1,8В до 3,3В.

Измерение влажности почвы

Этой величине решил отвести отдельный подраздел. Первая версия устройства имела оголенные электроды (не покрытые лаком) и там было все просто, подаем напряжение на один электрод – снимаем со второго. Чем больше влажность, тем больше напряжение на АЦП.


Рис 1. Версии электродов на платах.

Все бы хорошо, но даже луженые электроды склонны к коррозии, да и вообще выглядят не эстетично. Поэтому родилась (была слизана) следующая схема: на один из «электродов» подается ШИМ с IO15, и с него же читается значение, «выпрямленное» и сглаженное. Получается, что чем больше влажность почвы, тем меньший сигнал доходит до АЦП, так как сигнал затухает.


Рис 2. Схема считывания влажности почвы.

Тестирование и работа

Сразу уточню, что длительные тесты продолжаются, а быстрые показали следующее: устройство проработало (не спешите разочаровываться) четверо суток. Измерения проводились 1 раз в минуту (!!!) с отправкой всех данных на сервер (получается порядка 5700 измерений). Deep sleep составляет 50с из этой минуты. Время работы в режиме Modem sleep составляет несколько секунд (происходят измерения с датчиков), далее несколько секунд в режиме передачи данных (тесты показали потребление порядка 50mA). Временные интервалы еще настраиваем. Подробнее о времени работы в разных режимах можно почитать по ссылке тут и, соответственно, посмотреть в исходниках на гите тут.

Пока планируем делать измерения раз в 2 часа с малым количеством измерений ночью, по прикидкам получается более 1 года работы. Расчеты больше экстраполированные из полученных результатов, но как известно разряд батареек имеет нелинейную форму, так что долгие тесты покажут что и как.


Рис 3. Графики отправляемых параметров.

Тут четыре параметра на одном графике – не очень удобно смотреть, но за то информативно. Провал – это замена батареек и полив цветка. Два пика – это освещенность. Заливка голубым – это влажность почвы. Пока не применены никакие сглаживания и фильтры, так как тестирование не закончено и хочется смотреть на сырые данные. На расширенных графиках, видно, как происходит смачивание почвы, затем влажность стабилизируется и происходит медленное высыхание. Пока не решили стоит ли как-то учитывать перелив растения или оставить это «поливальщику».


Рис 4. Фото устройства в горшке.


Рис 5. Фото устройства со стороны батареек.

На макете для крепления батарейного отсека и датчика влажности используются винты, когда все отладим поставим заклепки, типа таких:


Рис 6. Фото заклепок.

Корпус

Все просто – корпуса пока нет, а может и в принципе, не будет. Покроем сверху специальным лаком и в путь.

Себестоимость

ESP-12E – 120р;
CD74HC4051M96 – 14р;
TPS60240DGKR – 180р;
BPW17N – 21р;
AM2302 – 130р;
KLS5-818-B – 15р;
BC817 – 3р;
BAT54JFILM – 3р;
Пассив и кнопка – 20р;

Светодиод, пищалку и транзистор на ее управление пока выкидываем.

Без учета печатной платы и сборки получается порядка 500р.

Так скажем, приемлемо. Конечно, если сделать таких устройств 10шт, то печатка и сборка скушает значительную часть себестоимости и устройство получится дорогим, но пока мы за ценой не гонимся, партию 100к не делаем, а просто получаем удовольствие от процесса.

Планы

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

1. OpenWindAir. Датчик концентрации углекислого газа.
2. LifeOfFlowers. Датчик влажности почвы и микроклимата для растений.
3. WarningWater. Датчик протечек.
4. AirWick_ESP. Конфигуратор для освежителя воздуха AirWick. Наверное, это даже больше шутки ради, подумал я сначала. А почему бы и нет?

Про это устройство я еще ничего не писал. У меня дома завалялся такой девайс:


Рис 7. Фото AirWick.

И очень уж мне хотелось сделать, чтобы он работал по расписанию, которое я сам могу задавать. Днем, например, только при посещении уборной, ночью, чтобы вообще спал, разве что «пшикнул» бы утром перед тем как я проснусь. Даже сделал я плату на STM32F100, но что-то не пошло. Пока все отлаживал, менял пороги и частоту срабатывания, все так и осталось в зачаточном состоянии. И тут пришла мысль, а почему бы не задавать с телефона параметры, тем более, если этот интерфейс уже отлажен:

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

Да – это излишки, скажете вы, настроил один раз и забыл, но наши руки не для скуки, и поэтому была сделана плата, о которой я расскажу позже.

В приложении для разных устройств можно делать вкладки с отображением под ними данных и графиков, относящихся к конкретному девайсу.


Рис 8. Фото приложения с несколькими вкладками.

ЗЫ: Ссылки на статьи из этой же темы:

Система сбора данных на ESP. Часть I. CO2

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

Вы можете помочь и перевести немного средств на развитие сайта



Комментарии (74):

  1. Javian
    /#10709459 / +3

    Можно попробовать этим методом измерять затухание сигнала не в почве, а через лист.
    Мне как-то пенсионер рассказывал, что в одном тепличном хозяйстве при СССР проводили эксперименты по капельному орошению. У растения на листе (или стебле — точно уже не помню) были закреплены электроды. Когда «растение хотело пить» система включала капельное орошение. Получался рекордно низкий расход воды на полив плантаций. Делались эти эксперименты под оборудование первого в СССР завода по производству систем капельного орошения.

    • dmsav
      /#10712231

      Стало интересно как выглядели эти электроды.
      И сколько нужно было электродов вообще на одно растение и на всю теплицу?

  2. Mogwaika
    /#10709591 / +1

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

    • the_bat
      /#10709627 / +1

      Как раз отчетливо можно определить и чуть влажную и сухую почву. Проводили эксперимент, поливали и ждали пока высохнет, очень хорошо виден плавный спад до минимального значения. Ну или смотре что значит «еле влажная».

  3. AlterMax
    /#10709613 / +1

    Респект! На всякий случай, решал подобную проблему проще, с помощью вот такой штуки с али:

    Self-Watering Probes
    image

    • a3x
      /#10709629

      Это уже пройденный этап. Они помогают когда дома долго никого нет. Но когда я дома, цветы ничего кроме напоминалки не спасет.

  4. DanielKOcean
    /#10709851

    Спасибо за статью! Классное получилось устройство, попробую для своих балконных черри заделать.
    П.С. Если будет время, опубликуете на CircuitMaker-е? Это такой "GitHub" для разработчиков устройств от Altium.

    • the_bat
      /#10710139 / +1

      Рад что понравилось!
      Вот со временем всегда проблема)) Я подумаю.

  5. Mogwaika
    /#10709867 / +1

    А какого-нибудь литиевого аккума, типа 18650 не прикидывали на сколько хватит?

    • the_bat
      /#10709891

      Нет, отказался от него, так как нужно еще ставить схему зарядки или заряжать аккум отдельно, а если нет под рукой второго аккума, то это неудобно.

      • Lando
        /#10710001 / +1

        А если поставить небольшой аккум и солнесную баттарею? По идее должна заряжаться от солнца и досветки растения. Зато поставил и забыл.

        • the_bat
          /#10710137 / +1

          Пробовали считать, получается должна быть большая солнечная батарея.
          Если поставить совсем маленькую на 300мА, то в несколько пасмурных дней она может сесть и не зарядиться. То есть нужно иметь запас. Думали поставить ААА Li-Ion 3,7В и солнечную, но кажется все равно будет несуразно смотреться. Пока на стадии размышления. Также, в этом случае, нужно ставить питатель с 4,2В-3,0В до 3,3В, либо выбирать драйвер солнечной батареи с регулируемым выходом.

          • Lando
            /#10710263 / +2

            Наверно правильно. И места больше займет устройство и драйвер ставить надо по хорошему. А он не сказать что копейки стоит. Да и купить еще надо. Тем более есть AAA NiMh которые в стандартной зарядке можно заряжать.

          • Googlist
            /#10710481

            AAA литиевьіе на порядок хуже 18650, саморазряд большой, емкость маленькая и циклов заряд/разряд значительно меньше вьідерживает, лучше на 18650 делать, они наверное заметно технологичнее производятся.

  6. Allineer
    /#10709895 / +1

    А объясните пожалуйста по датчику влажности почвы:

    — полигон печатной платы со стрелками и надписью «Put this part to soil» (рис.1) соответствует проводнику между R9 и VD2 на схеме Рис.2?
    — контакт ТР1 на схеме это… что?

    • the_bat
      /#10709903

      ТР1 — это и есть этот проводник (электрод). Внизу он никуда не подключен, вверху идет к VD2.

      • Allineer
        /#10710031 / +1

        О как… Спасибо.
        Смутила точка снизу — выглядит как переходное отверстие.

  7. pistoletov
    /#10710219 / +2

    С airwick хорошая идея. У меня уже лет 5 работает аирвик с attiny внутри. Работает после включения света в комнате. Я бы еще увязал его работу с вентилятором вытяжным но руки пока не дошли

    • the_bat
      /#10710235

      С вентилятором хорошая идея!

  8. BalinTomsk
    /#10710229 / +1

    Сделайте с десяток устройств — я у вас куплю.

    • the_bat
      /#10710239

      Если Вы серьезно, то когда закончится отладка и мы сделаем небольшую партию — я оповещу.

      • areht
        /#10710695

        Я бы такой, может, взял, но я чуть более ленив — к устройству нужна бутылка и насос. Соответственно, на насос нужен выход эдак на ~150мА.

        Я на прототипе насос 12V/350mA от 5 вольт запитывал — на полметра хватало воду поднимать, от 3 вольт — фиг знает. Я же правильно понял, что через TPS60240DGKR только AM2302 питается, а повесив 3 батарейки на вход я спалю ESP?

        • Meklon
          /#10710841

          Тут лучше всего подойдут перистальтические насосы. Они очень точные и могут проталкивать даже вязкие жидкости. Медленные, да. Но тут растения, а не автомойка.
          image

          • areht
            /#10710933

            Такие мне попадались, но они где-то с $30 начинались. А для чего мне вязкие жидкости и высокая точность?

            • Meklon
              /#10710939 / +1

              Вам точность нужна для полива. Гарантированно влить ровно 50 мл условно. Особенно круто, если вы сразу из нескольких ёмкостей воду с удобрениями или корректорами pH. На Али есть дешёвые, но насколько долго живут, я не знаю.

              • areht
                /#10710959 / +1

                А с какой точностью нужно поливать? И как вообще вычислить, что мне нужно именно 50 мл, а не 70?

                До нескольких ёмкостей я ещё не дорос — пока просто от неполива дохнут

                • Meklon
                  /#10710991

                  А это как раз настраивается под конкретное растение, как и частота полива. Возможно выгодным окажется полив по 10 мл каждый час.

                • Meklon
                  /#10711005 / +1

                  Формально, идеальный вариант — влажная, рыхлая почва с хорошей аэрацией.

  9. FGV
    /#10710275 / +1

    для ic1 неиспользуемые входы лучше посадить на землю, на всякий случай.

    • the_bat
      /#10710279

      Согласен, хорошая мысль, спасибо!

  10. sav13
    /#10710503 / +1

    Хотелось бы увидеть калибровку датчиков.
    Кривую, как едет себя влажность.
    Диапазон.
    Повторяемость от полива к поливу
    Промышленные емкостные датчики влажности почвы имеет рабочую частоту в несколько мегагерц

    • a3x
      /#10710555

      Как соберем достаточно статистики — сделаем анализ и посмотрим, что у нас с повторяемостью.

  11. plm
    /#10710579

    Как работает измеритель влажности, так и не понял. Можно поподробнее?
    И залить электронику (телефон, скажем) жидкостью — это всегда плохо, а у вас плата практически голая. Боюсь, не проживет она года до смены батареек :)

    • plm
      /#10710861

      Измеритель влажности почвы, я имел в виду.

    • the_bat
      /#10710919 / +2

      Если Вы внимательно читали, плата покрывается лаком. Незащищенными остаются только контакты батареек.

      • plm
        /#10710925

        Ну да, точно, я забыл, в телефонах везде блестящая голая медь.

        • the_bat
          /#10711041

          Вы не поверите, плату можно покрыть маской, как в сотовом телефоне, а можно покрыть лаком поверх компонентов, как не в сотовом телефоне.

          • plm
            /#10711075

            Маска — она тоже лак. Ладно, через год поглядим.
            Так расскажите, пожалуйста, поподробнее, как работает измеритель влажности почвы у вас? Я так понял — кусок медной фольги в изоляции воткнут землю. И один провод к нему. И что вы меряете?

            • the_bat
              /#10711083

              С одного пина на другой ESP подается синус, сюда же подключен электрод (по схеме вроде все понятно). Часть сигнала теряется если почва влажная, и чем больше влажность, тем больше потери. Это абстрактная величина в попугаях, но мне она и нужна.

  12. Meklon
    /#10710605 / +1

    Кхе-кхе. Электролиз…

    • Helium4
      /#10710767

      Ага. И пассивация электродов.
      У меня на "лабораторном" кондуктометре с графитовыми стержнями от батареек в качестве электродов — иногда по 20 минут приходится отмачивать электроды в слабой кислоте, чтоб стабилизировать показания. Стержни были хорошо предварительно отмыты от солей. Правда система с двухполюсным меандром 100 Гц и токами до 1А, для цветочков многовато будет.
      Фото кондуктометра — https://ibb.co/du1Swc

      • Meklon
        /#10710845

        Я карандашные использовал. В итоге плюнули и купили промышленный за 50к) 100 Гц очень мало, кстати. У меня даже на 10 кГц улетела нейтральная точка в растворе.

    • the_bat
      /#10710917

      Вы понимаете, да, что это происходит на 1-2 секунды за несколько часов?

      • Meklon
        /#10710947 / +1

        Понимаю. Я в лаборатории полгода ковырял подобные установки. Нужен был кондуктометр, который раз в 5 минут за 5 мс производит измерение и спит дальше. Так вот у меня электроды перестали растворяться ибот графит, но показатель проводимости улетал за 50-100 измерений просто в хлам. Тут только мегагерцы иначе это показометр.

        • the_bat
          /#10711043

          Электроды под лаком, после 2-х мес тестов на лаке и меде под лаком ничего не видно. Показания стабильные, повторяемость 100%. Так что это не наш случай, явно.

          • avf1906
            /#10711751 / +2

            видимо разный метод, Meklon описывает кондуктометрический, а здесь судя по всему емкостной

      • Meklon
        /#10711053 / +2

        Возьмите раствор комплексных сухих удобрений. Разведите до концентрации 1500 ppm. Приготовьте литр такого раствора. Это модель вашей почвы. Если есть возможность — поставьте ёмкость на планетарный шейкер, чтобы шло непрерывное перемешивание. Теперь выполните серию из 1000 измерений через каждые 30-60 секунд. Задержка нужна, чтобы диффузия успевала уносить продукты реакции от электродов. Посмотрите на график. Если плоский, то все офигенно. В реальности, там будет падение сопротивления по экспоненте и сильный сдвиг pH. Проверьте эти параметры качественным pH-метром и кондуктометром, чтобы валидировать результаты.

        Если увидите значимое влияние электролиза, то растению скоро придет конец. А ещё вы отравите почву солями олова и меди бонусом. Графит лучше. Он вариант платины для бедных, но ужасен в массовом производстве. Паять не вариант, только намотка жилы и термоусадка.

        Короче, говоря, я уже изрядно походил по этим граблям) желаю удачи)

        • the_bat
          /#10711059

          Ни меди ни олова на наших электродах нет. Все под лаком.

          • Meklon
            /#10711063

            Так, стоп, я туплю. А что у вас ток проводит?

            • the_bat
              /#10711065

              Я написал же что они под лаком. Процессов окисления нет. Проверено.

              • Meklon
                /#10711081

                Лак изолятор. Что у вас в роли двух плюсов ток проводит?

                • the_bat
                  /#10711085

                  Смотрите схему. Электрод один, если не считать полигон вокруг. Измеряется затухание сигнала

                • Javian
                  /#10711129 / +2

                  Что-то вроде утечки переменного тока через конденсатор. Чем больше влажность, тем больше ток уходит в землю через обкладки «конденсатора». И соответственно просаживается напряжение, пришедшее на АЦП.

                  • Meklon
                    /#10711281

                    Буду курить теорию, спасибо)

                    • Allineer
                      /#10712251 / +1

                      «Емкостный датчик влажности почвы» курите.

  13. DustCn
    /#10710643

    А есть объяснение почему был выбран BPW17N? Я вот тоже думаю над датчиком освещения на есп, и пока застрял на выборе собственно фотоэлемента. Daylight стоят дорого, а такой вот — копейки, но он не ловит весь дневной спектр? Мне правда не для цветов нужен…

    • LorDCA
      /#10710707

      А какой смысл ловить весь спектр? Возьмите любой самый дешевый, хоть за пару центов, он будет реагировать даже на свет луны. :)

      • DustCn
        /#10710719

        В этом то и проблема :) Мне скорее нужно избавиться от засветки — т.е. только дневной свет чекать, а обычный копеечный фотоэлемент будет торчать почти в ИК области. Или я не туда смотрю?
        В общем это звучит как задача подстройки умного дома под естественное освещение. Привязку к времени я уже рассматривал — довольно сложно. Проще бросить датчик на внешней стороне дома, вся загогулина в самом датчике.

        • Javian
          /#10710733

          в смысле сложно привязаться ко времени? Формула расчета времени заката и рассвета реализована в разных библиотеках, в том же Ардуино. Если еще и добавить GPS модуль, то вообще полный автомат — время плюс координаты без какой- то внешней настройки.


          По поводу ИК засветки — поставьте фильтр(ы) перед фотоэлементом.

    • the_bat
      /#10710837

      Этот транзистор использовали ранее и он хорошо показал себя именно при работе на солнце. Очень хорошо определяется солнечная освещенность

  14. smallghost
    /#10710805

    Ха, оказывается не я один думал про систему управления освежителем воздуха! Но вы продвинулись значительно дальше. Я предполагал также управлять на базе расписания, которое задаётся через облако.

  15. skoptsev
    /#10710915 / +1

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

    • the_bat
      /#10711047

      Да, видели такие. Спасибо!

  16. avf1906
    /#10711023

    Классно, очень интересно.
    Судя по цене самая дорогая часть — TPS60240. Если вдруг захотите удешевить, я бы сделал так: выход ШИМ + удвоитель/утроитель на конденсаторах + мелкий ldo на 5В. Итого 20руб вместо 180.

    • the_bat
      /#10711051

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

      • avf1906
        /#10711565 / +1

        так я и написал + мелкий ldo