• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Замер потребления RTL00 V1.0

pvvx

Активный участник сообщества
С помощью ESP8266 c INA219, замерил потребление модулем RTL00 V1.0 c sdk-ameba1-v3.4b3_without_NDA.
Ток замерен до стабилизатора 3.3V -> из графиков надо вычитать ~5.9 mA (!).
Старт модуля с ножки 'Enable Chip' и сразу соединение с роутером:
PowST.gif(опрос INA219 идет через WebSoscet (запрос/ответ по каждой точке)- примерно от 200 до 600 точек в сек - зависит от производительности javascript связанной с прорисовкой осциллограммы (>10 кадров/сек), время клетки указано как Scale: xx ms, U:x V и I:x mA текущие, ничего не усредняется, т.к. это пример из web-свалки)
Код:
=========================================================

ROM Version: 0.3

Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)

=========================================================
Check boot type form eFuse
SPI Initial
Image1 length: 0x36e8, Image Addr: 0x10000bc8
Image1 Validate OK, Going jump to Image1
===== Enter Image 1 ====

load NEW fw 0
Flash Image2:Addr 0xb000, Len 262524, Load to SRAM 0x10006000
No Image3
Img2 Sign: RTKWin, InfaStart @ 0x10006079
===== Enter Image 2 ====
#
Initializing WIFI ...
Start LOG SERVICE MODE

# [ATW0]: _AT_WLAN_SET_SSID_ [ASUSRTN56U]
[ATW1]: _AT_WLAN_SET_PASSPHRASE_ [0123456789]
[ATWC]: _AT_WLAN_JOIN_NET_

Joining BSS by SSID mns.ru-6446...

RTL8195A[Driver]: set ssid [mns.ru-6446]

RTL8195A[Driver]: start auth to bc:ae:c5:eb:09:90

RTL8195A[Driver]: auth success, start assoc

RTL8195A[Driver]: association success(res=3)

RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)

RTL8195A[Driver]: set group key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:2

Connected after 370ms.

IP address : 192.168.1.20

Got IP after 897ms.


WIFI initialized

init_thread(50), Available heap 0xad50
Переключение в режим AP+ST:
ST_APST.gif
Снова включение с авто-соединением к роутеру и команда отключения ST ("ATWD"), затем включение AP+ST:
PowST_Off_APST.gif
Режимов энергосбережения не включал. Всё по умолчанию.
----
В режиме ST наблюдаются падения тока от уровня 63 к 22.5 mA (надо вычесть 5.9 mA на кривой стабилизатор):
22_63.gif
PS: См. добавку о Deep-Sleep и Sleep режимы в RTL серии “A”.
 
Последнее редактирование:

sharikov

Active member
С помощью ESP8266 c INA219, замерил потребление модулем RTL00 V1.0 c sdk-ameba1-v3.4b3_without_NDA.
Измерьте еще раз пиковые токи по амплитуде и длительности потому что на графиках не хватает разрешения. В режиме AP+ST судя по иголкам на графике пики вроде бы до 230ма. Еще интересует потребление при включении питания например у esp при старте в момент калибровки wifi потребление максимально возможное.
 

Atom

Member
С помощью ESP8266 c INA219, замерил потребление модулем RTL00 V1.0 c sdk-ameba1-v3.4b3_without_NDA.
Ток замерен до стабилизатора 3.3V -> из графиков надо вычитать ~5.9 mA (!).
Старт модуля с ножки 'Enable Chip' и сразу соединение с роутером:
А кто нибудь подобные замеры с ЕСП делал?
 

pvvx

Активный участник сообщества
А кто нибудь подобные замеры с ЕСП делал?
Да, я и делал:
Измеренные ТТХ по питанию модуля:
Потребление при передаче на скорости к 1 мегабайт в секунду - пример два графика в конце
Потребление модулем в разных режимах WiFi-sleep модуля и стартовые примеры
Потребление по питанию часов (по ноге RTC_VDD)
Потребление при прошивке модуля с помощью esptool.py
Закорачивание I/O выхода вызывает увеличение тока на 50 мА: http://esp8266.ru/forum/attachments/esp-01-gpio15-out-gif.885/
Потребление с фирменной фичей в режиме ST, при поиске внешней AP.
Скорость реакции ножки RESET по просыпанию от ноги GPIO16 (deep-sleep).
Время от старта модуля до исполнения кода из flash при использовании специального загрузчика = 30 ms.
...
И т.д. в теме http://esp8266.ru/forum/threads/razrabotka-biblioteki-malogo-webservera-na-esp8266.56/
Позже перемерю RTL более подробно, с усреднениями и переключениями разных режимов.
Общее впечатление пока - потребление меньше, чем у ESP.
Во всяком случае скорость соединения к AP у RTL (при базовой прошивке) составляет 300..400 ms, что недостижимо у штатной ESP.
Измерьте еще раз пиковые токи по амплитуде и длительности потому что на графиках не хватает разрешения. В режиме AP+ST судя по иголкам на графике пики вроде бы до 230ма. Еще интересует потребление при включении питания например у esp при старте в момент калибровки wifi потребление максимально возможное.
Пики совершенно не интересны. Они сглаживаются доп. электролитом, т.к. совсем кратковременные и редкие. Так-же смысла их измерения нет: полная зависимость от установленных емкостей в самом модуле (жадность китайцев).
 
