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

Делюсь опытом ESP8266. Уменьшение тока потребления.

Тема в разделе "Железные вопросы по esp8266", создана пользователем nikolz, 14 мар 2018.

  1. nikolz

    nikolz Гуру

    Сообщения:
    4.908
    Симпатии:
    454
    Добрый день,Всем
    Есть простой способ уменьшить потребляемый ток ESP без существенного изменения софта.
    Можно сделать например так:
    upload_2018-3-14_13-37-14.png
    На картинках выполнение программы:
    старт, цикл 1 секунда передача данных на сервер.
    -------------------------------
    Первая картинка( режим 1 ) - это стандартное исполнение цикла в функции user_init
    то потребления не менее 75 ма
    -----------------------------
    Вторая картинка(режим 2) - исполнение цикла внутри функции call_user_start ток потребления в цикле 45 ма
    -----------------------
    Третья картинка (режим 3) - как вторая но с отключением WIFI ток потребления внутри функции call_user_start 26 ма.
    ===================================
    Рассказываю как это сделать.
    режим 2 :
    Для этого надо переименовать функцию call_user_start в билиотеке libmain
    например в acll_user_start
    и написать свою функцию:
    -------------------
    void call_user_start(void) {
    // здесь исполняем программы из памяти с током потребления 45 ма вместо 75
    ...
    acll_user_start(); //делаем вызов стандартной функции
    }
    -----------------------------
    выкладываю библиотеку с переименованной функцией
     

    Вложения:

    • libmain.zip
      Размер файла:
      70 КБ
      Просмотров:
      1
  2. pvvx

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

    Сообщения:
    8.958
    Симпатии:
    1.300
    Зачем это всё? Очередное изобретение велосипеда?
    Давно, годы, все стартовые функции SDK развернуты в pvvx/MinEspSDKLib и прочих проектах
    И на базе это сделан SuperHouse/esp-open-rtos
    Вставляете любой свой код в любое место.
    Для этого у компилятора GCC есть опции (-wrap) по замещению функций и обычно патчить ничего не требуется (кроме сложных случаев и исправления мелких ошибок в бинарных закрытых либах).
     
    Последнее редактирование: 14 мар 2018
  3. nikolz

    nikolz Гуру

    Сообщения:
    4.908
    Симпатии:
    454
    Поясняю специально для Вас
    Ваша поделка pvvx/MinEspSDKLib давно устарела сейчас уже SDK 2.2.0
    когда Вы ее начинали лепить я Вам говорил, что главное не слепить свалку а сопровождать ее.
    Поэтому мне Ваша свалка не нравиться я использую стандартное SDK.
    относительно второго замечания
    Вы опять не поняли я не заменяю функцию а лишь изменил ее имя (это исправление в библиотеки 8 байт (можно исправить лишь 4)
    Как изменять имена с помощью GCC я не знаю, знаете - скажите.
     
  4. pvvx

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

    Сообщения:
    8.958
    Симпатии:
    1.300
    Из неё вам сделали стандартный открытый SDK другие.
    Не моё это дело сопровождать и ублажать телепузиков. Вас достаточно за глаза.
    Указано - кодовое слово "wrap" и далее читайте инструкцию к GCC.
    Некоторые вопросы как обойти другие ограничения указаны в первой строке google поиска на "wrap gcc" -> GNU gcc/ld - wrapping a call to symbol with caller and callee defined in the same object file
     
    Последнее редактирование: 14 мар 2018
  5. nikolz

    nikolz Гуру

    Сообщения:
    4.908
    Симпатии:
    454
    еще замечу что предложенное мною решение позволяет легко включить его в дурину
    и не надо ничего городить или переделывать.
    второй вариант у меня с nboot тоже решает эту задачу
    -----------------------
    Вообще-то, желающие могут сами выбрать один из трех вариантов
    1) Ваш SDK (Пишите для телепузиков так чтобы они ничего не понимали, прикольно)
    2) изменить имя и стандартное любое SDK
    3) изучить rboot и включить в него свое плюс стандартное SDK
    Я использую 2 и 3. Меня устраивает.
     
  6. pvvx

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

    Сообщения:
    8.958
    Симпатии:
    1.300
    Какую задачу он решает?
    Уменьшения потребления при старте?
    Не решает. Его решает rapid-loader и потомки.
    rboot не работает с новым SDK и только увеличивает время загрузки и потребление. Его писатель до этого не дошел и видимо не хотел. У него были другие цели - исключительно пиар.
    Видимо как и у вас - основная задача не решение её, а пиар.

    Уменьшение потребления я включил и в esptool pvvx/esp8266web при программировании. Зачем лишний жор?
    Всё это было актуально в 2015 году, а счас уже никому не интересна Arduino на ESP8266, кроме как побаловаться.

    Хотите нормально решить тему минимального потребления - подготовьте для телепузиков уже проработанный вариант https://esp8266.ru/forum/threads/ehnergopotreblenie-esp-itogi.3001/page-2#post-48643
    С потреблением для ESP8266 по графику, в зависимости от частоты передач значений:
    https://esp8266.ru/forum/attachments/snimok5-gif.5851/
    Где взять исходники указано, поменять посылку на "probe request" принимаемую любым модулем WiFi сможете сами.
    При этом, в место вашего "примера", при те-же временах передачи (2 сек) получаем среднее потребление 1.5..1.7 мА.
     
    Последнее редактирование: 14 мар 2018
  7. pvvx

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

    Сообщения:
    8.958
    Симпатии:
    1.300
    В стандартном NON_OS_SDK есть функция user_rf_pre_init().
    Она описывается пользователем и вызывается при старте, когда система уже очистила bss, поменяла вектора прерываний, включила мнеджер памяти и т.д.
    Т.е. в ней можно использовать стандартные СИ описания своих функций, к примеру, работы с датчиками, и решать - запускать или нет следующие части SDK.
    При переименовании стартовой процедуры call_user_start() вам придется писать очень сложный код и учитывать, что ничего не проинициализировано для работы даже простого СИ, с чем у телепузиков будут БОЛЬШИЕ сложности.
     
  8. nikolz

    nikolz Гуру

    Сообщения:
    4.908
    Симпатии:
    454
    Ну если все можно,
    то сделайте так на стандартном SDK
    т е старт обычным загрузчиком
    переход на ток 11 ма
    работа CPU таймера UART 1.5 сек
    включение WIFI и передача данных 170 мс.
    upload_2018-3-14_22-12-25.png
     
  9. pvvx

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

    Сообщения:
    8.958
    Симпатии:
    1.300
    А смысл такого? Выжрать батарейку?
    Вам сделали всё в 80 мс.
     
  10. nikolz

    nikolz Гуру

    Сообщения:
    4.908
    Симпатии:
    454
    Смысл в том чтобы реально работать с датчиками а не рассказывать сказки про то что в 80 мс Вы все сделали при готовности датчика через 100 мс и старте ESP 120 мс.
    Не вижу смысла с Вами о чем-то говорить.
    просьба не лезьте в мои темы.
    Я делюсь своим опытом с теми кому это интересно.
    Вы же лезете во все дырки лишь бы пропиариться.
     
  11. pvvx

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

    Сообщения:
    8.958
    Симпатии:
    1.300
    Зачем вы опять выдумываете какие-то 120 мс?
    У других вышло 100 мс, далее я задержку в 20 мс убрал и выходит 80. Есть ещё задержка на 10..20 мс, которую тоже можно выкинуть если не требуется подстройка RC таймера на температуру. Она не дает ничего нужного в данном исполнении. Выйдет 60..70 мс :p
     

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