Seeed Xiao ESP32C3 - Impossible decrese power consumption

Hi,

I simply would like to use the BT BLE (BLEDevice.h) but would like to decrease the power consupmtion to something normal (not 110/130/160mA).

I tried to decrease the CPU speed to 40MHz (110mA), BLE stops working
I tried to stop Wifi (I do not need it) esp_wifi_disconnect(); esp_wifi_stop();- but no effect at all.

It is so lamer that a simple BT BLE communication (not too much other stuff on it) eats that amount of power.

The sleepmode is not an option. I need continuous availiablilty. (On the other side I use a JDY-23 BT module, which eats only 800uA!!!)
:frowning: :frowning: :frowning: :frowning:

Reduce the frequency and duration of Bluetooth scanning and advertising to minimize power consumption. Use เบทฟิก the appropriate scan window and interval settings to strike a balance between power savings and responsiveness.

Although the board used by daCoder in this wiki is nRF52840, I think it really gives you a lot of ideas. He is a genius! Can you discuss with him how to reduce more power consumption:
Getting lower power consumption on Seeed XIAO nRF52840 - Products & Technology / XIAO - Seeed Forum (seeedstudio.com)

When I started my Bluetooth project I played around with an esp32. I did some web searches and found that the esp32 was not optimized for Bluetooth power. I found a number of recommendations to use the 52840 if the project only needed Bluetooth and not Wifi.

The 52840 automatically goes into a low power mode when the processor is not busy, so seems hard to beat from a low power perspective. Nordic also has a page that will compute the power usage of the chip given a set of scanning/advertising/etc parameters. This lets you know whether your bluetooth power usage is optimal.

Is it possible your project can switch to the xiao nrf52840?

Hi,

I think it is possilbe - My project is not that complicated. It communicates with UART a PIC MCU, do some A/D and uses the BLE for receiving control command from another unit. But really nothing too special, I will check your suggestion - since I really haven’t found good hints to decrease the power usage for that esp32C3. And I spent so many time with seeking ideas… Thanks

Oh, man! I’m soooooo angry with myself. In the spring I ordered 1pcs nrf52840 too, but since it is double cost as the ESP32C3 I haven’t concentrated on it at all, furthermore I’ve completely forgotten it:-( I will do immediately the porting of my application.)

Really really thanks for you hint. Without I would move in that deadend street…

Szabolcs

1 Like

HI, Could you please help me a bit more. Yesterday I spent several hours to port my code from ESP32C3 to nrf52840 - with no real success. (On ESP I use the BLEDevice (or NimBLEDevice), while on 52840 those doesn’t work yet, so I tried to use the bluefruit - here the scan works, but somehow the service identification not (it seems they did the programming on that way that adafruit device must be the peripherial too).
What should I use? Do you have experience. (my peripherial is a jdy-23 - it has special service uuid).
Thanks

@babolcs

My Arduino experience was focused on low power and less so on Bluetooth (I used Zephyr OS on the Bluetooth part), so I think you might need to post a specific help request for the Bluetooth question. Details/background on the direction of my project below, in case it helps.

My project had tight requirements on both the power and code size of the application, so I implemented with Zephyr OS, which is very configurable. I think this is what is often used for commercial products with demanding requirements. However, Zephyr has a heavy learning curve.

It was tricky getting the initial low power code working with Zephyr on the Xiao, so I switched to Seeed/Adafruit bluefruit to get that part working first. Arduino/Bluefruit is much more straight forward to work with. In the process I learned that both Zephyr and Bluefruit use the same “SoftDevice” for Bluetooth functionality. The SoftDevice is a binary library provided by Nordic. So I think the Bluefruit implementation should support most any Bluetooth function, but you might have to dig down and use lower level functions.