Последнее редактирование:
  • Like
Реакции: ave

pvvx

Активный участник сообщества
Приступим к более точному измерению :) Буду добавлять пост по мере замеров, с "перекурами" на другие дела... пока модуль на "стенде", можно задавать вопросы/запросы в следующих постах...

Модуль (модуль N1) начинает работать от 1.6 В. При этом выпадает: [inline]Image1 length: 0x0, Image Addr: 0x0[/inline] т.е. Flash не запускается. JTAG/SWD работает - программа в памяти исполняется.
При 2.14 В c Flash стартует, но пишет: [inline]Initializing WIFI ...[/inline] и встает.
При 2.5 В как-то уже работает прошивка от китайцев.
Потребление (модуль N1) при CH_EN = "0" и плавном подъёме и опускании питания:
CH_EN_0_SLW_POWER.gif
Видно переключение в потрохах чипа на 2.1 В. BOR?
Потребление (модуль N1) при CH_EN = "0", нормальный старт питания - сразу 3.6В и опускаю до ~2.0 (к модулю подключены только GND, VCC, CH_EN-GND (!)):
CH_EN_0.gif
Потребление при CH_EN = "0" (модуль N2) (+24C :)) от 3.6 до 2.5 В (к модулю подключены только GND, VCC, CH_EN-GND (!)):
CH_EN_0.gif
Потребление при CH_EN = "1", после старта ROM-BIOS, в Flash метка сбита для входа в bios-console, модуль пишет: "Image1 Validation Incorrect !!!", (частота CPU 41 МГц, к модулю подключены только GND, VCC (!)):
Модуль N1:
CH_EN_1_BAD_FLASH_1.gif
Модуль N2:
CH_EN_1_BAD_FLASH.gif
 
Последнее редактирование:

pvvx

Активный участник сообщества
Тест потребления модуля при разных CLK CPU:
CLK_CPU_POWER.gif
В модуле отключена загрузка из Flash (стерта метка в Flash). Загрузка программы в RAM.
Замер сделан при питании модуля от 3.40 В через измерительный резистор 1 Ом, подключенных RX/TX и SWCLK/SWDIO. Параллельно питанию модуля стоит емкость 10 мкФ.
Код:
int main(void)
{
    int i = 6;
    HalPinCtrlRtl8195A(JTAG, 0, 1);
    HalInitPlatformTimerV02();
    HalInitPlatformLogUartV02();
    HalShowBuildInfoV02();
    printf("Start CPU CLK : %d\r\n", HalGetCpuClk());
    do {
       HalDelayUs(3000000);
       HalCpuClkConfig(--i); // 0 - 166666666 Hz, 1 - 83333333 Hz, 2 - 41666666 Hz, 3 - 20833333 Hz, 4 - 10416666 Hz, 5 - 4000000 Hz
       HalReInitPlatformLogUartV02();
        printf("Hello World : %d\r\n", i);
       printf("CPU CLK : %d\r\n", HalGetCpuClk());
    } while(i);
    printf("End");
    while(1);
}
Код примерно этот RTL00_HelloWorld/main.c at master · pvvx/RTL00_HelloWorld · GitHub

Прошивка "Амёба" sdk-ameba1-v3.4b3_without_NDA, старт модуля и соединение с AP (первые 60 сек):
ST_60SEC.gif
Код:
=========================================================

ROM Version: 0.3

Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)

=========================================================
Check boot type form eFuse
SPI Initial
Image1 length: 0x36e8, Image Addr: 0x10000bc8
Image1 Validate OK, Going jump to Image1
===== Enter Image 1 ====

load NEW fw 0
Flash Image2:Addr 0xb000, Len 262444, Load to SRAM 0x10006000
No Image3
Img2 Sign: RTKWin, InfaStart @ 0x10006079
===== Enter Image 2 ====
#
Initializing WIFI ...
Start LOG SERVICE MODE

