• Система автоматизации с открытым исходным кодом на базе 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
 
Последнее редактирование:
Сверху Снизу