XIAO BLE Sense in deep sleep mode

These are my results using the 3.3v pin and GND

1 Like

Thanks for the reply and for showing your results, very appreciated.
That was one of my questions like many others that gets no official answers from seeeds!
If you look at my comment on this thread, I already have asked if we can use this file update-Seeed_XIAO_nRF52840_Sense_bootloader-0.6.1_nosd.uf2 and copy-paste to the sense-ble when it is in bootloader mode and shows as a USB drive in PC. If yes , still this brings some questions and concerns; e.g I see a nosd in the file name! what does it mean? what is this new uf2? does it have any limitation of its own? or it is just an upgrade?
Cheers,

PS.
If per wiki’s say upgrading needs to be done by a JLink Downloader, this is NOT an option, it is ridiculous to ask people to buy a $500 to change the bootloader of a $15 board.

Ah, I didn’t notice the nosd part in the name, I will later test if the BLE stack works as intended otherwise… it would suck. It seems bigger than the previous so I doubt the SD is missing completely (maybe disabled).

As for the Wiki: yeah, the information is scattered a bit everywhere. In this forum there’s a post explaining how to use a raspberry-Pi to re-flash the bootloader when it stops working and it can’t accept uf2 files anymore. I think JLink is a reference to the protocol name, so any SWD programmer which supports it should work.

So far I am pleased with what I’ve seen but I might change my mind if BLE doesn’t work with this bootloader.

Nope, the code is not advertising properly.
The nrf52 is capable of 5nA when in deep sleep (meaning: everything is turned off and the MCU is listening to external pins to wake it up).
The deep_sleep.ino sample is supposed to show the consumption when the module is advertising and taking advantage of the System On mode, which should be around few uA according to this.
I will keep digging, something doesn’t quite add up yet.
@Dr_Blueble if you run the above mentioned sample with the default bootloader, what is the consumption you measure?

1 Like

Ok, little bit more progress.
It is advertising properly, using about 3mA for it (probably because the blue LED blinks when advertising?). When connected it goes well below 1ms, which means that the approach of advertising for 5 secs and sleeping for 25secs is indeed sustainable.
Feel free to reach out to me directly, I feel the board that’s showing 60mA (consistently) is either buggy or the update to the new bootloader didn’t work.

Next steps

  1. Check if this behavior is achievable on 2.6.1 (by the mere replacement of the bootloader)
  2. port this discovery to PlatformIO where my projects resides.

-ciao

1 Like

I am running on the Xiao BLE normal (not sense).
I tried the new firmware updated-nosd.uf2. I can confirm Bluetooth is still working the same on my board as with the shipped bootloader, however I have had no success in sleeping, or getting the deep_sleep.ino to compile. I get the “No QSPI/SPI flash are defined on your board variant.h” error, which looking through the error further I find No such file or directory for nrf_sdm.h. In searching the example repository’s libraries, I cannot find said file.
For reference, my board is running 8.1mA with all the Bluetooth functionality working (8.6mA when I turn on the blue LED).
My hope is to run on ION_RAMON_RTC mode, which according to the datasheet section 5.2.1.1:

ION_RAMON_RTC System ON, full 256 kB RAM retention, wake on RTC is 3.16µA.

Main Wiki:
Navigate to Tools > Board > Boards Manager… , type the keyword "seeed nrf52 " in the search box, select the latest version of Seeed nRF52 Boards , and install it.

Be sure to pick version 1.0.0 (based on Adafruit core) instead of the default one.

2 Likes

This is the part I was missing, thank you.
deep_sleep.ino has now compiled and I measure 28 µA.

1 Like

Hi, thanks for providing the details of your experience, The current with the default bootloader is around 3-6mA from battery taps. I think the 60mA is from the USB port that includes a battery charging current of around 50mA. and about the programming the sense-ble by a raspberry zero, it is another headache, they are out of stock as far as I see. What I have found is we should be able to go to bootloader mode and just replace the uf2 file but I am wondering why seeed’s wiki does not mention that at all!!!

Hi Aburton, How did you upgraded to new bootloader? did you go to bootloader mode and replaced the UF2 file? or you have upgraded by programmer?
I guess! the updated bootloader saves and runs the program binary from internal flash of NFR52. I think this means we are losing the space from external 16Mb QSFP and it would be disabled to save the current. That is not a big deal if we can use deep-sleep mode.

the 60mA is due to the board being defective I believe.
Another identical board is working properly instead.
I uploaded the bootloader both with the UF2 method and with the flashing method using a JLink edu Mini ($20 but good luck finding one) and JFlashLite.

Dr_Bluble,
I used the UF2 method.
Double click the reset button to enter bootloader mode, it shows up as a flash drive would, then drop the UF2 file in.
I got the file from the repository that the deep_sleep.ino is in from the wiki. Specifically you can find them here to match your board.
But I would still like to get down to 5µA or less in sleep. So Seeed (@Cirtic), I’m still looking forward to that rework for “early May”.

Hey, I’m glad there was a forum started on this as I couldn’t get this working as well. I was wondering what power consumption people were getting in general as with reading accelerometer values and sending the data over BLE, Im currently getting around 15mA which is way too high for a wearable device. Is there ways of reducing this power usage such as changing the sampling rate of the accelerometer, and how to do so if possible.

Thanks

Adding to this, I also found that the 1.0.0 firmware does not work with the accelerometer.

1 Like

@jonyu FYI, i just created a new thread on using interrupts from LSM6DS3. Later on, when deep sleep finally works, some should reach long runtime while using accelerometer events to wake up.

Jonyu,
Thanks for reporting this, Actually I was about to update to the new bootloader and roll back to 1.0.0. The accelerator is the main component of my project and if I can not use it alongside sleep mode, it is useless. At this rate, this board is just a bad joke! It has many fundamental hardware and software issues, one can not read the battery properly, does not go to deep_sleep, IMU conflict with battery readout, no BLE URAT support or other features that you can use in similar NRF52 boards in Arduino and … .
I have started to give up on XIAO (and all seeed’s produtcs)

Battery readout off-topic:
Unsolicited suggestion: the voltage dividers are great to determine how the battery is doing, but the amount of code I had to write to translate this raw value into a credible although inaccurate percentage value, was too much.

Forget voltage division, MAX17048 requires only one external component which it’s likely already on the board.

1 Like

Hey Dr_Blueble

Yea the project I’m working on requires me to have extremely low power consumption while having an accelerometer and BLE. I thought the Seeed wouldve been a good pick as it supports bluefruit to tune the BLE settings but without the accelerometer its not quite helpful. I was wondering if you do give up on these seeed products, what board you would be using or if you had any recommendations for a low power consumption board that has BLE and an accelorometer?

I did quite some progress into getting this board to work with PlatformIO low power mode.
The last thing I need to figure out is how to disable the blinking blue LED when advertising.
@jonyu I doubt you can go lower than what you can achieve with nrf52840 and the same level of support of Nordic, have you considered creating a shield with just the MPU?
Example: MPU6050 super thin feather from Turing Complete on Tindie

Hi Jonyu,
I am thinking maybe Arduino Nano 33 BLE Sense, it is a bit more expensive but it has 9 dof and also you have real support and Arduino does not deceive you with fake codes :sweat_smile: (look at the new Xiao BLE sense Motion recognition thread :zipper_mouth_face:)
Cheers,

2 Likes