I'm designing a low power IoT in the Cloud framework for the Arduino MKR WIFI series. A firmware proof of concept that uses the low power option of this Arduino as much as possible, only to wake up to make a measurement and beam it to Amazon Web Services (AWS).
The framework also reports the battery state. This allows the operator to go charge the battery before the defice runs out of juice.
This blog measures the solution's power consumption over long time. It takes in account the time spent working and the time when the Arduino is in deep sleep.
That power profile will be used in AWS to inform how long the application will keep running on the current charge.
I'm using the solution I built in Keithley DMM6500: Measure Amp-Hours of a microcontroller with a µCurrent to collect the power profile of the gizmo.
My test setup is a Keithley DMM6500, a EEVblog µCurrent, and a script that you can find in the blog post mentioned above.
I'm measuring the power consumption of my Arduino MKR WIFI 1010 low power design over one hour.
The design runs one lifecycle each 15 minutes.
At the start of a lifecycle, it does performs some measurements, connects to AWS over my home WiFi and beams over the data.
The remainder of that 15 minutes is spent deep sleeping.
After one hour - that is 4 full cycles - the DMM6500 reports:
Average current: 4.173317 mA
Reported consumption: 4.1861 mAh.
The battery theoretically has 1200 mAh, although the fuel gauge chip I'm using says it only has 700 mAh at full charge.
If I take 70 % (a common value that gets most energy out of a LiPo without deep discharge) of 700 as a feasible power budget of the battery, 490 mAh,
I measured that the device consumes 4mAh each hour.
This gives me 122.5 hours until a recharge is needed with the current worn battery state. A little more than 5 days.
If the battery was still at its prime, I'd have 1200 mAh * 70% = 840 mAh / 4 mAh = 210 hours = 8.75 days.
Because I'm sending the battery statistics to AWS every 15 minutes, I can use these data points to set up an alarm when a battery recharge is due.
This little blog is the result of a few rather big exercises:
- design a low power Arduino MKR WIFI 101 design that logs its battery health to AWS: Manage Arduino MKR WIFI 1010 Battery Life in the Cloud - How Long until the Next Recharge?
- design a solution to collect a microcontroller's power profile: Keithley DMM6500: Measure Amp-Hours of a microcontroller with a µCurrent