• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 deep sleep + счетчик импульсов

Evgeny D

Member
Добрый день, коллеги!

Только начинаю разбираться с ESP8266, хочется поэкспериментировать с прерываниями и энергопотреблением.

Функциональность:
1. Подсчет импульсов (сухой контакт) с периодом 100-500мс. В перерывах - засыпание с минимальным потреблением. Я где-то видел статью, что можно достичь микроампер..
2. Отправка данных на сервер раз в N дней.

Вопросы:
1. Какую прошивку для этого нужно использовать? (неважно ASM, C++, Lua)

Алгоритм:
Предполагаю, что ESP8266 должна просыпаться при получении импульса (сигнала на GPIO) и увеличивать счетчик.
По второму таймеру она должна раз в N дней подключаться к серверу и отправлять данные.

Возможно кто-то уже такое делал, т.к. задача достаточно стандартная. Меня смущает огромное кол-во тем и железа...

На руках есть модуль ESP8266-01, но могу другой раздобыть.

Спасибо за помощь!
 

nikolz

Well-known member
Добрый день, коллеги!

Только начинаю разбираться с ESP8266, хочется поэкспериментировать с прерываниями и энергопотреблением.

Функциональность:
1. Подсчет импульсов (сухой контакт) с периодом 100-500мс. В перерывах - засыпание с минимальным потреблением. Я где-то видел статью, что можно достичь микроампер..
2. Отправка данных на сервер раз в N дней.

Вопросы:
1. Какую прошивку для этого нужно использовать? (неважно ASM, C++, Lua)

Алгоритм:
Предполагаю, что ESP8266 должна просыпаться при получении импульса (сигнала на GPIO) и увеличивать счетчик.
По второму таймеру она должна раз в N дней подключаться к серверу и отправлять данные.

Возможно кто-то уже такое делал, т.к. задача достаточно стандартная. Меня смущает огромное кол-во тем и железа...

На руках есть модуль ESP8266-01, но могу другой раздобыть.

Спасибо за помощь!
Минимальное время активности составляет примерно 400 mc.
следовательно при подсчете импульсов с периодом 100-500 мс ESP всегда будет активно.
Средний ток составит примерно 70 ma.
 

Evgeny D

Member
Минимальное время активности составляет примерно 400 mc.
следовательно при подсчете импульсов с периодом 100-500 мс ESP всегда будет активно.
Средний ток составит примерно 70 ma.
А можно не включать Wi-fi при подсчете импульсов? Здесь на форуме видел темы с кастомными загрузчиками для уменьшения времени.
 

Юрий Ботов

Moderator
Команда форума
Немного поясню: дело в том что ESP8266 просыпается не на том месте где заснула. При просыпании происходит полная перезагрузка - поэтому это долго. Лично я бы сделал счетчик на msp430 или stm8 (маленькие - копеечные а с со сном у них никаких проблем) а раз в неделю будил- бы esp8266 :)
 

Evgeny D

Member
Немного поясню: дело в том что ESP8266 просыпается не на том месте где заснула. При просыпании происходит полная перезагрузка - поэтому это долго. Лично я бы сделал счетчик на msp430 или stm8 (маленькие - копеечные а с со сном у них никаких проблем) а раз в неделю будил- бы esp8266 :)
Спасибо, Юрий!
STM8 эта (Auto-Wakeup on the STM8S - Silverlight Developer) ?

Кстати, ведь можно сделать так, чтобы замыкание сухого контакта подавало питание на STM8... так, прочитал Low power run (еще один режим энергосбережения) / STM8 / Сообщество EasyElectronics.ru и понял, что в режиме LRP 1А*h ~ 23 года при 5 мкА*ч... Т.е. STM8 может круглосуточно работать в этом режиме (без прерываний) мерить состояние входа раз в 100мс. Раз в месяц она проснется, разбудит ESP8266 и передаст ей данные по SPI, скажем. Я слышал, кому-то удавалось отправлять данные на сервер раз 1000 от 1й батарейки.,

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

Полагаю нужно:
1. найти программатор STM8
2. отладить сон/пробуждение на каком-нибудь светодиоде
3. отладить передачу по SPI(или другому) какой-нибудь Ардуинке.
4. отладить прерывание ESP8266
5. отладить отправку данных ESP8266 c учетом успеха/не успеха (в идеале оповестить о результате STM8, чтобы та разбудила не через месяц, а на след. день).
6. реализовать настройку ESP8266 обычным пользователем.
7. профит!
 

