Big ESP32 + SX127x topic part 2

I see that you clear the display before switching it off.

I did not clear the display and only used display.setPowerSave(1);
Using the U8x8 library (part of U8g2). U8x8 does not use a screenbuffer.

I assume that your disp.clearDisplay() clears the screenbuffer and disp.display() copies the screenbuffer to the display?

It may be worth to do some further testing on this (clearing the display before enabling power-save).

I checked the notes I made in the test program at the time, note the comment about the LoRa reset pin at the end, I had forgotten about that;

_Bare minimum components 7uA _
Add FRAM 8uA
Add MicroSD card 99uA //CS is pulled high 22K
Add LoRa device 120uA //LoRa device in sleep mode via software
_Add 10K pullup only on SCK 28uA _
Add 10K pullup only on MISO 150uA
Add 10K pullup only on MOSI 98uA
_Add 10K pullup, SCK, MISO, MOSI, 8uA _
Add 0.98" OLED - not initialised 8uA
Add 0.98" OLED - Display on 8600uA
Add 0.98" OLED - Display cleared 3426uA
Add 0.98" OLED - Use disp.ssd1306_command(SSD1306_DISPLAYOFF) 8uA

Note: Although you should be able to leave the LoRa NRESET pin floating, it has its own internal pullup, if your driving it with
the ESP32 then add a pullup resistor, the ESP32 in deep sleep drags this pin low.

Yes, normal behaviour for Adafruit_GFX.h and Adafruit_SSD1306.h

One thing that I have not looked into yet are the RTC_GPIO pins. They can be controlled by the ULP when the ESP32 is in deep sleep.

Only part, not all of the pins can serve as RTC_GPIO pin. So it matters which pins are used.

Note: Although you should be able to leave the LoRa NRESET pin floating, it has its own internal pullup, if your driving it with
the ESP32 then add a pullup resistor, the ESP32 in deep sleep drags this pin low.

With “it has its own internal pullup” I assume you are referring to the ESP32. It depends on the ESP32 pins if they by default use internal pullup, pulldown or none.
The ESP32 (V2.2) datasheet has a handy IO_MUX table with a nice overview. This table shows which pins use internal pullups and pulldowns and if they are enabled for input, after and during reset.

If you work out how to do this let us know.

I did check this out at the time, the result of my Googling suggested that in deep sleep, the IO pins are off and nothing could be done about this.

If you can reach as low as 8 uA in sleep mode with above setup, then the above numbers are for normal (non-sleep) conditions and in sleep mode the total power usage drops to below 8 uA, is that correct?

I probably won’t spend time on this any soon.

Espressif documentation:

i updated ttgov21.h in the paxcounter repo:

// non arduino pin definitions
#define RST   LMIC_UNUSED_PIN   // connected to ESP32 RST/EN (old board)
//#define RST   GPIO_NUM_12     // (old board v1.5)
//#define RST   GPIO_NUM_19     //(new board)

Hi all ,
I ask TTGO for somes small modifications for The T-Beam ( use M8N GPS chips and get a uFl connector for the antenna ).
if anyone is interested , here is the link :
TTGO T-BEAM moded

1 Like

That looks like a nice antenna connector construction.
The U.FL/IPEX is default and if you want to have SMA instead an SMA connector can be mounted?
(and in your preferred own direction)

I think that U.FL/IPEX LoRa antenna connector construction is also preferred for the LoRa32 V2.1.
I gives more flexibility for positioning the device in an enclosure.

Yes , they just replace the SMA connector by an U.fl .
they made the requested changes because that don’t change the PCB layout.

Now I ask for PCB modifications , just waiting for they answer ( min Order and condition ).

We need lot of Lora32 V2.1 board ,( will be tested as an one buton call system for our lone workers )
So if any modifications needed , just ask , i can suggest them . ( and yes , the first one I asked is the SMA replacement :slight_smile: )

I am in contact and have sent suggestions for improving LoRa32 (some implemented) and working on some more.

Does ‘new board’ have any version number on it?

I don’t know, i haven’t seen one yet.

Monochrome OLED Displays Low-Power Tests

I have not been able to get ‘next to zilch’ results here. See below. Maybe redo some tests?

I performed tests on 9 OLED I2C display modules. 6x SSD1306 0.96" 128x64, 2x SSD1306 0.91" 128x32 and 1x SH1106 1.3" 128x64. Tests were performed with two different libraries: U8x8 (U8g2) and Adafruit SSD1306 + Adafruit GFX Library. The libraries made no difference for power usage.

Tests were performed with OLED display modules powered from 3.7V Li-Ion battery via HT7333 3.3V voltage regulator (different power source than MCU). Currents were measured with EEVBlog uCurrent Gold (mA range used for display on, uA range used for display off/power-save).

Results:

Display Type            All pixels off      50% pixels on       100% pixels on
                        Display on/off      Display on/off      Display on/off

A       0.96" 128x64    1.4mA / 13.7uA       8.7mA / 13.7uA     11.4mA / 13.7uA
B       0.96" 128x64    1.5mA / 12.8uA       9.6mA / 12.8uA     13.2mA / 12.8uA
C       0.96" 128x64    1.6mA /  7.7uA      14.7mA /  7.7uA     24.3mA /  7.7uA
D       0.96" 128x64    1.5mA / 32.5uA       9.9mA / 32.5uA     14.1mA / 32.5uA
E       0.96" 128x64    1.5mA /  7.0uA      16.4mA /  7.0uA     29.4mA /  7.0uA
F       0.96" 128x64    1.5mA /  8.4uA      16.1mA /  8.4uA     27.9mA /  8.4uA

G       1.3" 128x64     2.2mA /  7.4uA      22.4mA /  7.4uA     30.1mA /  7.4uA

H       0.91" 128x32    2.2mA /  8.3uA      16.7mA /  8.3uA     21.8mA /  8.3uA
I       0.91" 128x32    2.0mA /  8.1uA      18.7mA /  8.1uA     33.1mA /  8.1uA
Conclusions
  • It does not matter how many pixels are on when display is off/in power-save (as expected).
  • Quite some differences in power usage, both in normal display mode and with display off/low-power.
  • Lowest power usage of the 9 displays with display off/in power-save is 7.0 uA.
  • Highest power usage of the 9 displays with display off/in power-save is 32.5 uA.
  • For best low-power results one should switch off the display power.
3 Likes

Why would I need to do more tests, there was nothing wrong with the ones I did already ?

I will be rebuilding a new version of the board in the next couple of weeks which includes the resistors to keep the LoRa device current down, I removed them from the current board.

My ESP32 board (now without LoRa device) with a FRAM, TC74 temperature sensor and SSD1306 display has a total sleep current of 7.7uA.

All my OLED modules have an on-board XC6206 (‘662k’) low-power LDO voltage regulator.
This may be of influence on the display module’s power consumption but according to the datasheet the XC6206’s power consumption is only 1uA typical and 3uA max.

So use the I2C only OLED, swap the HT7333 regulator for a low current one, and see how much current you save.

Not sure what you mean. The HT7333 was used to separately power the display modules with 3.3V during the tests (separate from MCU power). The display modules were directly powered from a Li-Ion cell via HT7333 (without using any switching buck or boost converters in between).

I only measured currents used by the display modules (isolated). Any losses caused by HT7333 are not part of the measured results. The measured results are independent from internal losses of the HT7333, so there is no need to swap it.

Hmm, so what’s your secret sauce to bring the board down to 7 microamps in sleep mode, if only the OLED draws 7-8 microamps? Do you have a switch for the OLED?