Low power consumption on the Arduino Nano 33 BLE Sense

Hi guys,

I am testing my Arduino Nano 33 BLE Sense board in order to find out what the lowest current during the sleep state of this board is. I have already found some articles on the forum (such this one Setting up the arduino BLE board for low power applications [Compilation]) where guys played with the Arduino Nano 33 BLE (classic one without this Sense part). I am trying to use the same code, the simplest blink example, where based on what they provided, they were able to reach 11microAmpere without shutting down the MCU.

//Ultra Low Power blink example. Tested on Arduino nano 33 BLE board and nRF528x (Mbed OS) V1.1.6 core

//Override the default main function to remove USB CDC feature - @farome contribution
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, HIGH); //PIN_ENABLE_I2C_PULLUP - @pert contribution
  digitalWrite(PIN_ENABLE_I2C_PULLUP, HIGH); //PIN_ENABLE_SENSORS_3V3 - @pert contribution
}

void loop(){
  delay(60*1000); //22µA USB cable, 11 µA USB cable unplugged
  digitalWrite(LED_PWR, HIGH);
  delay(5*1000);
  digitalWrite(LED_PWR, LOW);
}

Based on my tests using the PPK2 to measure the current, the lowest I can reach is 441.41 microAmpere. Can I use the same implementation as they did even if my board is Sense and not the classic Arduino Nano 33 BLE? Any suggestions are welcome :slight_smile:

Yes, I think you can do that, but the Sense version of the board has several extra chips, and the code you have probably does nothing to put those chips into low power mode. Ultimately, you can probably never get quite as low as the regular BLE but perhaps you can improve on that 440uA.

The best I can get so far is around 340 microAmpere. Maybe then it's better to order the Arduino Nano 33 BLE board as they are almost the same except some additional sensors. Do you maybe know if tensorflow lite library can be run on the classic Arduino Nano 33 BLE as that is important part that I must have in my app? If it's possible then definitely 33 BLE is better option.

I'm almost certain it will run the same software. Both boards have the same MCU chip, nRF52840. The Sense board just has more additional sensors for temperature, light & sound.

Aha, perfect! Thanks a lot for the information :slight_smile:

Hi,

I tried with Nano 33 BLE, but the consumption is still around 320 microAmpere. Based on results, nothing changed.

So, you got 340uA on the Sense and 320uA on the regular 33 BLE? The extra 20uA could be the sleep current of those extra sensors.

That means if you can get the regular 33 BLE down to the 11uA that those other guys achieved, it should be possible to get the sense down to ~31uA, which is still pretty good!

The question now is why your 33 BLE is at 320uA not 11uA...

That's the question especially now when I am using the same board as they did and the same test sketch. I also cut the jumper on the back side of the board in order to decrease the current. I cannot get it what the issue can be right now.

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