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);
}
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 ?
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.
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
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?
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.
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
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.
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.