The code we used for testing:
Code: Select all
CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "esp_sleep.h"
#include "driver/rtc_io.h"
#include "soc/rtc.h"
void app_main(void)
{
printf("Hello world!\n");
/* Print chip information */
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
CONFIG_IDF_TARGET,
chip_info.cores,
(chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");
printf("silicon revision %d, ", chip_info.revision);
printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, 0);
vTaskDelay(2000/portTICK_PERIOD_MS);
esp_deep_sleep_start();
}
We have tested power consumption of 3 different boards:
- 1. ESP32 Devkitv1
- 2. ESP32 S3 dev board
- 3. Our custom ESP32 board with ESP32-WROOM-32UE chip.
Questions
I think the reason why ESP32 Devkitv1 is using so much current is because they use bad voltage regular that is leaking a lot of current.
We are trying to understand the reason why our custom device is drawing so much current in the deep sleep mode. Anything above 1-2mA is not acceptable for us. According to the ESP32 documentation, it is possible to achieve even lower than 100uA consumption which is would be more than ideal.
According to the components we use and their datasheets, the current consumption we expect:
MYRGP330100W21RATR Max Quiescent Current - 800uA
I2C expander - 200uA
SPI eeprom standy current - 5uA
These 3 above are main components that should draw current, we dont use much else apart from 3 ADC inputs. Is it possible that they leak so much current through the voltage dividers?