I was trying to optimize battery life for an application. So I am working on a project trying to collect data from two sensors, wakes up every 8 hours and uploads the data collected to the server using the Boron LTE (based in New Zealand). The goal was to achieve a product that could last 6 months in the least (which would be 6 * 30 * 3 = 540 data points).
I am using the HttpClient Library (https://github.com/nmattisson/HttpClient) to directly send data to the server, instead of using webhooks. I initially tested the Boron with 3000 mAh battery, waking up every 20 minutes, uploading data to the server, and squeezed out some 250 data points before the battery went dead. I used SystemSleepMode::STOP and never turned Cellular.off.
Then I thought I would wire up two 3000 mAh batteries in parallel and the Boron to wake up every 8 hours, expecting atleast some 400 data points to register, keeping all the other settings the same.
So that is the state after 9 days and things aren’t looking great.
I am going to test other Sleep Modes and also will try turning the Cellular.off. I was kind of worried whether turning it off would make it extremely power consuming to wake up, get connected and upload data.
I would like to get some opinion on all that from people who might have engaged in similar projects- like am I too far off the general experience using Borons, and am I making some really obvious mistakes?.
(I am trying to not use Solar Power at all. I had used solar panels previously and the results were good.)
If the device is sleeping for 8 hours you definitely want to turn the cellular off. Here is some rough guidance on current consumption when sleeping:
You are talking about 128 uA vs. 14.2 mA current draw when sleeping. In general practice, if the primary concern is life of the battery, you only want to sleep with network on if sleeping for less then 10 minutes OR even shorter. That’s the only scenario where you might be a little ahead keeping the cellular on. At most maybe 15 minutes if you had really poor signal strength and it requires a little more time to reconnect. If you need to sleep for longer than 20 minutes, then you mine as well sleep for 60 minutes due to the keep-alive timeout requiring longer reconnection time.
But in your scenario of sleeping 8 hours at a time, definitely turn cellular off. With a single 3000 mAh battery and the Boron consuming 14 mAh during sleep, absolute best case scenario is less than 10 days. I would think publishing every 8 hours a single 3000 mAh battery would last 6 months if you turn the cellular off.
Agree with your math with one addition. When looking at battery life, it is important to consider the entire system not just the Boron. To realize these low battery levels you will need an external real time clock and there is likely some (small) draw from the sensors too.
Finally, I have seen huge variation in connection time that makes it very hard to predict battery life over a long period of time. I have over 100 Boron LTE sensors deployed and even those with good signal can spend from 15 seconds to 300 seconds connecting. Without solar to recharge after a long running connect time, there is a 20x difference in the power used for connection (the biggest draw in these applications) and it makes it very hard to predict how long a battery will last.
I wired up another Boron over the weekend using the SystemSleepMode::ULTRA_LOW_POWER as opposed to STOP. Also explicitly turned network off with Cellular.off . So 6000 mAH battery set to wake up at 1 hour, send data directly to the server (no webhooks) and then go back to sleep. And here is the result
That is a substantial improvement I think for 47 data packets compared what I had with the SystemSleepMode::STOP (earlier plot made up of some 30 data packets).
So for these 47 data packets the Borons had got stuck in the Green Flashing state like forever (that happens) 10 times! and I had got them to automatically reset when timed out after 5 minutes, and after all that still it looks likes the battery is holding. That is good.
Maybe it is a bit too early to comment. So I will update here with a better long term data plot, as things progress.