Epic Power Fail
Went back to Nebinger Elementary to check on the snake sensor described in the previous post, and … the batteries were dead. We got about three days’ worth of good data (see chart, above), taking soil moisture and temperature readings every 30 minutes. There was no rain during that period, but it’s clear from the chart when volunteer gardeners went out and watered the vegetable garden—the temperature (blue line) dips as the cold water contacts the temperature sensor, and the soil moisture (red line) increases. (The sensors were not calibrated, by the way, so pay no attention to the numbers on the soil moisture axis; the volumetric water content would not be at all accurate.)
What happened? The Arduino was programmed to go to sleep between sensor readings, using the functions in the Narcoleptic library. The LEDs and sensors shouldn’t be drawing much from the batteries. There were some hot days in that stretch, but it’s cold weather you have to worry about when considering temperature effects on battery drain. Something else is going on.
Here’s where we dusted off the multimeter and made a somewhat surprising discovery. After wiring a circuit to measure current draw, we saw that the Arduino Uno was drawing around 50 mA (milliamps), even while it was idle in sleep mode. I’m no electrical engineer, and this is probably some fuzzy math I’m about to do, but let’s say a AA battery has 2000 mAh (milliamp hours), and the four AAs are wired in series, so current is not additive. (Read this if I just lost you.) So 2000 mAh divided by 50 mA—we can expect about 40 hours of operation; a little less than 3 days. That’s just about what we got with the snake sensor.
Clearly we need a better approach to conserve battery life—a different circuit, a way to minimize the current draw by eliminating the Arduino’s “on” LED or voltage regulator, maybe even look at different microcontroller boards that don’t consume as much power.