Меню

Питание esp8266 от батареек



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


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

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

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

Светодиодные линейки (мощность примерно 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. Я нашел для себя две новые функции и не успел еще их внедрить в проект.

Читайте также:  Лавка здорового питания abracadabra

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

Заключение

Проект целиком на гитхабе .
Спасибо за внимание.

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

Источник

Digitrode

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

Как сделать так, чтобы ESP8266 работал годы на одной батарейке с помощью режима глубокого сна

ESP8266, безусловно, является универсальным устройством, способным выступать в роли WiFi модуля и микроконтроллера с довольно богатой периферией. Однако использование этих возможностей увеличивает энергопотребление, особенно при обмене данными в сетях WiFi. Но в большинстве проектов желательно, чтобы модуль ESP8266 был автономным устройством, то есть питался от батарейки или аккумулятора и потреблял как можно меньше энергии.

Чтобы сэкономить драгоценную энергию батарейки и существенно продлить срок эксплуатации, не нужно держать устройство в рабочем режиме постоянно, вместо этого следует переводить его в режим сна, когда операции не выполняются. Например, при постоянной работе модуля литий-полимерного аккумулятора емкостью 2500 мАч хватит всего лишь на 30 часов. Поэтому в данном материале будет показано, как с помощью режима глубокого сна эффективно снизить энергопотребление ESP8266.

В данном примере будет использоваться модуль SparkFun ESP8266 Thing. Также потребуется адаптер USB-TTL типа FTDI, плата для прототипирования, соединительные провода, источник питания с креплением на плату, мультиметр и аккумулятор. Также для программирования ESP8266 потребуется последняя версия Arduino IDE.

Итак, чтобы иметь возможность эффективно задействовать режим сна, нужно для начала соединить выводы DTR и XPD друг с другом, что будет свидетельствовать о том, что ESP8266 сможет выйти из режима глубокого сна. Поскольку мы будем измерять энергопотребление, то к линиям питания и земли следует подключить мультиметр. Вот так это выглядит:

Чтобы производить измерения, нужно заставить работать ESP8266. Для этого загрузите приведенный ниже скетч в ESP8266. Этот код будет отправлять простое сообщение на сайт dweet.io, который представляет собой облачный сервис для устройств Интернета вещей с целью логирования различных данных. Отправка сообщения выполняется раз в 10 минут, остальное время модуль находится в режиме глубокого сна. Не забудьте изменить логин и пароль сети WiFi на свои значения. При программировании ESP8266 выводы DTR и XPD не должны быть соединены между собой.

Итак, как мы видим, организация режима глубокого сна осуществляется довольно просто. По сути, для этого была задействована только одна функция ESP.deepSleep, в аргументе которой задается время пребывания ESP8266 в неактивном режиме. Если ваш мультиметр уже подключен, то сразу после старта программы он может показать такую картину:

Это потребление тока в момент, когда ESP8266 работает, то есть отсылает сообщение на сайт. Это довольно таки не мало, поскольку при таком энергопотреблении заряда аккумулятора на долго не хватит. Но через пару секунд значение тока существенно уменьшается (практически в 10 раз), что свидетельствует о том, что модуль перешел в режим глубокого сна.

Это, конечно, существенная экономия, но все равно при этом модуль ESP8266 будет работать не более полмесяца на одном заряде. Чтобы еще больше сократить энергопотребление, нужно избавиться от одного лишнего потребителя – светодиода. Поскольку теперь он берет на себя львиную долю энергии. После его демонтажа получаем на экране мультиметра значение тока 77 мкА или 0.077 мА. Вот теперь ESP8266 может прослужить автономно более трех лет!

Источник

Стабилизатор напряжения для микроконтроллера ESP8266

Следуя этому руководству вы создадите стабилизатор напряжения для микроконтроллера ESP8266, который можно будет использовать с литий-полимерными и литий-ионными аккумуляторами.

Потребление энергии микроконтроллером ESP8266

Хорошо известно, что микроконтроллер ESP8266 довольно прожорлив во время работы интерфейса Wi-Fi. Он может потреблять от 50 мА до 170 мА. Во многих случаях трудно применять такое устройство совместно с аккумулятором.

Читайте также:  Питание для сушки тела меню для женщин начинающих

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

Использования ESP8266 совместно с LiPo/Li-ion аккумуляторами

Однако для некоторых проектов с микроконтроллером ESP8266, где используется режим глубокого сна и нет необходимости в постоянной работе интерфейса Wi-Fi, применение перезаряжаемых литий-полимерных аккумуляторов станет прекрасным решением.

Если используется питания от аккумуляторов рекомендуется плата ESP-01, так как на ней установлено небольшое количество компонентов.

Платы, подобные ESP8266 NodeMCU, используют много энергии, поскольку оснащены дополнительными элементами, такими как резисторы, конденсаторы, микросхемы и т. д.

Так как литий-полимерные аккумуляторы широко распространены, покажем как обеспечить питание микроконтроллера ESP8266 с их помощью.

В этом руководстве не объясняется как устроены и работают различные типы аккумуляторов. Здесь даётся лишь информация необходимая для реализации описываемой схемы.

LiPo/Li-ion аккумуляторы полностью заряжены

Полностью заряженный аккумулятор имеет на выходе напряжение 4,2 В

Со временем оно снижается.

Рекомендуемое рабочее напряжение микроконтроллера ESP — 3,3 В, но он может функционировать в диапазоне 3—3,6 В. Так что нельзя просто подключить литий-полимерный аккумулятор напрямую к микроконтроллеру ESP8266 — вам потребуется стабилизатор напряжения.

Стандартный линейный стабилизатор напряжения

Использование стандартного линейного стабилизатора для снижения напряжения с 4,2 до 3,3 В — не очень хорошее решение.

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

Стабилизатор с малым падением напряжения или LDO-стабилизатор

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

Малое падение напряжения означает, что даже если аккумулятор будет выдавать лишь 3,4 В, стабилизатор всё рано продолжит работать. Помните, что никогда не стоит полностью разряжать литий-полимерный аккумулятор, так как это повредит его или сократит срок службы.

Один из самых лучших LDO-стабилизаторов – MCP1700-3302E.

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

Есть также хороший вариант в виде HT7333-A.

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

  • Выходное напряжение (3,3 В).
  • Ток в рабочей точке (

1,6 мкА).
Выходной ток (

250 мА).
Малое падение напряжения (

Назначение выводов стабилизатора MCP1700-3302E

Назначение выводов стабилизатора MCP1700-3302E. Есть выводы GND, Vin и Vout (земля, вход и выход):

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

Схема подключения ESP8266, стабилизатора и литий-полимерного аккумулятора

Для стабилизатора нам понадобятся следующие компоненты:

Внимательно ознакомившись со схемой вы сможете самостоятельно собрать стабилизатор.

Или посмотрите схему, созданную с помощью ПО Fritzing (керамический и электролитический конденсатор подключены параллельно выводам GND и Vout стабилизатора).

Кнопка подключена к выводу RESET (СБРОС) платы ESP-01, сейчас в этом нет необходимости, однако это пригодится в будущих руководствах.

Предназначение конденсаторов

Для LDO-стабилизаторов необходимо подключать керамический и электролитический конденсатор параллельно выводам GND и Vout, для сглаживания скачков напряжения. Конденсаторы не допускают неожиданный перезапуск и нестабильную работу микроконтроллера ESP8266.

Испытания стабилизатора напряжения

Давайте подключим питание к схеме и проверим её. Измеряя мультиметром входное напряжение Vin от литий-полимерного аккумулятора, вы сможете увидеть приблизительно 4,2 В, поскольку сейчас аккумулятор полностью заряжен.

Теперь подключим щуп мультиметра к выводу Vout. Мультиметр показывает приблизительно 3,3 В — это рекомендуемое напряжение для микроконтроллера ESP8266.

Ещё один вариант стабилизатора напряжения

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

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

Источник