Юрий Ботов

Moderator
Команда форума
1. Программатор для stm8 Найти просто: это китайский stlink за 200-300 рублей с Ali
2. Компилировать для stm8 проще всего на sdcc (есть и для win и для linux)
3. Плата на stm8s003 на Ali 60-70 рублей. Сам чип и того дешевле.
4. Есть книга на русском языке "Начало работы с микроконтроллерами stm8" Матюшов Н.В.
 

nikolz

Well-known member
еще проще использовать не STM8, а ATTINY13
В этом случае Ваше счетчик импульсов - это один чип с 8 ногами без каких либо внешних элементов,
кроме конечно ESP.
программируется по SPI.
 

Evgeny D

Member
еще проще использовать не STM8, а ATTINY13
В этом случае Ваше счетчик импульсов - это один чип с 8 ногами без каких либо внешних элементов,
кроме конечно ESP.
программируется по SPI.
О, гораздно приятнее выглядит, спасибо! Technoblogy - ATtiny Low Power

Значит ATTINY13 спит и считает импульсы, будит ESP8266 и передает ей данные об импульсах ( Через N секунд будит ESP8266, чтобы прочитать результат отправки данных.)
 

Юрий Ботов

Moderator
Команда форума
Можно и тиньку, просто stm8 дешевле... хотя при таком порядке цен это не существенно.
 

0xC0FFEE

New member
Спасибо, Юрий!
STM8 эта (Auto-Wakeup on the STM8S - Silverlight Developer) ?

Кстати, ведь можно сделать так, чтобы замыкание сухого контакта подавало питание на STM8... так, прочитал Low power run (еще один режим энергосбережения) / STM8 / Сообщество EasyElectronics.ru и понял, что в режиме LRP 1А*h ~ 23 года при 5 мкА*ч... Т.е. STM8 может круглосуточно работать в этом режиме (без прерываний) мерить состояние входа раз в 100мс. Раз в месяц она проснется, разбудит ESP8266 и передаст ей данные по SPI, скажем. Я слышал, кому-то удавалось отправлять данные на сервер раз 1000 от 1й батарейки.,

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

Полагаю нужно:
1. найти программатор STM8
2. отладить сон/пробуждение на каком-нибудь светодиоде
3. отладить передачу по SPI(или другому) какой-нибудь Ардуинке.
4. отладить прерывание ESP8266
5. отладить отправку данных ESP8266 c учетом успеха/не успеха (в идеале оповестить о результате STM8, чтобы та разбудила не через месяц, а на след. день).
6. реализовать настройку ESP8266 обычным пользователем.
7. профит!
Добрый день, коллеги!
С удивлением обнаружил эту ветку обсуждения.
Хочу поделиться своим проектом: WiFi сбор/передача показаний счетчиков воды — AquaLeak
Фото устройства здесь: WiFi счетчик воды импульсный IoT-AQUA на батарейке без БП
esp8266 - оказался замечательной недорогой микросхемой для выхода в интернет через WiFi.
Я применил готовый модуль ESP12F, купленный у www.euromobile.ru
В качестве сенсорного контроллера использовал дешевый Holtek HT68F20.
Схема питается от двух батареек Alkaline size AA, которых в эксперименте хватило более чем на 4000 сеансов связи с WEB-сервером. Здесь статистика эксперимента: Генератор Отчетов — AquaLeak
HT подключен напрямую к батарейкам, работает 100% времени, подсчитывает импульсы. При этом вся схема потребляет не более 5мкА.
Когда приходит время сеанса связи, HT включает DCDC Boost и питание 3В3 подается на ESP. На выход в интернет и связь с WEB-сервером уходит как правило не более 10 сек. Потребление схемы поднимается до 80мА, причем импульс при отправке WiFi пакета достигает где-то 350мА. Поэтому DCDC Boost должен обеспечить этот импульс.
В остальном - дело техники. Будет время, обязательно напишу статью о своем проекте.

BR!
OxCOFFEE
 
Всем привет! меня давно не было на этом форуме Причина уважительна - стал отцом девочки! Плюс переезд и смена работы...
Про Есп8266 не забыл.
К чему я: решил померить потребление Esp8266 -12f для того чтобы питать своё поделие от двух AAA.
Причём мерить стал с помощью usb осциллографа Hantek и шунтирующего резистора в 1 Ом в цепи + провода.
код взят из примера blinky.c и немного переписан:

