Deep Sleep and OTAA (m328p / LMIC)

Once you are under 1µA, the real factor in power consumption is the awake time, not the sleep time…

If you draw 1µA in sleep time, it will require a capacity of 10 mAh over a year, which is nothing compared to the wake-up current draw.

To give an idea I measure 0.84µA on my nodes, with RFM95 and BME280 connected, and I do nothing on the RFM95 to save power (I don’t think you will go under 0.40µA for the 328p alone – but again this is not the challenge, the challenge is to minimize your awake time/consumption)

1 Like

It might seem that way, but in practice, perhaps not.

It depends on the exact circuit of course, but an ATMega328 and LoRa device is capable of a deep sleep current of circa 1.5uA.

A sleep current of 1.5uA, is really of no consequency, a set of AAA Alkalines would keep the node going for 76 years, if the batteries could have that long a shelf life.

Using the TPL5110 to power off the node, my well be actually using more power than the deep sleep option, due to the time take to cold start the node every time.

The TPL5010 is in my view a much better option. It can provide an accurate interrupt to wake up from deep sleep.

And with the deep sleep approach you dont have the issues with rejoin etc.

Thank you for your answer;

I am indeed re-considering the power gating option. Initially I was using ABP, therefore the issue never surfaced with the JOIN. But yes, I think using the TPL5010 on a hardware interrupt to wake up the MCU seems the best case scenario.

What method would you recommend for deepsleep?

  • External interrupt from RTC or nano timer
  • LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); looped as many time as it’s need to reach 2h.

There are some notes on power down versus deep sleep in the section entitled;

“Reducing Tracker node sleep current - a wasteful race to the bottom ?”

In this report;

Its about GPSs and trackers, but the principles are the same.

1 Like

I do external interrupt from TPL 5110.

I use Mini-Lora nodes as described in:

This Arduino stack allows you to save the session keys (and network id, upload counter):

I’m basing a node on this library for use with an ESP32 TTGO LoRa board where the session keys and some counters are stored in (simulated) EEPROM here. In the EV_JOINED callback, I’m saving them:

Upon startup, I check my EEPROM structure for a previously saved session, and restore it using either LMIC_SetSession(…), or do a JOIN using LMIC_StartJoining():


How to get dev_EUI from RFM95 with arduino nano? I have problems

Thanks in advance.

@am1lcarcaceres just let TTN generate you a unique one when you register a device

The RFM95 does not have an EUI so you will not be able to get it.
Use a TTN generated one like @Paul_Stewart suggests.

Which library are you using to drive the RFM95?

I’m just entering the world of LoRa, thanks for solving the doubt

I am using the LMIC library, thank you for solving my doubts

Hi im also using a ATMEGA328p with an RFM in deepsleep mode.

But my uC wakes only 3 oder 4 times up after that it newer sends data again.

Somebody has a clue?

that’s not enough information :sunglasses:


I’m using IOT-MCU V1, soldered DIO1 D5 together and my sketch is from

Using the MCCI Library.

It works only one time, (see the data in the console) then die Atmega sleeps and never wakes up again.

The forum will need to know the actual code you are using, its much easier for us than using the external code generator which may well not provide the same code you are using.

And an actual link to the actual hardware you are using, its not fully clear exactly which hardware ‘IOT-MCU V1’ actually is.

1 Like

Is the IOTMCU V1 not the Lora Radio node V1.0? I see both names on the PCB.

he didn’t answer before … So it’s a waste of time/energy , we are not paranormal here imho :sunglasses:

When quoting parts or boards, it helps to provide a link or picture so we can be sure exactly what board you are using.

1 Like

I am not sure this will work, I will give it a try: