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

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

Тема в разделе "Железные вопросы по esp8266", создана пользователем Evgeny D, 19 ноя 2016.

  1. Evgeny D

    Evgeny D Новичок

    Сообщения:
    72
    Симпатии:
    0
    Добрый день, коллеги!

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

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

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

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

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

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

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

    nikolz Гуру

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

    Evgeny D Новичок

    Сообщения:
    72
    Симпатии:
    0
    А можно не включать Wi-fi при подсчете импульсов? Здесь на форуме видел темы с кастомными загрузчиками для уменьшения времени.
     
  4. nikolz

    nikolz Гуру

    Сообщения:
    4.509
    Симпатии:
    444
    можно , тогда ток потребления будет примерно 15 ма.
     
  5. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.051
    Симпатии:
    175
    Немного поясню: дело в том что ESP8266 просыпается не на том месте где заснула. При просыпании происходит полная перезагрузка - поэтому это долго. Лично я бы сделал счетчик на msp430 или stm8 (маленькие - копеечные а с со сном у них никаких проблем) а раз в неделю будил- бы esp8266 :)
     
  6. Evgeny D

    Evgeny D Новичок

    Сообщения:
    72
    Симпатии:
    0
    Спасибо, Юрий!
    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. профит!
     
  7. Evgeny D

    Evgeny D Новичок

    Сообщения:
    72
    Симпатии:
    0
  8. Юрий Ботов

    Юрий Ботов Moderator Команда форума

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

    nikolz Гуру

    Сообщения:
    4.509
    Симпатии:
    444
    еще проще использовать не STM8, а ATTINY13
    В этом случае Ваше счетчик импульсов - это один чип с 8 ногами без каких либо внешних элементов,
    кроме конечно ESP.
    программируется по SPI.
     
    Evgeny D нравится это.
  10. Evgeny D

    Evgeny D Новичок

    Сообщения:
    72
    Симпатии:
    0
    О, гораздно приятнее выглядит, спасибо! Technoblogy - ATtiny Low Power

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

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.051
    Симпатии:
    175
    Можно и тиньку, просто stm8 дешевле... хотя при таком порядке цен это не существенно.
     
  12. nikolz

    nikolz Гуру

    Сообщения:
    4.509
    Симпатии:
    444
    ATTYNI13 стоит 20 руб - дешевле не бывает.
    Я на ней написал модуль управления розеткой.
     
  13. 0xC0FFEE

    0xC0FFEE Новичок

    Сообщения:
    2
    Симпатии:
    0
    Добрый день, коллеги!
    С удивлением обнаружил эту ветку обсуждения.
    Хочу поделиться своим проектом: 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
     
  14. Sam_Arcanum

    Sam_Arcanum Новичок

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

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

    Вложения:

  15. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.490
    Симпатии:
    1.275
    Время просыпания и загрузки 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 Вт.
     
    Последнее редактирование: 11 авг 2017
  16. Sam_Arcanum

    Sam_Arcanum Новичок

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

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

    0xC0FFEE Новичок

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

    nikolz Гуру

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

    Evgeny D Новичок

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

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

    pvvx Активный участник сообщества

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

    По желанию.
    Если взять к примеру 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
     
    Последнее редактирование: 16 ноя 2017

Поделиться этой страницей