# [ATW0]: _AT_WLAN_SET_SSID_ [ASUSRTN56U]
[ATW1]: _AT_WLAN_SET_PASSPHRASE_ [0123456789]
[ATWC]: _AT_WLAN_JOIN_NET_

Joining BSS by SSID ASUSRTN56U...

RTL8195A[Driver]: set ssid [ASUSRTN56U]

RTL8195A[Driver]: start auth to bc:ae:c5:eb:09:90

RTL8195A[Driver]: auth success, start assoc

RTL8195A[Driver]: association success(res=1)

RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)

RTL8195A[Driver]: set group key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1

Connected after 505ms.

IP address : 192.168.1.20

Got IP after 1032ms.


WIFI initialized

init_thread(50), Available heap 0xad50

Перевод AT командами из режима ST в AP+ST и соединение к AP модуля:
ST_ST_AP.gif

Прием/передача по TCP:

Режим ST, команда ATWT=[c,192.168.1.2,1460,1000], комп: 'iperf.exe -s -i 1' :
ATWT1.gif
Режим ST, команда ATWT=[-s], комп: 'iperf.exe -c 192.168.1.20 -i 1 -t 10 -w 256k' :
ATWT2.gif
 
Последнее редактирование:

pvvx

Активный участник сообщества
Режим AP, команда ATWT=s, комп: 'iperf.exe -c 192.168.3.1 -i 1 -t 10 -w 256k' :
ATWT3.gif
Режим AP, команда ATWT=[c,192.168.3.2,1460,1000], комп: 'iperf.exe -s -i 1' :
ATWT4.gif
Прошивка тормозит (трансфер должен быть >1 Mbytes/s) , т.к. у меня включены все логи RTOS и т.д.
Код:
# ATW?
[ATW?]: _AT_WLAN_INFO_


WIFI wlan0 Status: Running
==============================
[rltk_wlan_statistic] tx stat: tx_packets=2721, tx_dropped=0, tx_bytes=3250104
[rltk_wlan_statistic] rx stat: rx_packets=1715, rx_dropped=1795, rx_bytes=262774, rx_overflow=0
[rltk_wlan_statistic] min_free_heap_size=45632, current heap free size=48552
[rltk_wlan_statistic] max_skbbuf_used_num=3, skbbuf_used_num=0
[rltk_wlan_statistic] max_skbdata_used_num=3, skbdata_used_num=0
[rltk_wlan_statistic] max_timer_used_num=11

WIFI  wlan0 Setting:
==============================
      MODE => AP
      SSID => RTL8710
   CHANNEL => 1
  SECURITY => AES
  PASSWORD => 0123456789

Interface (wlan0)
==============================
        MAC => 00:e0:4c:87:00:00
        IP  => 192.168.3.1
        GW  => 192.168.3.1

Associated Client List:
==============================
Client Num: 1
Client 1:
        MAC => 00:0f:54:10:6a:b5

Task List:
log_servi               R       5       792     5
IDLE            R       0       42      3
TCP_IP          B       9       676     6
Tmr Svc         B       5       456     4
rtw_xmit_               B       5       220     23
cmd_threa               B       6       350     25
rtw_recv_               B       5       994     22
rtw_littl               B       10      458     26
rtw_inter               B       6       208     24
LOGUART_T               B       9       96      1
rtw_TDMA_               B       7       220     28
rtw_check               B       5       220     27

[MEM] After do cmd, available heap 48552
# ATSS
[ATSS]: _AT_SYSTEM_CPU_STATS_

CPU total run time is 608045
TaskName        DeltaRunTime    percentage
log_servi               0               <1%
IDLE            1000            99%
TCP_IP          0               <1%
Tmr Svc         0               <1%
rtw_xmit_               0               <1%
cmd_threa               0               <1%
rtw_TDMA_               0               <1%
rtw_recv_               0               <1%
rtw_littl               0               <1%
LOGUART_T               0               <1%
rtw_inter               10              <1%
rtw_check               0               <1%


[MEM] After do cmd, available heap 48552

PS: Наверное на этом хватит замеров... :)
 
Последнее редактирование:

sharikov

Active member
PS: Наверное на этом хватит замеров... :)
Опять 100-ма таракашкой не обойдешься. В режиме AP 300ма вынь да положь.
По вашим замерам RTL при питании 3,0V можно использовать ? ESP у меня успешно работает при 3,0
Почему нужно 3,0 а не 3,3: при питании от 1 полуразряженной литиевой банки 3,3 плохо получается даже с ultra low-drop линейным стабилизатором. Если уйти на 3,0 запас по напряжению аккумулятора больше.
 

