Preliminary 0.9.0 Boron LTE current consumption in sleep modes measurements


@Rftop can you post your test code so I can repeat on my hardware.


@jack4566, You might wake the Boron to store sensor data in EEPROM periodically, and only use the Cellular Modem to upload the results once or twice a day. This post suggest ~1.5 years on 3xAA batteries when using an external timer and the EN Pin.

Rough Estimate:

  • Energy used during Shutdown: 7.5 mWh per Day
  • Energy used during Publish: 1 mWh per Publish (can vary depending on your Cellular Environment)
  • 3xAA (Energizer L91’s) are rated between 4,500 - 5,500 mWh, depending on your duty cycle

1 publish per day: 5000 mWh / ( 1 mWh + 7.5 mWh ) = ~588 days

But I don’t know how to generate accurate timestamps (if req’d) for the data log using this Store/Shutdown & Publish Later approach, without adding an external RTC.


Test code was pretty simple:

//The only connection to the Boron LTE is the Li-Po @ 4.01 V.
//Current measured w/ µCurrent GOLD inline on negative Li-Po conductor

void setup()  { } 
void loop()   {
   // Pick either Sleep Mode:
    System.sleep(SLEEP_MODE_DEEP);     // Deep Sleep
//  System.sleep( {}, {}, 30);         // Timed Sleep, 30 seconds


I intend to use an AVR for sleeping the boron using the EN pin and keeping track of time. ~5uA sleep on an attiny is far better than the boron! I also have some other sensors that need regular maintenance so the tiny can handle that and pass along the data to boron once every hour for long term storage and transmission.

Getting back on topic I see an improvement that could be made on the hardware side of the Boron. Resistor R4 is spec’d at 100k which drains 90uW when the SYS_PWR_EN is drawn low. The power switch XC8107 only needs 1.5V to turn on and drains a maximum of 100nA so theoretically R4 can be as high as 5M! A good value might be 1M for future revisions with a power savings of 81uW. @ScruffR maybe you can get this to the beings in power?


I agree 100%. I’ve been tinkering with various Sleep Code for ATtiny84/85 in the hopes of eventually incorporating it into a Boron Carrier Board w/ 3xAA battery holder.


I thought I’d share a few more observations:
Boron LTE 0.9.0 w/ 2,000 mAh Li-Po, 1-watt Solar Panel, Manual Mode, 4.208V Li-po Charge termination.

  • It’s Coded to stay awake and connected if SOC >90%.
  • It will re-check SOC and publish measurements every 20 minutes while Awake.
  • Once SOC drops below 90%, it sleeps for 1 hour using System.sleep( {}, {}, sleepTime); & then publish measurements. It allows 3 minutes for the Cell/Cloud Connection, returns to sleep if Boron doesn’t connect within 3 minutes.

Results for Boron LTE w/ a Solar Re-charged 2,000 mAh “rated” Li-Po:

  • Each 1 % SOC lasts about 1 hour while awake
  • Each 1 % SOC lasts about 8 hours while Sleeping

These are just rough numbers for project estimating purposes. Your mileage may vary.

[Edit]: Sorry, I realized it wasn’t obvious that the above results are when the Solar Panel doesn’t have sunlight. During an average daytime (not mostly cloudy), the Li-Po remains charged and the Boron operates from the Solar Panel only:

It shouldn’t be too hard for a Solar Boron LTE to remain Online and Awake for a significant Up-Time percentage.
A 5,000 mAh Li-Po would provide a large Safety Factor for extended periods of cloudy weather.
Using a progressive sleepTime when SOC continues to drop would also help during extreme cloudy conditions.

Thanks Again to all that helped implement the Sleep Modes in 0.9.0 firmware !


How did you integrate the solar panel? Do you just have it hooked up to the VIN or does it have a dedicated MPPT Boost/Buck converter? In my application we are using the BQ25570 and it does really well for applications under 200mA like data logging.


This particular unit just has the 6V Solar Panel wires landed on Vin and Gnd.
I’ve also used the USB connector on a few Boron’s.
My typical settings for the Boron’s on-board PMIC in Solar applications are:

  pmic.setInputVoltageLimit(5080);  //  for 6V Solar Panels
  pmic.setInputCurrentLimit(2000) ; // 2000 mA, higher than req'd
  pmic.setChargeVoltage(4208);      //  Set Li-Po charge termination voltage to 4.21V,  Monitor the Enclosure Temps
  pmic.setChargeCurrent(0, 0, 1, 1, 1, 0); // 1408 mA [0+0+512mA+256mA+128mA+0] + 512 Offset


Ending up with a peculiar problem here. In sleep mode, I’m going down to a current draw of 1.2mA when I’m using a LiPo battery, whereas when I’m using the USB, the current draw fluctuates around 13-16 mA. I am using the same code. Also, when I power through USB (either computer or 4xAA battery pack), the CHG LED continuously flickers yellow when there isn’t a LiPo connected (when a LiPo is connected, it charges the LiPo and stays a steady yellow).
Anybody know why USB might be drawing far more current in sleep?

void loop()

System.sleep(D1, RISING, 600);   


Because the 5v input from the USB is going through the DC to DC regulator which is not near as efficient as powering directly from the LiPo which bypasses the DC to DC regulator.