Код:
// program entry point
void ICACHE_FLASH_ATTR user_init()
{
       deep_sleep_set_option(4);
       system_deep_sleep(0);
}
затем это было скомпилировано на Linux Ubuntu 16.04 LTS и залито на чип.
что сейчас из себя представляет модуль Esp8266 -12f: там где необходимо подпаяны резисторы 10кОм на на сам модуль идёт 2 провода питания. всё.
в разрые 1 ом и щупы осциллографа. питается от 3.3В
в результате получается вот такая картина (прикреплённое изображение)
то есть есть что-то что ещё не отключено и заставляет тикать таймер. потребление этого таймера - 12мА. с учётом проксимации среднее постоянное потребление в дип_слипе - 1,5-2 мА.
Кто подскажет что нужно изменить чтобы убрать этот пик потребления таймера? как его отключить и вообще что это?
гугление дало загадочный параметр DCIM = 3 но я так понял что его надо менять в файле esp_init_data_default.bin но жто не помогло.
как мне снизить потребление чипа совсем в ноль? обрыв питания не предлагать))
отвечу на вопрос как это будет выводится в рабочий режим: чип будет связан с герконом через простой триггер. при изменении состояния триггера логика дёргает вывод сброса и чип вкючется отсылает информацию и снова уходит в дип_слип
@pvvx прошу Вас проконсультировать в данном вопросе
 

Вложения

pvvx

Активный участник сообщества
Время просыпания и загрузки SDK до user_init() достаточно долгое у ESP8266 (более 100 ms c выключенным WiFi). В этом процессе он кушает >80 мА.
Про DCDC Boost :) и остальное...

Через 1 Ом модуль может не стартануть или будет зависать из-за проваливания питания на нем. Ставьте БОЛЬШОЙ электролит к модулю, тогда может и не будет постоянно виснуть через 1 Oм.
При старте передатчика пик тока достигает 400 mA, что дает бросок питания с 3.3 до 2.9 В, который лезет в кристалл и сбивает его работу, хотя модуль работоспособен и на 1.8 В (но только супер стабильных, с обратным сопротивлением источника менее миллиОм-а)...
Обратное сопротивление подразряженных элементов AAA (не Li) более нескольких Ом :)
Прикинуть напряжение и ток с двух AAA вам помогут:
Battery test-review 18650 comparator
Тест мезинчиковых батареек ААА. Какие батарейки лучше?

От Li батареек AAA вы получите 1.25В при работающей нагрузке (ESP8266 занята соединением и приемо-передачей). Т.е. у вас будет 2.5В. Средний ток при 3.3В надо домножить на 1.32/КПД DC-DC и при 70% он выйдет к 200 мА, что не очень то потянут дешевые AAA.

Если напрямую в SDK4.0b (без его модификации) на RTL8710BN написать счет импульсов по пину с простейшим sleep (прерывания работают), тогда, если учесть, что батарейка AAA имеет 1000 мА*ч, тогда выйдет непрерывная работа от них порядка в 1000/0.2 мА = 5000 часов ~ 200 дней. Это только в режиме счета, без включения WiFi и использования deep_sleep...

Дорогой выйдет счетчик :)
Вам надо ставить элемент Пельтье между трубами горячей и холодной воды...
TEC1-12706 (40x40), Модуль Пельтье
При разнице температуры в 60 С дает (+12C холодная и +80 С горячая, с учетом потерь):
1,94В на 0,134A / 1,57В на 0,253A
Два их (0.5Вт) спасут вас и зарядят AKБ :) Выжрут, пропустят тепла на ~10 Вт.
 
Последнее редактирование:
Время просыпания и загрузки SDK до user_init() достаточно долгое у ESP8266 (более 100 ms c выключенным WiFi). В этом процессе он кушает >80 мА.
Про DCDC Boost :) и остальное...

Через 1 Ом модуль может не стартануть или будет зависать из-за проваливания питания на нем. Ставьте БОЛЬШОЙ электролит к модулю, тогда может и не будет постоянно виснуть через 1 Oм.
При старте передатчика пик тока достигает 400 mA, что дает бросок питания с 3.3 до 2.9 В, который лезет в кристалл и сбивает его работу, хотя модуль работоспособен и на 1.8 В (но только супер стабильных, с обратным сопротивлением источника менее миллиОм-а)...
Обратное сопротивление подразряженных элементов AAA (не Li) более нескольких Ом :)
Прикинуть напряжение и ток с двух AAA вам помогут:
Battery test-review 18650 comparator
Тест мезинчиковых батареек ААА. Какие батарейки лучше?

