I was able to setup the board under PlatformIO.
I haven’t tried the IMU yet, but I will soon.
Good luck!
Sorry for the delay in delivery, R&D is still following up.
It’s hard for me to imagine that the deep sleep code they posted will ever work, given that it is clearly written for SAMD architecture and not the Nordic nRF in any way.
Well, the ARM is common for many nRF and SAMDs but the BLE section usually requires additional power saving features. Also even if both are ARM, the M0 and the M4 have many different commands.
Really crossing my fingers for an update soon
The wiki has been updated.
Was there a fix? I do not see an update in github for the “deep sleep” demo BLE_52840_Core/libraries/Bluefruit52Lib/examples/Hardware/deep_Sleep at main · 0hotpotman0/BLE_52840_Core · GitHub
The code is not updated, please follow the wiki to downgrade the XIAO BLE on-board file to version 1.0.0 for use.
How to make xiao ble sleep with latest firmware?
I have a project that does low frequency BLE communication and I want to put xiao ble to sleep during BLE communication.
The BLE communication task is coded in the ArduinoBLE library according to tutolial in wiki, but it does not work with 1.0.0 firmware.
Is there any library that will work with 1.0.0 firmware?
Sorry, currently Arduino BLE and low power mode cannot be used at the same time, BLE is the main function of XIAO BLE, low power mode is only the icing on the cake, you may need to choose to use it.
You can use either one of these to shutdown the chip:
sd_power_system_off();
NRF_POWER->SYSTEMOFF = 1;
But to wake it up, you need to cycle the power to the chip (BLE and all peripherals). Also, in the case of the XIAO BLE Sense that has the IMU and the Mic circuits…these will remain on using about 2mA even as you shut the chip down. So you need to find the pin that supplies power to the IMU and the MIC and have it turned off in the code before you invoke these.
Or use a circuit like this that you can control either manually or with a digital pin. Still requires user physical action to restart the chip.Pololu - Mini MOSFET Slide Switch with Reverse Voltage Protection, LV
Thanks for the replies.
Is there any way to implement BLE communication with firmware 1.0.0?
Any library is acceptable.
Adafruit (which 52840 XIAO BLE version 1.0 uses) has very well documented libraries and examples. Can use UART (BLUART) and also can use the specialized characteristics based BLE. There are numerous examples in Arduino IDE.
Thank you.
I’ll give it a try.
Do you know if we can access the NRF SYSTEM ON sleep mode? So that I can wake it with a BLE event?
My understanding that if you use either one of these to shutdown the chip you need to cycle the power to the chip. Do not think the interrupts work.
sd_power_system_off();
NRF_POWER->SYSTEMOFF = 1;
There is a way to use BLE to wake up the chip, but not after using these commands. Do not know what commands/conditions must be met.
I am getting 22uA when using: sd_power_system_off(); This is on the plain XIAO BLE 52840 without the IMU and Mic sensors.
The BLE SENSE has those two sensors that have their own circuit drawing about 2mA. EDIT: the BLE Sense is also using around 480uA during BLE connected status at 8x TX power and also goes down into 22uA with sd_power_system_off(). So the IMU and Mic circuits also go off with the chip. IMHO, good design.
I am actually impressed because while connected via BLE (no peripherals on any pins) the module is only using 450uA and sending data to the phone with TX set at 8x power. That is much lower than any other modules I have seen, which is usually 1.9-2.1mA. I have all LEDs turned off when connected via BLE. All this is of course on battery. Via USB still connected you will not get below 2mA.
But I wish Seeed would come out with a PCB antenna version instead of the chip antenna that is 10db weaker. Yes, slightly more real estate but worth it.
interesting results, thanks for the report!
I have a Xiao BLE (not Sense) but can’t get under 6mA with BLE connected. Would you mind sharing the library/code used to achieve 450uA?
with sd_power_system_off() I do get down to the advertised 3uA using version 1.0.0 of the board library.