pvvx

Активный участник сообщества
По вашим замерам RTL при питании 3,0V можно использовать ?
Можно.
Тест при питании модуля от 2.78 В через резистор 1 Ом (убитый аккум), никаких доп. емкостей на питании модуля (!):
Пуск по отпусканию CH_EN, автостарт ST с подключением к роутеру, sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0 (default)...
MIN_VCC.gif
Проваливает до 2.67В, но ещё работает...
Если питание до резистора в 1 Ом меньше 2.78В, то при старте пишет, что не проинить WiFi или виснет потом - не принимает AT команды.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Итоговые замеры в режиме энергосбережения.
В прошивке AT SDK3.5 есть команды перехода в режим энергосбережения.
ATSP=r
ATSL=r,f
(Внимание: они отключают и ввод с console. Там остается только вывод, а AT работают на UART2)
При них, если активна только Station, то потребление зависит от активности сети. Если эфир почти чистый, то потребление колеблется от 7 mA.
Если активна AP, то потребление колеблется от 51 mA. Включение Station при активной AP не меняет картины.
В режиме AP, при активности энергосбережения, RTL00 выигрывает у ESP8266 не менее чем в 1.5 раза, чем и обусловлено замеченное другими "холодность модуля" в отличии от ESP8266.
При выключенном WiFi в режиме энергосбережения при активности UART портов и прочего, что работает по прерываниям, модуль потребляет около 7 mA. При возникновении события оно отрабатывается на полной скорости CPU - в стандартном SDK при загрузке с Flash это 83MHz, при загрузке в RAM или если переключили сами - это 166MHz с пиковым увеличением потребления на время отработки команды и т.д....
Расклад примерно такой:
Fcpu: RUN/IDLE/SLP
166MHz: ~63/21/6.4 mA
83MHz: ~55/15/6.4 mA
RUN - полная загрузка CPU,
IDLE - это примерно vTaskDelay(),
SLP - это режим экономии.
 
Последнее редактирование:

sharikov

Active member
Еще один замер:
[inline]IEEE PHY: 802.11b[/inline]
[inline]RF Tx Power: 100%[/inline]
Скорость соединения 11Mbit.
Режим Station+AP, подключен к открытой точке доступа.
5 праллельных запросов статического файла без пауз + ping пакетами 900 байт.

Среднее потребление 165mA
Пиковое 250mA, минимальное 70mA.

Крышка модуля RTL00 горячая, время от времени потребление на 1-2сек уменьшается до единиц мА, сетевой трафик приостанавливается. Потом возобновляется. В консоли тишина. Троттлинг от перегрева ?
 

pvvx

Активный участник сообщества
Крышка модуля RTL00 горячая, время от времени потребление на 1-2сек уменьшается до единиц мА, сетевой трафик приостанавливается. Потом возобновляется. В консоли тишина. Троттлинг от перегрева ?
С AP + Station там какая-то беда. Я вроде уже писал вам про это... У меня троттлинга не было - возможно что при замерах слишком близко находится ответная ST и модуль дует не на полную. Попробую позже навесить какой экран.
165 мА - это ещё мало (3.3*0.165=0.5445 Вт) и площади теплоотвода должно хватать.
Когда одна AP - итого выходит меньше. В этом и есть странность...
 

pvvx

Активный участник сообщества
Вот в режиме ST+AP, качаем с AP:
SoftApPow4.8V.gif
Аналогично в режиме ST+AP, но качаем с ST:
StationPow3.1V.gif
Разница есть, но она мала. Измерил на разных входах питания, того что валялось под рукой :) На первом, с AP, надо ещё вычесть потребление дурным стабилизатором в 5 mA (замер в цепи до него).
Ранее была разница и она сильно наблюдалась в клоне ESPHTТPD... Причины не знаю.

