Система сбора данных на ESP. Часть II. LifeOfFlowers
Доброго времени суток!
Вот и пришло время для второй статьи на тему 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
Спасибо за внимание!