Nano33 ble - how should I go about reducing current draw

Steen_Petersen:
you can decrease the current draw by removing LEDs.

There were more IO pins on the nRF52840 than needed for the Nano form factor, so the Nano 33 BLE designers put the "ON" LED on a dedicated IO pin (LED_PWR). So if you want to save the power that the "ON" LED uses, no need to remove it, just do this in the setup() function of your sketch:

digitalWrite(LED_PWR, LOW);

The "L" LED is on pin 13. If you don't use pin 13, then that LED will do no harm. However, it might be that you need all the IO pins or are using the SPI bus (the led is on the SCK pin). In that case, you might want to remove the "L" LED.

Steen_Petersen:
Apparently the board should go into sleep modes by itself when it has nothing to do, but the empty sketch kinda shows me that that is not the case.

I think the way it works is it sleeps while delay() is running. See the "reference sketch" at cordio: lower power polling with timeout by sandeepmistry · Pull Request #15 · arduino-libraries/ArduinoBLE · GitHub

Steen_Petersen:
Others have had this problem but an update of the ArduinoBLE library (which I have) should have fixed this issue.

That is about power consumption while using BLE. That information doesn't apply when you're running an empty sketch.

Note this statement on the linked pull request:

I discovered the device all the time in the smartphone apps like the device doesn't go to sleep at all. Am I missing anything?

This is the intended behaviour there is no sleep, the power consumption is just lower between radio events.

Steen_Petersen:
It does however state in that thread that powering it via the solder jumper on the underside of the board should cut power consumption down further.

The DC/DC converter that converts the 5 V from the USB to the 3.3 V the nRF52840 runs at is using a lot of current. If you cut the jumper, then you can cut the DC/DC converter out of the circuit and power the nRF52840 from a 3.3 V supply directly via the 3.3V pin.

Steen_Petersen:
But im unsure how to go about doing this.

There is a small trace connecting the two larger solder jumper pads on the bottom of the board that are marked "3.3V". With a utility knife, repeatedly cut through that small trace until you are certain you have broken the connection. After doing this, the USB cable will no longer power the Nano 33 BLE, so you will need to provide a 3.3 V power supply to the board via the 3.3 V pin.

Steen_Petersen:
Or if its even wise to do so.

You do need to be careful when powering the nRF52840 directly. When powering via the USB cable, there's not much you can do wrong. But when powering from the 3.3 V pin, you could kill the chip by using too high a voltage or reversing the polarity. If you later decide you want to go back to powering the board via the USB cable, you can use a blob of solder to replace the connection between the solder jumper pads.

Steen_Petersen:
Is there an example sketch for putting the nano33 ble into a sleep mode?

Sure, it's here:

void setup() {
}

void loop() {
  // Sleep for one minute
  delay(60 * 1000);
}

Here are my findings:

BareMinimum sketch:

void setup() {}
void loop() {}

with USB power: 17.4 mA

BareMinimum sketch with 3.3 V jumper cut, powered via the 3.3 V pin: 9.49 mA

"ON" LED turned off:

void setup() {
  digitalWrite(LED_PWR, LOW);
}
void loop() {}

7.6 mA

1 minute sleep per loop:

void setup() {
  digitalWrite(LED_PWR, LOW);
}
void loop() {
  delay(60 * 1000);
}

1.747 mA

PIN_ENABLE_SENSORS_3V3 set to LOW:

void setup() {
  digitalWrite(LED_PWR, LOW);
  digitalWrite(PIN_ENABLE_SENSORS_3V3, LOW);
}
void loop() {
  delay(60 * 1000);
}

1.741 mA

PIN_ENABLE_I2C_PULLUP set to LOW:

void setup() {
 digitalWrite(LED_PWR, LOW);
 digitalWrite(PIN_ENABLE_SENSORS_3V3, LOW);
 digitalWrite(PIN_ENABLE_I2C_PULLUP, LOW);
}

void loop() {
 delay(60 * 1000);
}

1.738 mA

Unplug USB cable: 1.240 mA

Power cycle the board with USB cable unplugged: 0.906 mA

2 Likes