NodeMCU 12E V2 Энергосбережение

Я питаю NodeMCU от 4 батареек типа AA (6 В, ~9600 мАч). Я запускаю ESP.deepSleep([миллисекунды]), чтобы минимизировать энергопотребление. Даже с deepSleep я вижу резкое падение напряжения батареи. Я перешел с 6,00 В на 5,62 за 28 часов. Имеет ли это смысл? Я ожидал, что плата будет потреблять ЗНАЧИТЕЛЬНО меньше энергии, и я в растерянности.

У меня есть контакты сброса/пробуждения (D0, D3 и D4), подключенные к 3,3 В с помощью резисторов, и я перемкнул контакт сброса на D0, чтобы сделать звонок пробуждения. Больше ничего не подключено! Имеет ли это потребление энергии какой-либо смысл??

Что касается работы, то она нормально просыпается и отправляет данные.

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

Мои вопросы:
1.) Существуют ли другие программные методы улучшения энергопотребления NodeMCU 12E?
2.) Где мне проверить 12E, чтобы измерить потребление тока с помощью мультиметра
3.) Существуют ли "тупые" модули ESP8266, имеющие вывод сброса, несколько? GIPO и VIN, способные обрабатывать вход 6 В с выходом 5 В и/или 3,3 В? Рекомендации по продукту... Я знаю... Но я в затруднительном положении и нуждаюсь в руководстве.

При необходимости я задам эти вопросы по отдельности.

Я собираюсь купить встроенный токоизмеритель. Мне пока нужно ограничиться мультиметром.

, 👍1

Обсуждение

вы это видели? ... https://www.losant.com/blog/making-the-esp8266-low-powered-with-deep-sleep, @jsotola

Я не, но беглое прочтение демо-версии, похоже, именно то, что я сделал... за исключением того, что все это, похоже, запускается в setup(). Я перечитаю резюме завтра после сна и кофе. Спасибо!!, @acpilot

возможно, это регулятор напряжения, интерфейс USB и все остальные схемы на плате nodemcu, которые все еще потребляют энергию, несмотря на то, что модуль ESP находится в режиме глубокого сна - поиск по запросу nodemcu power consumer deep sleep в вашей поисковой системе покажет множество задокументированных примеров такого поведения., @Jaromanda X

Вот что я думаю, основываясь на всем остальном, что я прочитал., @acpilot


1 ответ


2

Если вы ничего не можете сделать с используемым оборудованием (маломощный USB-интерфейс и т. д.), то лучшее, что вы можете сделать, — это как можно реже использовать радио Wi-Fi. Радио потребляет много энергии, поэтому чем меньше времени оно включено и чем меньше сетевого трафика вы отправляете, тем меньше энергии вы будете использовать.

Когда плата выходит из глубокого сна и снова подключается к Wi-Fi, она выполняет обмен DHCP, чтобы узнать свой IP-адрес. Настройка статического IP-адреса, сетевой маски и адреса маршрутизатора позволит избежать этого и позволит радио оставаться включенным в течение меньшего времени.

ESP8266 SDK также автоматически сохраняет учетные данные Wi-Fi во флэш-памяти каждый раз, когда вы вызываете WiFi.begin(). Это, вероятно, не то, что вам нужно. Отключение этого также поможет сэкономить электроэнергию.

Новый код подключения к Wi-Fi будет выглядеть примерно так:

IPAddress ip( 192, 168, 0, 1 );
IPAddress gateway( 192, 168, 0, 254 );
IPAddress subnet( 255, 255, 255, 0 );

WiFi.forceSleepWake();
delay( 1 );
WiFi.persistent( false );
WiFi.mode( WIFI_STA );
WiFi.config( ip, gateway, subnet );
WiFi.begin( WLAN_SSID, WLAN_PASSWD );

Вам нужно будет заменить определенный IP-адрес, адрес шлюза (маршрутизатора) и маску подсети на те, которые подходят для вашей сети. И вам нужно будет выделить статический IP-адрес либо из диапазона, который выделяет ваш маршрутизатор, либо вам нужно будет настроить маршрутизатор для постоянного выделения адреса — как вы это сделаете, полностью зависит от маршрутизатора, который вы используете.

Другой способ экономии энергии, связанной с Wi-Fi, — использовать максимально легкий протокол и выполнять как можно меньше работы при включенном Wi-Fi.

Например, предположим, что вам нужно вычислить сложный фрагмент данных, который вы передаете по Wi-Fi. Возможно, это фрагмент XML или строка JSON. Или вам нужно считать данные медленного датчика. Выполните всю эту работу до включения Wi-Fi и подготовьте данные к передаче.

Или, если вы получаете данные, по возможности завершите прием данных и отключите Wi-Fi, прежде чем выполнять какие-либо работы с данными.

Если у вас есть выбор, используйте максимально простой протокол для передачи данных. UDP идеален — вы можете передать один пакет (но не узнаете, был ли он получен). TCP требует нескольких пакетов подтверждения при запуске и завершении соединения. Если вы используете защищенное (SSL) соединение по TCP, это еще больше данных и вычислений.

Если для вас главным приоритетом является время работы от аккумулятора, UDP — идеальный вариант, хотя он ненадежен и небезопасен.

Есть отличная серия статей об экономии энергии на

https://www.bakke.online/index.php/2017/05/21/reducing-wifi-power-consumption-on-esp8266-part-1/

https://www.bakke.online/index.php/2017/05/21/reducing-wifi-power-consumption-on-esp8266-part-2/

https://www.bakke.online/index.php/2017/05/22/reducing-wifi-power-consumption-on-esp8266-part-3/

Часть 1 посвящена измерению энергопотребления; часть 2 посвящена включению и выключению Wi-Fi-радио, а часть 3 частично посвящена тому, о чем я говорил выше.

,

Проблема в HW (как указала Jaromanda X). Это хороший совет, и мне придется искать способы оптимизации. Обидно, но выполнимо. Знаете ли вы другие ESP HW, которые имеют встроенный WiFi, или 12E — это в основном то, что нужно?, @acpilot

@acpilot Все ESP8266 имеют встроенный Wi-Fi. Это часть ЦП — без него это не ESP8266. Существует довольно много плат ESP8266 без портов USB или использующих USB только для питания, а не для данных (например, Sparkfun Thing). Платы ESP8266, которые можно программировать с помощью обычного кабеля USB, имеют встроенный адаптер USB; платы, которым для программирования требуется кабель FTDI, не имеют его и могут избежать потребления энергии адаптером USB/последовательного порта. (FTDI — это преобразователь USB в последовательный порт, который обычно используется с ESP8266 и Arduino), @romkey