От Li батареек AAA вы получите 1.25В при работающей нагрузке (ESP8266 занята соединением и приемо-передачей). Т.е. у вас будет 2.5В. Средний ток при 3.3В надо домножить на 1.32/КПД DC-DC и при 70% он выйдет к 200 мА, что не очень то потянут дешевые AAA.

Если напрямую в SDK4.0b (без его модификации) на RTL8710BN написать счет импульсов по пину с простейшим sleep (прерывания работают), тогда, если учесть, что батарейка AAA имеет 1000 мА*ч, тогда выйдет непрерывная работа от них порядка в 1000/0.2 мА = 5000 часов ~ 200 дней. Это только в режиме счета, без включения WiFi и использования deep_sleep...

Дорогой выйдет счетчик :)
Вам надо ставить элемент Пельтье между трубами горячей и холодной воды...
TEC1-12706 (40x40), Модуль Пельтье
При разнице температуры в 60 С дает (+12C холодная и +80 С горячая, с учетом потерь):
1,94В на 0,134A / 1,57В на 0,253A
Два их (0.5Вт) спасут вас и зарядят AKБ :) Выжрут, пропустят тепла на ~10 Вт.
1) задача которая стоит - померить потребление модуля. только esp8266ex, его память и минимально необходимую обвязку для старта. 1 ом не навечно а только для отладки.
2) питается сейчас от отладочной платы с очень качественным питанием. в конечном устройстве так вообще танталы поствлю
3) примерный принцип работы конечного устройства - датчик с герконом который сигнализирует об открытии закрытии только через Wi-Fi. бОльшую часть времени будет спать и только по изменению состояния будет включаться и это изменение отсылать на сервер.
4) сейчас пришёл к выводу что должен быть ещё один контроллер из супер мало потребляющих которые будут фиксировать состояние геркона и через полевик включать подачу напряжения на esp8266ex (именно на саму микросхему, да да)
никакой счётчик я делать не буду, написал сюда чтобы не плодить темы.

з.ы. как так у людей получаются устройства на esp8266 которые чуть ли не год будут работать?!
 

0xC0FFEE

New member
1) задача которая стоит - померить потребление модуля. только esp8266ex, его память и минимально необходимую обвязку для старта. 1 ом не навечно а только для отладки.
2) питается сейчас от отладочной платы с очень качественным питанием. в конечном устройстве так вообще танталы поствлю
3) примерный принцип работы конечного устройства - датчик с герконом который сигнализирует об открытии закрытии только через Wi-Fi. бОльшую часть времени будет спать и только по изменению состояния будет включаться и это изменение отсылать на сервер.
4) сейчас пришёл к выводу что должен быть ещё один контроллер из супер мало потребляющих которые будут фиксировать состояние геркона и через полевик включать подачу напряжения на esp8266ex (именно на саму микросхему, да да)
никакой счётчик я делать не буду, написал сюда чтобы не плодить темы.

з.ы. как так у людей получаются устройства на esp8266 которые чуть ли не год будут работать?!
Respect! Правильное решение: еще один дешевый маложрущий микроконтроллер. Именно так и получается делать устройства которые 5 лет работают от двух батареек АА. Не совсем понял зачем нужен полевик. Для питания esp нужны 3В3, то есть без BOOST DCDC не обойтись. Если выбрать BOOST с сигналом ENABLE, то полевик будет уже на борту. А вообще чем городить огород просто купите готовое устройство за 1000р: iot-aqua.ru и грузите туда свою программу.
 

nikolz

Well-known member
1) задача которая стоит - померить потребление модуля. только esp8266ex, его память и минимально необходимую обвязку для старта. 1 ом не навечно а только для отладки.
2) питается сейчас от отладочной платы с очень качественным питанием. в конечном устройстве так вообще танталы поствлю
3) примерный принцип работы конечного устройства - датчик с герконом который сигнализирует об открытии закрытии только через Wi-Fi. бОльшую часть времени будет спать и только по изменению состояния будет включаться и это изменение отсылать на сервер.
4) сейчас пришёл к выводу что должен быть ещё один контроллер из супер мало потребляющих которые будут фиксировать состояние геркона и через полевик включать подачу напряжения на esp8266ex (именно на саму микросхему, да да)
никакой счётчик я делать не буду, написал сюда чтобы не плодить темы.

