Achieve Low power consumption on Arduino Nano 33 BLE Sense

Hi, I am trying to reduce the power consumption of my arduino BLE sense by following this topic: Low power consumption on the Arduino Nano 33 BLE Sense

I followed all the steps (like cutting the 3.3V bridge and adding custom code to turn down the default serial)

The curious thing is that when I call the delay function (so the module enters in sleep mode) It meassures a power consumption of 315 uA. But when I shutdown the module (by adding ) the power consumption is 5.2 uA, which is corresponding to the sensors and BLE module in deep sleep state.

I would like to know how to improve this and get the lower values of conumpsion that other people have mentioned in the cited post (arround 11 uA).

Here the code I had been using:

//Ultra Low Power blink example. Tested on Arduino nano 33 BLE board and nRF528x (Mbed OS) V1.1.6 core
//https://forum.arduino.cc/t/low-power-consumption-on-the-arduino-nano-33-ble-sense/1013562
//Override the default main function to remove USB CDC feature - @farome contribution
//Summarizing, here's a very low power version of the blink example, without shutting down the main CPU (up to 11µA with all LEDs off - 4mA with power LED on).

//lower value got with delay: 315 uA for  sleep in arduino nano 33 BLE sense board 
//lower value got with shutdown: 5.2 uA for shutdown in arduino nano 33 BLE sense board 
//https://forum.arduino.cc/t/nano-33-ble-sense-system-on-off-minimum-power-consumption/677478
//Note: If you add the shutdown function, you get 5.2uA as power consumption . This means 
//that there is an issue with the low power mode of the module (the delay function), and not with the hardware or sensrs
int main(void){
init();
initVariant();

//Disabling UART0 (saves around 300-500µA) - @Jul10199555 contribution
NRF_UART0->TASKS_STOPTX = 1;
NRF_UART0->TASKS_STOPRX = 1;
NRF_UART0->ENABLE = 0;

*(volatile uint32_t *)0x40002FFC = 0;
*(volatile uint32_t *)0x40002FFC;
*(volatile uint32_t *)0x40002FFC = 1; //Setting up UART registers again due to a library issue

//Removing USB CDC feature
//#if defined(SERIAL_CDC)
//  PluggableUSBD().begin();
//  SerialUSB.begin(115200);
//#endif

  setup();
  for(;;){
    loop();
//If you won't be using serial communication comment next line
//    if(arduino::serialEventRun) arduino::serialEventRun();
  }
  return 0;
}

void setup(){
//pinMode(pin, OUTPUT) is already set for these 3 pins on variants.cpp
  digitalWrite(LED_PWR, LOW); // @pert contribution
//Pins are currently swapped. Lower current achieved if setting both pins to HIGH
  digitalWrite(PIN_ENABLE_SENSORS_3V3, LOW); //PIN_ENABLE_I2C_PULLUP - @pert contribution
  digitalWrite(PIN_ENABLE_I2C_PULLUP,  LOW); //PIN_ENABLE_SENSORS_3V3 - @pert contribution
  //NRF_POWER->DCDCEN=1;//ENABLE BUCK CONVERTER, HELPS A LOT
}
void rtos_idle_callback(void)
{
  // Don't call any other FreeRTOS blocking API()
  // Perform background task(s) here
}
void loop(){
  digitalWrite(LED_PWR, HIGH);
  delay(5*1000);
  digitalWrite(LED_PWR, LOW);
  delay(10*1000); //332 µA USB
//  NRF_POWER->SYSTEMOFF = 1; //5.3 uA, but shuts down all.

  delay(30*1000); //332 µA USB
  
}

Best Regards

Andres

It presumably has to keep doing something - not just sleep - to keep track of the delay?

The only thread running is the one with the delay loop . Then you have the RTOS running in the background but it should not consume so much power. I checked in other sites that other persons solved this issue by creating events an timers using RTOS features . The issue is that this functions, as far as i know, are not available.

I am open to any advice regarding on how to proceed in this case.

Hi, I had the same issue here.

I solved it by installing the "[DEPRECIATED - Please install standalone packages] Arduino Mbed OS Boards" in version 1.1.3 in the board manager as mentionned by @farom is this post : https://forum.arduino.cc/t/nano-33-ble-idle-power/624683/4

I don't know the consequences of doing that but the sleep power consumption during the execution of the delay function is now really low.

Hope it could be helpful.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.