RAK12500 - powerOffWithInterrupt?


As you might have noticed, i’m playing around with the RAK WisBlock modules. Loving it so far! Really impressed by the RAK12500 and i’ve got a nice solution going that tries to send a GPS location every 5 minutes.

This works fine, and i’ve even used the semaphores to do deep sleep on the RAK4631. Currently i’m using the powerOff() method on the GNSS library to sleep the RAK12500. Works well, but i’d like to try the powerOfWithInterrupt(). For that, i need to select a pin.

On the datasheet page of the RAK12500 it states that

:memo: NOTE:
Only the UART and I2C related pin, 1PPS pin, RESET pin, VDD, and GND are connected to this module

Does this mean that i’d be unable to implement this function as i can’t indicate to the zoe-m8q which pin to monitor?

Hi @cyclops ,

I am not sure what sequence you need but you can use UARTRX as well for the powerOfWithInterrupt().

RAK12500 also have one IO denoted as IO6 in the pin diagram. You might be able to use it as well but you need to doublecheck the schematic.

Thanks @carlrowan

I was thinking the UART port or the IO6 might make sense as i did check the datasheet. Spotted the IO6 as well, but then the note didn’t state it. I got confused.

The other problem i have is that i don’t have a low voltage measuring device, so i can’t really check if it’s really in low power mode. The library used states that you can wake the ublox up with a getlatitude or so, but it also states that you shouldn’t.

Based on your feedback, a simple:
g_GNSS.powerOfWithInterrupt(SLEEPTIME, WB_IO6); in combination with:

  digitalWrite(WB_IO6, LOW);
  digitalWrite(WB_IO6, HIGH);
  digitalWrite(WB_IO6, LOW);

should work.
Is that correct?

I haven’t tried that myself but I think you are mixing two things.

The pin parameter options on powerOfWithInterrupt is an input that will wakeup the module (you can OR them btw). The IO configured as WAKE_UP on the other hand is an output pin that can be used as trigger. On Sparkfun example code, it is used to wake up. You can check the comments for better explanation.

Hi @carlrowan

Appreciate the help you’re providing.

But, you’ve now confused me a bit more :slight_smile:
Which two things am i mixing up?

Am i correct that the WB_IO6 and the IO6 on the RAK12500 diagram are the same? If not, then how do i address the IO6 that is on the RAK12500 diagram?
And - am i correct that i can LOW/HIGH/LOW that IO6 pin to wake it up?

This is what I mean.

In my understanding you make them both WB_IO6?

The interrupt sources possible are on the top of the example code.


Yes, it was my idea to make WAKEUP_PIN point to WB_IO6 as i thought that would represent IO6 on the diagram.

If the list of possible GNSS interrupt pins is limited to the list provided, then UARTRX is what i’ll try.

Hi, did you solve this issue? I’m getting troubles trying to powerOff the RAK12500.
These are the results of my tests:

  • poweroff function works fine
  • Trying to poweroff the module by turning off WB_IO2 it works but I don’t reach the power saving I expected, I don’t know what is the exact difference between this and the poweroff function.
  • When trying to use the function powerOffWithInterrupt() I’m not able to turn on the module, I’ve tried with WB_IO6, WB_IO2.

How could I declare and try by the UARTRX pin?