Hi, just wanna give my contribution to the community.
Following is the serial gateway code with support of auto ID, which is still missing in the latest of MySensor (1.4) library (CMIIW).
links : bitbucket
Hi, just wanna give my contribution to the community.
Following is the serial gateway code with support of auto ID, which is still missing in the latest of MySensor (1.4) library (CMIIW).
links : bitbucket
@Fredrik-Carlsson info you havent got one, please check my development git
@Tibus my suggestion is that try other nrf radio.
Right now I can low as 10uA while sleeping
@Tibus do you have other nrf to try? I'm affraid you're using fake nrf.
30% of my nrf (out of 10), are fake...
one more thing, sleep method in above post dont turn off nrf radio while sleep.
you can try gw.sleep() if you want turn off nrf radio while sleep (MyGateway gw)
@iask I haven't upload my latest door sketch to my node yet. But if I'm using above sketch, idle 4uA and around 18mA while transfer.
Do you have any issues like me before?
@Fredrik-Carlsson please try it, please notice me if you find any bugs.
I'm in the middle of pull request to @Dheeraj
@Fredrik-Carlsson info you havent got one, please check my development git
@mainali have you finished the sketch? do you mind to share?
@mainali I think @ferpando solution is quite nice. He add RF switch to existing button. @ferpando could we track physical switch state using this?
@AWI yes, it can communicate with the gateway normally.
Following is my test result
/**
*/
#include <SPI.h>
#include <MySensor.h>
#include <avr/sleep.h>
//#include <avr/wdt.h>
MySensor gw;
// watchdog interrupt
//ISR (WDT_vect) { wdt_disable(); /* disable watchdog*/ } // end of WDT_vect
void setup()
{
// pinMode(7,OUTPUT);
// digitalWrite(7, HIGH);
// gw.begin();
Serial.begin(115200);
Serial.print("Setup");
}
void loop()
{
// gw.powerUp();
//digitalWrite(7, HIGH);
// gw.sendBatteryLevel(0);
Serial.print("Loop");
Serial.flush();
// gw.powerDown();
//gw.sleep(30*1000);
sleep();
// digitalWrite(7, LOW);
// sleep();
}
void sleep(){
// disable ADC
ADCSRA = 0;
// clear various "reset" flags
MCUSR = 0;
// allow changes, disable reset
WDTCSR = bit (WDCE) | bit (WDE);
// set interrupt mode and an interval
WDTCSR = bit (WDIE) | bit (WDP3) | bit (WDP0); // set WDIE, and 1 second delay
wdt_reset(); // pat the dog
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
noInterrupts (); // timed sequence follows
sleep_enable();
// turn off brown-out enable in software
MCUCR = bit (BODS) | bit (BODSE);
MCUCR = bit (BODS);
interrupts (); // guarantees next instruction executed
sleep_cpu ();
// cancel sleep as a precaution
sleep_disable();
}
With this code I've got
Another test
/**
*/
#include <SPI.h>
#include <MySensor.h>
#include <avr/sleep.h>
//#include <avr/wdt.h>
MySensor gw;
// watchdog interrupt
//ISR (WDT_vect) { wdt_disable(); /* disable watchdog*/ } // end of WDT_vect
void setup()
{
// pinMode(7,OUTPUT);
// digitalWrite(7, HIGH);
gw.begin();
Serial.begin(115200);
Serial.print("Setup");
}
void loop()
{
//gw.powerUp();
//digitalWrite(7, HIGH);
gw.sendBatteryLevel(0);
Serial.print("Loop");
Serial.flush();
//gw.powerDown();
gw.sleep(30*1000);
//sleep();
// digitalWrite(7, LOW);
// sleep();
}
void sleep(){
// disable ADC
ADCSRA = 0;
// clear various "reset" flags
MCUSR = 0;
// allow changes, disable reset
WDTCSR = bit (WDCE) | bit (WDE);
// set interrupt mode and an interval
WDTCSR = bit (WDIE) | bit (WDP3) | bit (WDP0); // set WDIE, and 1 second delay
wdt_reset(); // pat the dog
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
noInterrupts (); // timed sequence follows
sleep_enable();
// turn off brown-out enable in software
MCUCR = bit (BODS) | bit (BODSE);
MCUCR = bit (BODS);
interrupts (); // guarantees next instruction executed
sleep_cpu ();
// cancel sleep as a precaution
sleep_disable();
}
Config is the same with no 3 (above), but the power consumption in sleep I take around 2.37 mA.
Is it maybe I've got bad NRF24L01+ ?
----- Updated
It seems my suspicion, it seems the cause of high power consumption is NRF24L01+ radio. I've checked all of my radio, it appears that 2 of 9 seems fake / bad condition.
Thanks for contribution of @HarryDutch @AWI @Dheeraj @tbowmo @GuyP and others, so now I can play with other level of MySensor.
Thanks