Slim Node as a Mini 2AA Battery PIR Motion Sensor
-
Hi guys,
I am wondering, if it wouldn´t be a good idea to use the PinChangeInt Library to wake the arduino from sleep by pin change interrupts. Wouldn´t this be the most power efficient variant? Or did I understand sth. wrong with the pin change interrupts? Thanks for your help in advance!!
-
I have build a small sensor platform and I am currently running it off of a CR2032 coin cell (small and cheap). I used the same motion sensor as in this thread to build a motion detector. Everything seems to work fine until the voltage drops below ~2.8V, then it starts to trigger constantly. I guess the problem is the low voltage.
Has anyone found a working setup with a low(er) voltage? Or successfully used a boost converter with a pir (creates false positives as well for me, although I will try that later too).Otherwise I would have to use 2xaa (too big) or CR123A (still kinda big and not very cheap) too ;(
-
I have build a small sensor platform and I am currently running it off of a CR2032 coin cell (small and cheap). I used the same motion sensor as in this thread to build a motion detector. Everything seems to work fine until the voltage drops below ~2.8V, then it starts to trigger constantly. I guess the problem is the low voltage.
Has anyone found a working setup with a low(er) voltage? Or successfully used a boost converter with a pir (creates false positives as well for me, although I will try that later too).Otherwise I would have to use 2xaa (too big) or CR123A (still kinda big and not very cheap) too ;(
@LastSamurai Since I tested it ok down to 1.6V with one AA, I have a feeling that the issue could be voltage stability rather than level. Maybe you could try two CR2032 in parallel ?
-
@LastSamurai Since I tested it ok down to 1.6V with one AA, I have a feeling that the issue could be voltage stability rather than level. Maybe you could try two CR2032 in parallel ?
@m26872 Great idea, that might help. I am currently trying out another battery, and if that doesn't work I will try 2 in parallel.
-
@m26872, am I understanding correctly that you did not need to step the voltage up to 5v in order to use this PIR sensor? If that's correct, do you know if the HC-SR505 works the same way? I will probably buy some of these smaller ones, but I have HC-SR505s on hand right now and would want to try it soon.
-
@m26872, am I understanding correctly that you did not need to step the voltage up to 5v in order to use this PIR sensor? If that's correct, do you know if the HC-SR505 works the same way? I will probably buy some of these smaller ones, but I have HC-SR505s on hand right now and would want to try it soon.
@JonnyDev13 This IS the HC-SR505 (5V Mini PIR). With the voltage regulator and diode removed.
Did you mean that you have the larger HC-SR501 ? In that case I don't know. I only remember that you'll need to remove the v-reg and diode in the same way to make it run on 3.3V. And I think @bjornhallberg reported successful results from longterm use of a batterypowered outdoor one.
-
@JonnyDev13 This IS the HC-SR505 (5V Mini PIR). With the voltage regulator and diode removed.
Did you mean that you have the larger HC-SR501 ? In that case I don't know. I only remember that you'll need to remove the v-reg and diode in the same way to make it run on 3.3V. And I think @bjornhallberg reported successful results from longterm use of a batterypowered outdoor one.
@m26872, yes you are correct. I have the larger ones. I must have copied and pasted the wrong part number. Thanks for the quick response. That's helpful information!
-
Hello everybody,
I´m struggeling with getting this sensor
to work.
The node registers with the GW, but doesnt submit the tripped reading.
Not even a permanent on or something. Just nothing. So i dont know how to troubleshoot here.
The PIR HC-SR505 is functional. I tested it with a testscript on a UNO.
And the 2AA Slimnode is functional as well. When using the node as a binary switch it works perfectly fine,
Just the combination 2AA Slimnode and HC-SR505 doesnt work.Anybody has an idea ?
Thanks in advance Komaandy
-
Hello everybody,
I´m struggeling with getting this sensor
to work.
The node registers with the GW, but doesnt submit the tripped reading.
Not even a permanent on or something. Just nothing. So i dont know how to troubleshoot here.
The PIR HC-SR505 is functional. I tested it with a testscript on a UNO.
And the 2AA Slimnode is functional as well. When using the node as a binary switch it works perfectly fine,
Just the combination 2AA Slimnode and HC-SR505 doesnt work.Anybody has an idea ?
Thanks in advance Komaandy
@Komaandy how are you powering the circuit?
The pir sensor is very sensitive to power fluctuations and not suited for below 3v. Also for 3v you need to "modify" the sensors power circuit. You should be able to find a lot of information when searching for the sensor. -
@ awi, so i desolderd and bridged the two mentioned components, and with the standard " Motion Detector " sketch it transmits tripped readings now :)
I power the circuit via a UNO ( 3,3Volt) or via 2 AA batterys ( 3,1 Volts -> meassured via multimeter)but when using the given sketch in this thread only battery readings are transmitted...
KR
Komaandy
-
Hello, when running the "Motion Detector sketch from the mysensors-examples" on these nodes with the 1Mhz bootloader with 2aa batteries some nodes freeze after appr. 24h .
Some continue working, i cant find the problem.
Does anybody have a idea what could cause those freezes ?
Thanks in advance -
Hello, when running the "Motion Detector sketch from the mysensors-examples" on these nodes with the 1Mhz bootloader with 2aa batteries some nodes freeze after appr. 24h .
Some continue working, i cant find the problem.
Does anybody have a idea what could cause those freezes ?
Thanks in advance -
@m26872 Thanks for your answer and thanks for this superb node :) :)
No, i didnt put the additional sleep in , where should I put this ? Im a little confused.../** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * REVISION HISTORY * Version 1.0 - Henrik Ekblad * * DESCRIPTION * Motion Sensor example using HC-SR501 * http://www.mysensors.org/build/motion * */ // Enable debug prints // #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #include <MySensors.h> unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds) #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!) #define CHILD_ID 1 // Id of the sensor child // Initialize motion message MyMessage msg(CHILD_ID, V_TRIPPED); void setup() { pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Motion Sensor", "1.0"); // Register all sensors to gw (they will be created as child devices) present(CHILD_ID, S_MOTION); } void loop() { // Read digital motion value bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH; Serial.println(tripped); send(msg.set(tripped?"1":"0")); // Send tripped value to gw // Sleep until interrupt comes in on motion sensor. Send update every two minute. sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME); }``` -
@m26872 Thanks for your answer and thanks for this superb node :) :)
No, i didnt put the additional sleep in , where should I put this ? Im a little confused.../** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * REVISION HISTORY * Version 1.0 - Henrik Ekblad * * DESCRIPTION * Motion Sensor example using HC-SR501 * http://www.mysensors.org/build/motion * */ // Enable debug prints // #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #include <MySensors.h> unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds) #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!) #define CHILD_ID 1 // Id of the sensor child // Initialize motion message MyMessage msg(CHILD_ID, V_TRIPPED); void setup() { pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Motion Sensor", "1.0"); // Register all sensors to gw (they will be created as child devices) present(CHILD_ID, S_MOTION); } void loop() { // Read digital motion value bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH; Serial.println(tripped); send(msg.set(tripped?"1":"0")); // Send tripped value to gw // Sleep until interrupt comes in on motion sensor. Send update every two minute. sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME); }```@Komaandy said in Slim Node as a Mini 2AA Battery PIR Motion Sensor:
I meant like this (look in code below), but it's just a wild guess.
/** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * REVISION HISTORY * Version 1.0 - Henrik Ekblad * * DESCRIPTION * Motion Sensor example using HC-SR501 * http://www.mysensors.org/build/motion * */ // Enable debug prints // #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #include <MySensors.h> unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds) #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!) #define CHILD_ID 1 // Id of the sensor child // Initialize motion message MyMessage msg(CHILD_ID, V_TRIPPED); void setup() { pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Motion Sensor", "1.0"); // Register all sensors to gw (they will be created as child devices) present(CHILD_ID, S_MOTION); } void loop() { // Read digital motion value bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH; Serial.println(tripped); send(msg.set(tripped?"1":"0")); // Send tripped value to gw sleep(3000); // Sleep 3s to make sure everything is stable before we start to sleep with interrupts. // Sleep until interrupt comes in on motion sensor. Send update every two minute. sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME); }``` -
@m26872 said in Slim Node as a Mini 2AA Battery PIR Motion Sensor:
Removing the 7133-regulator did not affect anything significantly due to its very low quiescent current (see datasheet, perhaps useful in some other project?)
ok, does that mean one does not have to remove the voltage regulator and the diode? @AWI is saying one must modify the PIR and now I am irritated...
-
@siod
I removed both to make the smaller ( HC-SR505 ) work with ~3Volt and bridged these contacts as shown in the picture

