I have a somewhat similar application to yours in that I have an ATmega328p running at 4MHz with 1.8 volt brown out with a transmitter (nRF24L01) monitoring a physical mailbox.
The processor is woken up by the watchdog time every 8 seconds. Every 4th wakeup causes the processor to switch on an 3.3volt step-up converter ( to which all the peripherals are connected), tests the environment and sends a message with the status of the mailbox and other information such as its battery voltage. It then goes back to sleep.
The current 2 AA cells are 9 months old and are no where near exhausted.
I did try the Rocket Scream low power library, but had to resort to native AVR library commands because of a compatibility problem (I can’t now remember exactly what problem I had to solve).
This is the command I used with Rocket Scream :
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF );
I now use the following code:
. . .
. . .
ADCSRA = 0; // disable ADC
// together within a few clock cycles, so some repetition
MCUSR = 0; // allow changes, disable reset
WDTCSR = bit (WDCE) | bit (WDE); // set interrupt mode and an interval
WDTCSR = bit (WDIE) | bit (WDP3) | bit (WDP0); // set WDIE, and 8 seconds delay
wdt_reset(); // pat the dog
noInterrupts (); // timed sequence follows
// turn off brown-out enable in software
MCUCR = bit (BODS) | bit (BODSE);
MCUCR = bit (BODS);
interrupts (); // guarantees next instruction executed
// cancel sleep as a precaution
You’ll see from the document I linked to the following power consumption listed for the various sleep modes:
SLEEP_MODE_IDLE: 15 mA
SLEEP_MODE_ADC: 6.5 mA
SLEEP_MODE_PWR_SAVE: 1.62 mA
SLEEP_MODE_EXT_STANDBY: 1.62 mA
SLEEP_MODE_STANDBY : 0.84 mA
SLEEP_MODE_PWR_DOWN : 0.36 mA
It appears that the Idle mode you are using is quite high up the list (in its raw form).
I have a very cheap digital multimeter which has a scale to 200 microamps giving a resolution of 0.1 micro amps. I’m not sure how accurate it is but the results appear plausible.