I am using ready-made APIs in Arduino IDE for RAK3172. I am using api.system.sleep.all() function for sleep mode. But it takes a lot of energy. What should I do for the deepest sleep?
What do you mean with high current and how does your code look like.
I am getting 17uA in sleep mode
I use this code example: https://github.com/beegee-tokyo/RUI3-RAK12047-Air-Quality
In this way, it draws 300 uA of current during sleep. When it wakes up, it draws around 120mA of current. Is there any way it draws less than 17 uA of current? In my project I want it to draw 3~4 uA current in sleep mode. Thank you for your attention.
I had the same issue, couldn’t fix it.
Did you have a look into my implementation?
Using timers or interrupts to wake up the device to do something and the
loop() is only sleeping.
Switch off sensors (or send them into sleep/low power mode) after you have read their values.
That’s how I get the 17uA.
Any info on the equipment you are using for measurements?
I am using the Nordic PPK2 Power Profiler
Power Profiler Kit II
The PPK2 supplies and measures the current while it is connected to the battery input of an RAK3172 Evaluation Board
Running your code I get this on a RAK3172 Evaluation Board. I can see the 5 seconds of api.systemsleep.all() and the 5 seconds of delay().
A few thoughts about your current consumption:
Did you do any setup over AT commands before you flashed your RAk3172?
- If you set LoRaWAN mode and enabled automatic join, the device will not sleep until it can join the LoRaWAN network.
- If you set LoRa P2P mode, make sure the device is not in RX mode, as the device cannot go into deep sleep in that mode. In RX mode the LoRa transceiver is always powered up to be able to receive packets.
Sorry for jumping in but shouldn’t we get the 1.69uA in deep sleep for the RAk3172?
Is there any way to reduce that 17uA?
Many things affect power consumption at uA level, even a simple pull-up resistor can draw some current, I have measured down to ~2uA with the bare module using RAK’s example code, which RAK3172 board are you using exactly? Is it the RAK’s reference board?
If you use the I2C bus, you have Pull-Ups, on the WisBlock Base board you have components that draw current all the time (for example the voltage divider on VBat, used to read the battery voltage), …
Only way to reduce the 17uA is to create a custom PCB and put there only what you real need.
Perfect, yes we are designing our own PCB! We’ll see how it goes. Thanks for the info
@peter3099 if powered by a LDO, remember to choose one with low no load current such as RT9080 from Richtek, traditional AMS1117 are not up to the task.
@chansheunglong thanks for that, that is exactly the one we are using. The RT9080 has really low quiscent current. We also use another one called MCP1812AT-033/OT which has even lower Iq (200nA) but the output current is 300mA, the RT9080 has 600mA which is great
Also, could you post the relevant code here? Thanks!
Yes, the Air Quality repo is based on the older RAk12047 repo. You can use that one.