They work perfectly fine for me and are not too sensitive.
Actually they dont even react on my cats, which is nice, because the "bigger" HC-SR501 always did... :) -
And with the "bigger" HC-SR501 all one need to do is obviously to connect the VCC to the pad or pin.
For me at least it is working pretty fine as well. No false positives or anything else negative.
Of course you have to remove the jumper first.
-
@m26872 said in Slim Node as a Mini 2AA Battery PIR Motion Sensor:
Removing the 7133-regulator did not affect anything significantly due to its very low quiescent current (see datasheet, perhaps useful in some other project?)
ok, does that mean one does not have to remove the voltage regulator and the diode? @AWI is saying one must modify the PIR and now I am irritated...
@siod said in Slim Node as a Mini 2AA Battery PIR Motion Sensor:
@m26872 said in Slim Node as a Mini 2AA Battery PIR Motion Sensor:
Removing the 7133-regulator did not affect anything significantly due to its very low quiescent current (see datasheet, perhaps useful in some other project?)
ok, does that mean one does not have to remove the voltage regulator and the diode? @AWI is saying one must modify the PIR and now I am irritated...
That was only regarding the power consumption. I don't remember the voltage drops but I guess you'll get to it work with 2AA but for a shorter time. Why wont you remove them?
-
ok guys, I tried the mini PIR and the big one, on the mini PIR I removed the regulator and diode just as explained and I uploaded this sketch
/** * EgSlimReed2 * Sketch for Slim Node and HC-SR505 based motion sensor. * Inspired by: * - MySensors motion sensor example: http://www.mysensors.org/build/motion * - AWI's CR123A based Slim Node motion sensor: http://forum.mysensors.org/topic/2478/slim-cr123a-2aa-battery-node * * Created by m26872 * Documentation: http://forum.mysensors.org... * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * REVISION HISTORY * Version 1.0 - Test to if node can operate in some way dealing with the Pir extreme sensitivity to noise on Vcc. * Version 2.0 - First "production node". "Inactivity day counter" introduced. * * DESCRIPTION * This sketch will only send trips as "1" to the controller. It's up to the controller to deal with the info. * The motion node will not notify controller when resets back to low state and is ready for a new trip. In reality * this is ~10s. And EVEN IF motion is detected continuously, there will be no new trip until motion has stopped for ~10s. * The HC-SR505 is very noise sensitive and will trigger spuriously for almost any activity * on Vcc (test thoroughly). To run the HC-505 at low voltages (tested flawlessly down to 1.6V), * the 7133-reg and diode are removed (and possibly increase the sensitivity even further). * Solution is to deal with it by interrupt type, check which source, block by sleep time etc. * * HC-505 output connects to MOTION_INPUT_PIN (here D3) without any supporting component. Input pull-up disabled. * Every 24 hrs without trip, increments a counter and after "BATTERY_REPORT_DAY" counts a battery report will be sent as a heartbeat signal. * Else a battery report will be sent after every "BATTERY_REPORT_BY_IRT_CYCLE" motion trips. * */ //Sensor 21, erster PIR Sensor #define MY_RADIO_NRF24 //MySensor Library auf NRF24 Funkmodul einstellen, muss vor MySensor.h Initialisierung geschehen // Define Node ID #define MY_NODE_ID 21 #define MY_PARENT_NODE_ID 0 //Repeater Node 1! #define MY_PARENT_NODE_IS_STATIC //Batterysensor int BATTERY_SENSE_PIN = A0; // select the input pin for the battery sense point int oldBatteryPcnt = 0; #define CHILD_ID_BATT 7 #include <MySensors.h> #include <SPI.h> #include <Vcc.h> unsigned long SLEEP_TIME = 86400000; // Sleep time between reports (in milliseconds) #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!) #define CHILD_ID 1 // Id of the sensor child //Battery MyMessage msgbatt(CHILD_ID_BATT,V_VOLTAGE); // Initialize motion message MyMessage msg(CHILD_ID, V_TRIPPED); void setup() { pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input //Batterysensor // use the 1.1 V internal reference #if defined(__AVR_ATmega2560__) analogReference(INTERNAL1V1); #else analogReference(INTERNAL); #endif } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Motion Sensor Keller_1", "1.0"); // Register all sensors to gw (they will be created as child devices) present(CHILD_ID, S_MOTION); //Battery present(CHILD_ID_BATT,V_VOLTAGE); } void loop() { //Batterysensor // get the battery Voltage int sensorValue = analogRead(BATTERY_SENSE_PIN); #ifdef DEBUG #endif // 1M, 470K divider across battery and using internal ADC ref of 1.1V // Sense point is bypassed with 0.1 uF cap to reduce noise at that point // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts // 3.44/1023 = Volts per bit = 0.003363075 //float batteryV = sensorValue * 0.003363075; int batteryPcnt = sensorValue / 10; sendBatteryLevel(batteryPcnt); wait(500); send(msgbatt.set(batteryPcnt)); wait(500); // Read digital motion value bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH; Serial.println(tripped); send(msg.set(tripped?"1":"0")); // Send tripped value to gw sleep(3000); // Sleep 3s to make sure everything is stable before we start to sleep with interrupts. // Sleep until interrupt comes in on motion sensor. Send update every 24 hours. sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME); }But with any PIR I get continuos trip messages every 3 seconds. Any idea?