Троттлинга нет. Есть другие странности - у измерителя на ESP8266 (которым и сделаны замеры) очень часто падает Station при работе SoftAP на RTL и трафик соединения так-же падает до 70..80 килобайт в сек. Если вырубить ESP8266 - всё восстанавливается. А так, при работе измерителя на ESP8266 всегда трафик меньше, чем должен быть на HT40 (1.2..1.8 MБ/сек). Т.е. на состояние в эфире сильно сказывается работа устаревших микросхем :) При падении часто выходит, что ESP8266 соединен с роутером, как и station RTL (к AP RTL при этом подключен свисток WiFi-USB и там качаем на полную, пока ESP не свихнется) и RTL начинает сильно переговариваться с роутером, ток поднимается за 200 мА, а трафик AP падает до 70 КБ/cек. Наверно ESP истерично орет и глушит канал роутера, а RTL, в 5 см от глушилки, пытается удержать связь своей ST с роутером :)... Телефоны с WiFi и прочие модули такого эффекта не дают... С ними проще - при их активности на канале в передаче появляются дыры с падением трафика. Ну так и положено в WiFi. Может это у вас, а не троттлинг? Ведь ST и AP разделяют один канал и другой участник сети тоже хочет общаться...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Ток потребления в паузе аномально низкий.
Может брак какой? Не допаяли чип или что сбито в eFuse?
У меня вот опять наблюдаются нелады с током потребления и скоростью AP в режиме AP+ST. На других модулях ещё не проверял, пока подключен один, а другие убраны. Главное, что не ясна причина и AP изначально плохо заводилась ещё в SDK 3.4 и Ameba Arduino. Изменение частот CPU и масса других опций ситуацию не меняют. Может что в конфигах flash повлияет. Ранее при тестах работало нормально, а теперь опять что-то (типа убрал какие-то задержки при инициализации? На Arduino это влияло + обязательный лишний запрос статуса...)...
Надо бы покрутить либы от SDK 4.0, может там подправили...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Ток потребления в паузе аномально низкий.
Нашли?
Вот пример скетча и лога для rtlDuino с работой AP и передачей TCP (см. вложение).
Прямо по данным лога построен график скорости передачи:
Снимок1490.gif
(передано 2.2 Гбайта, средняя скорость 2028 кбайт в сек)
Принимающая программа FBENCH. В ней и найдете, что средняя скорость передачи более 1.8МБ в сек.
Троттлинга нет, а есть забитый эфир WiFi... Сам чип на модуле RTL00 при этом еле теплый.
В режиме Station - среднее выходит примерно тоже самое (потребляемый ток только меньше).
Но вот в режиме AP+ST трафик с AP сильно падает и нелады с потреблением. Такая реализация в SDK и Arduino драйвера WiFi в от Amebа... Пока никак не удалось исправить...
 

Вложения

Последнее редактирование:

sharikov

Active member
...наблюдаются нелады с током потребления и скоростью AP в режиме AP+ST
Похоже в режиме AP+ST настройки из wifi_cfg применяются только к первому интерфейсу а второй куда перемещается AP инициализируется какими-то дефолтными значениями или не инициализируется вовсе.
У меня когда включен режим 802.11b первый интерфейс коннектится как и положено на 11мегабитах а второй где AP - на 72. И мощность у них разная: для первого как задано в wifi_cfg а у второго то ли максимум то ли 50%.
В режимах только AP или только ST когда работает только 1 интерфейс все работает правильно.
Может поменять порядок инициализации при старте wi-fi?
 

pvvx

Активный участник сообщества
Может поменять порядок инициализации при старте wi-fi?
Порядок не меняется. Там и так срабатывает перестановка netif-ов, да по ужасному алгоритму (руки поотрывать надо Амебщикам) ...
Т.е. всегда интерфейсы AP и ST садятся на свои места и поменять это невозможно. Когда работает один - он всегда садится на нулевой номер и на xnetif[0].
От этого не возможно привязать host имя (+ Netbios, mdns, ...) и обращения к драйверу в процедурах. В SDK они намолотили десятки вариантов одинаковых процедур, но с разными номерками, в зависимости что включено...
 

sharikov

Active member
Но вот в режиме AP+ST трафик с AP сильно падает и нелады с потреблением. Такая реализация в SDK и Arduino драйвера WiFi в от Amebа... Пока никак не удалось исправить...
Проверил:
В режиме AP+ST есть нюанс:
  • если ST подключена - AP работает хорошо
  • если ST не подключена и автоподключение отключено или лимит попыток исчерпан - AP работает хорошо.
  • если ST выполняет автоподключение - AP работает плохо. Предположение: поиск / подключение ST блокируют работу AP.
 

pvvx

Активный участник сообщества
У меня это проявляется как "если ST подключена - AP работает ужасно". По этому ваши выводы не верны. Перепроверьте.
В этом режиме (AP+ST) при работе передатчика AP потребление аномально завышено (раза в 2..3 больше чем при одиночном ST или AP, а трансфер в 10 раз меньше!). Такое сложно не заметить. Т.е. это явные косяки в драйвере (закрытой части кодов). При не активности передатчика AP потребление в норме (режим AP+ST = режим просто AP).
Ну а т.к. выужены все хидеры и заголовки процедур, то это возможно починить и самим, но у меня пока нет на это времени...
 
Последнее редактирование:
Сверху Снизу