I've gathered a few things from the forum about reducing battery usage, but it's been piecemeal. Let's ignore the ATmega for now. On the BLE side, this is what I think I know.
(1) Connection Burden: Merely maintaining a bluetooth connection consumes power. A Bean that's not connected to a central consumes less power. Transferring data adds to connection burden, but let's assume we're making intelligent decisions about data transfer.
(2) Advertising Burden: the more frequent, the more power wasted. By default, it's 500ms. And the way to reduce advertisement frequency is available only for iOS/OSx, via the SDK. Also, the Bean only advertises when it's not connected to a central.
I've read @GTL thread on battery test, which is good base data. From forum posts, it seems like a CR2032 will give you 1 to 2 weeks of battery life when constantly connected (about 1.2mA consumption)? When not connected, the default advertisement rate yields 1 month life. Advertisement is much less of a burden than connection.
What options are there for reducing connection burden? In the Node-Red module, there is an option for "constantly connected" or "connection on event". Right now, I haven't been able to get connection on event to work - after the first connection, subsequent connect events require running hcitool prior to connection attempt. Something to do with noble. But when we get the "connect on event" to work, then the power burden of connection would be much lower, right? Because we're reducing the duration of connection (from 100% of the time to however often we actually transfer data ).
At which point, the advertising burden comes into play. What advertisement rates have you guys been using when trying to boost battery life? How much has it extended battery life? What's are the negative effects? I imagine it makes the "connect on event" take longer?
My understanding is pretty iffy, so please correct.