Wireless Paper: deep sleep power consumption too high

Hi folks,

I just got my hands on a Wireless Paper board. Got a sketch running and testing its power consumption during deep sleep.
My multimeter indicates 1.68 mA with a Li-ion battery attached. The age-old problem: this is much higher than advertised (“Low power consumption, 20uA in deep sleep”).
There’s no power LED (only on USB power), so I am not completely sure in which direction to look.
Anyone get ideas?

Sketch to reproduce:

#include "HT_QYEG0213RWS800_BWR.h"
#include "images.h"

// Initialize the display
QYEG0213RWS800_BWR   display(6, 5, 4, 7, 3, 2, -1, 6000000);//rst,dc,cs,busy,sck,mosi,miso,frequency

typedef void (*Demo)(void);

/* screen rotation
 * ANGLE_0_DEGREE
 * ANGLE_90_DEGREE
 * ANGLE_180_DEGREE
 * ANGLE_270_DEGREE
 */
#define DIRECTION ANGLE_0_DEGREE

int width,height;
int demoMode = 0;

void VextON(void)
{
  pinMode(Vext,OUTPUT);
  digitalWrite(Vext, LOW);
}

void VextOFF(void) //Vext default OFF
{
  pinMode(Vext,OUTPUT);
  digitalWrite(Vext, HIGH);
}

void enter_deepsleep(void)
{

  Serial.println("Going to deepsleep...");
  Serial.flush();
	esp_sleep_enable_timer_wakeup(20*1000*(uint64_t)1000);
	esp_deep_sleep_start();
} 

void drawCircleDemo() {
  int x = width/4;
  int y = height/2;
  display.clear();
  for (int i=1; i < 8; i++) {
    display.setColor(WHITE);
    display.drawCircle(x, y, i*3);
    if (i % 2 == 0) {
      display.setColor(BLACK);
    }
  }
  display.update(BLACK_BUFFER);
  
  display.clear();
  x = width/4*3;
  for (int i=1; i < 8; i++) {
    display.setColor(WHITE);
    if (i % 2 == 0) {
      display.setColor(BLACK);
    }
    display.fillCircle(x, y, 32 - i* 3);
  }
  display.update(COLOR_BUFFER);
  display.display();
}

void setup() {
  Serial.begin(115200);
  if (DIRECTION==ANGLE_0_DEGREE||DIRECTION==ANGLE_180_DEGREE)
  {
    width = display._width;
    height = display._height;
  }
  else
  {
    width = display._height;
    height = display._width;
  }
  VextON();
  delay(100);
  Serial.println("Woke from boot/sleep");

  // Initialising the UI will init the display too.
  display.init();
  display.screenRotate(DIRECTION);
  display.setFont(ArialMT_Plain_10);

  drawCircleDemo();
  delay(10000);
  display.sleep();
  delay(100);
  VextOFF();
  
  enter_deepsleep();

}

void loop() {

}

//Keep the NSS feet pulled up将nss脚保持上拉

pinMode(RADIO_DIO_1, ANALOG);

  digitalWrite(RADIO_NSS, HIGH);

 gpio_hold_en((gpio_num_t)RADIO_NSS);

// pinMode(RADIO_NSS, ANALOG);

// digitalWrite(RADIO_NSS, HIGH);

pinMode(RADIO_RESET, ANALOG);

pinMode(RADIO_BUSY, ANALOG);

pinMode(LORA_CLK, ANALOG);

pinMode(LORA_MISO, ANALOG);

pinMode(LORA_MOSI, ANALOG);

I modified the enter_deepsleep() function such that it reads like this:

void enter_deepsleep(void)
{
  Serial.println("Going to deepsleep...");
  Serial.flush();

  //Keep the NSS feet pulled up
  pinMode(RADIO_DIO_1, ANALOG);
  digitalWrite(RADIO_NSS, HIGH);
  gpio_hold_en((gpio_num_t)RADIO_NSS);
  // pinMode(RADIO_NSS, ANALOG);
  // digitalWrite(RADIO_NSS, HIGH);
  pinMode(RADIO_RESET, ANALOG);
  pinMode(RADIO_BUSY, ANALOG);
  pinMode(LORA_CLK, ANALOG);
  pinMode(LORA_MISO, ANALOG);
  pinMode(LORA_MOSI, ANALOG);

  esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  esp_sleep_enable_timer_wakeup(20*1000*(uint64_t)1000);
  esp_deep_sleep_start();
} 

But my multimeter reads 1.72 mA during deepsleep… :frowning:
Any other ideas, anyone?

Give it a try and add the vextoff() function

As you can see in the main script in the first post, you’ll see that I called it from the main function… so that apparently doesn’t help :frowning:

@navi I would love to hear if you have a script that demonstrates the low-power capabilities of the Wireless Paper. I have managed to get mine down to 906 uA during deepsleep, while similar boards such as the TTGO T5 v2.3.2 can go down to 170 uA and the Heltec website claims much lower, even.

I use the following sketch:

#include "LoRaWan_APP.h"

static RadioEvents_t RadioEvents;

void enter_deepsleep(void)
{
  Serial.println("Going to deepsleep...");
  Serial.flush();

  pinMode(RADIO_DIO_1, ANALOG);
  pinMode(RADIO_NSS, ANALOG);
  pinMode(RADIO_RESET, ANALOG);
  pinMode(RADIO_BUSY, ANALOG);
  pinMode(LORA_CLK, ANALOG);
  pinMode(LORA_MISO, ANALOG);
  pinMode(LORA_MOSI, ANALOG);

  pinMode(TX, ANALOG);
  pinMode(RX, ANALOG);

  esp_sleep_cpu_pd_low_init(true);
  esp_sleep_pd_config(ESP_PD_DOMAIN_VDDSDIO,ESP_PD_OPTION_OFF);
  esp_sleep_enable_timer_wakeup(20*1000*(uint64_t)1000);

  delay(100);
  esp_deep_sleep_start();
} 


void setup() {
  Serial.begin(115200);

  delay(100);
  Serial.println("Woke from boot/sleep");
  Mcu.begin();
  Radio.Init( &RadioEvents );
  Radio.Sleep();

  delay(10000);  
  
  enter_deepsleep();

}

void loop() {

}

AND: is there a schematic available? As for the Wireless Tracker, the defined pins do not always match the actual wiring, and I would love to see the schematic available.

I would like to add that since a few days, the schematic of the Wireless Paper is available for download on