ADXL362 + Low Power Library + Mini Ultra 8 MHz Tutorial
Analog Devices posted a tutorial on how to use their new ultra low power accelerometer ADXL362 with our Low Power Arduino compatible library and Mini Ultra 8 MHz. Awesome and very detail step by step guide is included in the tutorial! Thank you Anne for all the good work and effort!
But, we just ran out of Mini Ultra 8 MHz at the moment. New version will be back in stock shortly which basically to replace the obsolete resonator (we love this part due to it’s size and it’s load capacitance rating).
The Low Power library is also currently being expanded to support ATMega2560 (done) and ATMega32U4 (testing stage). Although both parts above are not Atmel’s pico power devices, you could still push them to very low power state! Now, we just need to find some time in between all the production tasks on osPID Kit to complete testing the new version of the library.
Take care & happy tinkering!
I looked at your low power library and it showed either wake on interrupt or periodic wake, but not both. The code comments also said “Use SLEEP_FOREVER to use other wake up resource”. Can it be used for a combination, such as, wake every 8 seconds or if interrupt, whichever occurs first?
It should be able to wake up on both sources if NOT using SLEEP_FOREVER.
Thank you so much for this library! I’ve sifted through a bunch of in-the-weeds code that really didn’t make sense to me, and it’s much nicer to have this single-line solution.
A little snag I ran into, in case I can save someone else the trouble: I’m using this on a Fio, and my plan is to have the Fio sleep, wake up, take the temperature from a DS18b20, send it out over XBee, then go back to sleep. E.g.:
#include
const unsigned int SLEEP_CYCLES_BETWEEN_READINGS = 37; // ~5 minutes
unsigned int g_SleepCycles = 0;
void loop()
{
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
g_SleepCycles++;
if (g_SleepCycles >= SLEEP_CYCLES_BETWEEN_READINGS)
{
g_SleepCycles = 0;
// Take DS18b20 readingand send out via XBee
}
}
I found that I was getting just the first byte of two of the reading on the distant XBee module, and then 5 minutes later a little bit more, etc.
It turns out (at least if my theory is right) that you need to do a quick delay(50); (or so) in order to allow the UART to drain before going back to sleep. Very simple fix, but I beat my head on the table for longer than I’m willing to admit before I figured it out. :-\