з.ы. как так у людей получаются устройства на esp8266 которые чуть ли не год будут работать?!
Можно сделать так:
1) Подключить геркон как кнопку на CH_EN и включать ESP.
2) Подключить геркон как кнопку к REST , а eSP отправить спать навечно.
3) Ставим таймер TPL5110 (Ti) потребление 35nа и геркон как кнопку к нему. Таймер будет подавать питание на ESP (схема есть в документации)
 

Evgeny D

Member
ля питания esp нужны 3В3, то есть без BOOST DCDC не обойтись.
1. Он что-то потребляет, когда управляющим им МК спит?
2. Уточните, напряжение 2хАА где-то 3.3В, потом упадет до 2.8. Как к этому относится DCDC и ESP8266?
3. А вы какой маложрущий микроконтроллер применили? Я предполагаю раскочегарить Attiny85.

3) Ставим таймер TPL5110 (Ti) потребление 35nа и геркон как кнопку к нему. Таймер будет подавать питание на ESP (схема есть в документации)
Это решение более хорошее, если кол-во нажатий не большое. В случае с счетчиками импульсов этих нажатий будут тысячи, поэтому потребление будет выше (насколько?).
Я пытался сделить за ходом "обсуждения" времени бордствования ESP в соседнем топике, но потерял нить. Есть измерения сколько потребление при "проснулся-посчитал-заснул"? Мне еще предстоит загуглить, как отключать wifi, компараторы и т.п. обвес в esp8266..
 

pvvx

Активный участник сообщества
1. Он что-то потребляет, когда управляющим им МК спит?
Потребляет ключ питания, точнее его утечка - к 1 мкА + если влажность, то контакты монтажа на плате и прочие элементы доходящие до 1 мкА.
2. Уточните, напряжение 2хАА где-то 3.3В, потом упадет до 2.8. Как к этому относится DCDC и ESP8266?
Смотря какие AA.
C-Zn - Макс.напряжение 1.6 В, рабочее 1.2 В
MnO2 - Макс.напряжение 1.5 В, рабочее 1.15 В
...
http://acust.narod.ru/files/books/batt_acc.pdf

3. А вы какой маложрущий микроконтроллер применили? Я предполагаю раскочегарить Attiny85.
По желанию.
Если взять к примеру PIC12LF1572, то без проблем сделаете потребление прядка до пары мкА в режиме счета и отключенного модуля WiFi с учетом утечек ключей питания к модулю.
В пределе потребление PIC12LF1572 можно уменьшить к порядку 10 нА, если пробуждать его по импульсу счета, да и выходы i/o у него на 25 мА и можно коммутировать питание датчиков без доп. элементов... Т.е. выбор MCU за вами.
Но это всё без разницы, т.к. сама активация ESP8266 и его соединение с передачей данных пожирает от 1.5 Дж. (5 сек*3 В*0.115 A = 1.725 Дж)
К примеру, сам deep_sleep у модулей ESP8266 (там ещё потребляет Flash и прочие утечки) кушает в час к 1 Дж (60*60 сек*3.3 В*0.000082 A = 1.0098 Дж)
Вот и рассчитайте минимум (без внешних элементов) частоты включения ESP при известной емкости батарейки в Дж.
Тест пальчиковых батареек АА. Какие батарейки лучше?
Для дешевки двух AA возьмите 6 кДж и поделите на 1.5 Дж. Выйдет максимум до 4 тысячи передач (в теории, без учета стабилизаторов питания и прочего). Если передача раз в час, то отнимите ещё потребление deep_sleep - итого уже до 2-х тысяч передач - до 2000 часов (без элементов счета и управления питанем).
Т.е. в реалии, при использовании Arduino подходов - две AA на месяц.
Ну, а сдесь, "Фото устройства здесь: WiFi счетчик воды импульсный IoT-AQUA на батарейке без БП", при батарейке с фото, получим среднее время работы к 3-м месяцам с учетом всяких условий (купили старые АА, и т.д.). По этим причинам такие проекты и не развиваются.

Нормальное время работы от счетчика воды должно соответствовать времени его поверки. Там вроде это 3 года для горячей воды?

Ставьте сразу элементы LR20 - там вроде 80 кДж в каждом и к -30% каждые 10 лет хранения (по данным производителя) :) http://data.energizer.com/pdfs/ind-lr20pl_eu.pdf
 
Последнее редактирование:
Сверху Снизу