RN2483 won't sleep


(Struck) #1

I have made a node with adafruit pro trinklet 3.3v MCU and an RN2483 module. It is working great. but the module will not sleep
The current consumption is about 20mA for the RN2483, which means it is not sleeping, it should be uA
The firmware version on it is 1.0.3.

For the connection between MCU and RN2483 i used this guide.

I have measured the current with a oscilloscope.
Am i missing something?

#include <SoftwareSerial.h>
#include <TheThingsNetwork.h>
#include <LowPower.h>

#define OTAARetries 4
#define loraSerial SoftSerial
#define debugSerial Serial
// Replace REPLACE_ME with TTN_FP_EU868 or TTN_FP_US915
#define freqPlan TTN_FP_EU868
#define SpreadingFactor 7
SoftwareSerial SoftSerial(10, 11); // RX, TX
TheThingsNetwork ttn(loraSerial, debugSerial, freqPlan, SpreadingFactor);

void setup() {
  // put your setup code here, to run once:
  loraSerial.begin(57600);
  debugSerial.begin(9600);
  //Restart the RN2483 module
  pinMode(12, OUTPUT);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(12, HIGH);
  ttn.showStatus();
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(500);
  ttn.wake();     // wake the RN module from sleep, if it is still sleeping
  delay(1000);
  ttn.sleep(2000);    //sleep RN module in [ms]
  delay(100);
  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}

#2

hmmmmmmmmmm … and what is it actually doing ? (nothing I think)
that’s not the complete code probably … where’s the sensor part… and what sensor ?


(Struck) #3

This code is only to test the sleep function, and is of course not the complete code.

I have not mentioned any sensor, what do you mean?


#4

correct… I mentioned it because I see

#include <OneWire.h>


(Struck) #5

Ahh yea sure. it should not have been included for this sketch.


(Jac Kersing) #6

Wouldn’t be easier to measure if you put the module to sleep for a longer time? You are now just sleeping for 2 seconds according to the unit mentioned in the comment.

Also, is there a pull up on the RN2483 reset line? Otherwise putting the controller to sleep might reset the RN module.


#7

trinket… isn’t that a fancy Attiny 85 ? I wonder if you have any memory free ?

in void setup()

loraSerial.begin(19200); // lower the speed
…
// Reset is required for autobaud RN2483 into 19200 bps from the
// default 57600 bps
ttn.reset();
ttn.showStatus();

you can have a peek at this code I used with 328p + rn2483
only difference is that that when the rn wakes up it wakes up the 328p… so sleeptimes are dicided by the rn


(Struck) #8

I have tried for longer, but no change.

Actualy no there is no resistor on that, should there be? which value would be good? 10k or something?

I am using the Pro trinklet, which uses the Atmega328p, there should be enough memory for this application.


(Struck) #9

Ahh i didn’t know that the RN2483 could be used to wake the arduino from sleep. That is smart. :slight_smile:

So you want me to try a lower baudrate?


(Struck) #10

I have tried with a 10k resistor from reset to VDD, but does not seem to do anything.

I have also measured the sleep current of the arduino, whic is 2.8uA at 3.2V supply, directly from the batteries, without regulator or power diode. and in idle mode (delay) it is about 4.8mA which seem correct,

Futher more i have tried to only send the sleep command without putting the arduino to sleep like this.

void loop() {
    ttn.wake();     // wake the RN module from sleep, if it is still sleeping
    delay(5000);
    ttn.sleep(5000);    //sleep RN module in [ms]
    delay(5000);
 }

This only seem to lower the current from 27.6 to 25.4mA
Also if i try to reset the module in the loop, with a large delay in between, the current drops to 5.6mA

void loop() {
  ttn.wake();     // wake the RN module from sleep, if it is still sleeping
  delay(5000);
  digitalWrite(12, LOW);
  delay(5000);
  digitalWrite(12, HIGH);
  ttn.sleep(5000);    //sleep RN module in [ms]
  delay(5000);
}

Anyone have any ideas?, How do TTN.sleep function work?


#11

do you have communication between your RN2483 and processor ?

because with softserial @57600 thats not possible


(Struck) #12

Yes the messages gets received in the TTN consile. so i guess it works.
How can i make the RN2483 run at a different baud rate? to test it out


#13

good luck


(Struck) #14

Have now tried a lower baud rate of 19200
with this code

#include <SoftwareSerial.h>
#include <TheThingsNetwork.h>
#include <OneWire.h>
#include <LowPower.h>

const char *appEui = "XXXXXXXXXXXXXXX";
const char *appKey = "XXXXXXXXXXXXXXXXXXXXXX";
#define loraSerial SoftSerial
#define debugSerial Serial
// Replace REPLACE_ME with TTN_FP_EU868 or TTN_FP_US915
#define freqPlan TTN_FP_EU868
#define SpreadingFactor 7
SoftwareSerial SoftSerial(10, 11); // RX, TX
TheThingsNetwork ttn(loraSerial, debugSerial, freqPlan, SpreadingFactor);

void setup() {
  loraSerial.begin(19200);
  debugSerial.begin(9600);
  debugSerial.println("\n Setup started");
  //Restart the RN2483 module
  pinMode(12, OUTPUT);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(12, HIGH);
  debugSerial.println("Now ttn.reset()");
  ttn.reset();
  debugSerial.println("Now show status");
  ttn.showStatus();
  debugSerial.println("Now Joing network");
  ttn.join(appEui, appKey, 4, 10000);
}

void loop() {
  debugSerial.println("Loop");
  ttn.wake();     // wake the RN module from sleep, if it is still sleeping
  delay(5000);
  ttn.sleep(5000);    //sleep RN module in [ms]
  delay(5000);
}

And the result is the same, only 2mA drop in current when sleeping the RN2483 module.


(Sandgroper) #15

What are you expecting to happen? You may be putting the RN module to sleep but you are not putting the processor to sleep.


(Struck) #16

As i said earlier, the MCuy only pulls 5mA when active. so that is not the problem here.
I Also tried putting the MCu and the rn2483 module to sleep, this result in a 22mA current draw, which is 1000x higher than it should be, and what others are reporting.


(Mike) #17

Perhaps ttn.sleep(5000); isn’t actually doing anything. Can you make it sleep for a long time (say 30 minutes) and then try talking to the RN2483. It clearly shouldn’t reply. If it does then clearly it isn’t asleep :slight_smile:

I am using this library https://github.com/jpmeijers/RN2483-Arduino-Library with the RN2483 and Arduno mini pro and I get 270uA when both (TTN module & Arduino are asleep).


(Sandgroper) #18

Your numbers do not stack up. There is no way the Trinket draws only 5mA without some form of power management. Given the code shown in the previous post, 22mA is reasonable.


(Struck) #19

The datasheet for the 328p say 5.2mA at 5V 8MHZ in active mode, so it seem legit.
My Pro trinklet runs at 3.2V but at 12MHz. I have removed the regulator from the board together with the power led.


(Struck) #20

Thank you, i will try to communicate with it while it should be sleeping, didn’t even think of this!
270uA seems a bit high too does it not?