Trying to build a Door and Sound sensors
-
Hello,
I'm trying to build a door and sound sensors with the same arduino.
But I have some issue.
Code seems fine but when the door is open status is changing every time from 1 to 0 to 1 to 0 ...
But when door is closed it's not happening.Can you help me with this ?
Here is my code: (I've commented the gw.send so gateway is not flood)
// Sound sensor come fome: // From Henry's Bench // http://henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/arduino-sound-detection-sensor-tutorial-and-user-manual/ // Arduino Sound Detection Sensor Module // Door sensor come from: // #include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define ID 100 #define CHILD_ID 101 #define OPEN 1 #define CLOSE 0 #define BUTTON_PIN 3 // Arduino Digital I/O pin for button/reed switch #define SOUND_PIN 5 // Arduino Digital I/O pin for sound sensor MySensor gw; Bounce debouncer = Bounce(); int oldValue=-1; MyMessage msgring(ID, V_TRIPPED); MyMessage msgdoor(CHILD_ID,V_TRIPPED); int soundDetectedVal = HIGH; // This is where we record our Sound Measurement boolean bAlarm = false; unsigned long lastSoundDetectTime; // Record the time that we measured a sound int soundAlarmTime = 500; // Number of milli seconds to keep the sound alarm high void setup () { Serial.begin(115200); gw.begin(); pinMode(SOUND_PIN,INPUT) ; // input from the Sound Detection Module pinMode(BUTTON_PIN,INPUT); debouncer.attach(BUTTON_PIN); debouncer.interval(5); gw.present(ID, S_DOOR); gw.present(CHILD_ID, S_DOOR); } void loop () { soundDetectedVal = digitalRead (SOUND_PIN) ; // read the sound alarm time debouncer.update(); int value = debouncer.read(); if (value != oldValue) { Serial.print("Door value: "); Serial.println(value); //gw.send(msgdoor.set(value==HIGH ? 1 : 0)); oldValue = value; } if (soundDetectedVal == LOW) // If we hear a sound { lastSoundDetectTime = millis(); // record the time of the sound alarm // The following is so you don't scroll on the output screen if (!bAlarm){ Serial.println("LOUD, LOUD"); //gw.send(msgring.set(OPEN)); bAlarm = true; } } else { if( (millis()-lastSoundDetectTime) > soundAlarmTime && bAlarm){ Serial.println("quiet"); //gw.send(msgring.set(CLOSE)); bAlarm = false; } } }Sound and soor sensor are connected to the same ground.
Here is the output:
send: 18-18-0-0 s=255,c=3,t=15,pt=2,l=2,sg=0,st=ok:0 send: 18-18-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,st=ok:1.5.4 send: 18-18-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0 read: 0-0-18 s=255,c=3,t=6,pt=0,l=1,sg=0:M sensor started, id=18, parent=0, distance=1 send: 18-18-0-0 s=100,c=0,t=0,pt=0,l=0,sg=0,st=ok: send: 18-18-0-0 s=101,c=0,t=0,pt=0,l=0,sg=0,st=ok:Door is lock:
Door value: 0Testing sound sensor, working fine:
LOUD, LOUD quiet LOUD, LOUD quietDoor is open it's flapping:
Door value: 1 Door value: 0 Door value: 1 Door value: 0 Door value: 1 Door value: 0 Door value: 1Thank you !
-
Hello,
I'm trying to build a door and sound sensors with the same arduino.
But I have some issue.
Code seems fine but when the door is open status is changing every time from 1 to 0 to 1 to 0 ...
But when door is closed it's not happening.Can you help me with this ?
Here is my code: (I've commented the gw.send so gateway is not flood)
// Sound sensor come fome: // From Henry's Bench // http://henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/arduino-sound-detection-sensor-tutorial-and-user-manual/ // Arduino Sound Detection Sensor Module // Door sensor come from: // #include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define ID 100 #define CHILD_ID 101 #define OPEN 1 #define CLOSE 0 #define BUTTON_PIN 3 // Arduino Digital I/O pin for button/reed switch #define SOUND_PIN 5 // Arduino Digital I/O pin for sound sensor MySensor gw; Bounce debouncer = Bounce(); int oldValue=-1; MyMessage msgring(ID, V_TRIPPED); MyMessage msgdoor(CHILD_ID,V_TRIPPED); int soundDetectedVal = HIGH; // This is where we record our Sound Measurement boolean bAlarm = false; unsigned long lastSoundDetectTime; // Record the time that we measured a sound int soundAlarmTime = 500; // Number of milli seconds to keep the sound alarm high void setup () { Serial.begin(115200); gw.begin(); pinMode(SOUND_PIN,INPUT) ; // input from the Sound Detection Module pinMode(BUTTON_PIN,INPUT); debouncer.attach(BUTTON_PIN); debouncer.interval(5); gw.present(ID, S_DOOR); gw.present(CHILD_ID, S_DOOR); } void loop () { soundDetectedVal = digitalRead (SOUND_PIN) ; // read the sound alarm time debouncer.update(); int value = debouncer.read(); if (value != oldValue) { Serial.print("Door value: "); Serial.println(value); //gw.send(msgdoor.set(value==HIGH ? 1 : 0)); oldValue = value; } if (soundDetectedVal == LOW) // If we hear a sound { lastSoundDetectTime = millis(); // record the time of the sound alarm // The following is so you don't scroll on the output screen if (!bAlarm){ Serial.println("LOUD, LOUD"); //gw.send(msgring.set(OPEN)); bAlarm = true; } } else { if( (millis()-lastSoundDetectTime) > soundAlarmTime && bAlarm){ Serial.println("quiet"); //gw.send(msgring.set(CLOSE)); bAlarm = false; } } }Sound and soor sensor are connected to the same ground.
Here is the output:
send: 18-18-0-0 s=255,c=3,t=15,pt=2,l=2,sg=0,st=ok:0 send: 18-18-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,st=ok:1.5.4 send: 18-18-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0 read: 0-0-18 s=255,c=3,t=6,pt=0,l=1,sg=0:M sensor started, id=18, parent=0, distance=1 send: 18-18-0-0 s=100,c=0,t=0,pt=0,l=0,sg=0,st=ok: send: 18-18-0-0 s=101,c=0,t=0,pt=0,l=0,sg=0,st=ok:Door is lock:
Door value: 0Testing sound sensor, working fine:
LOUD, LOUD quiet LOUD, LOUD quietDoor is open it's flapping:
Door value: 1 Door value: 0 Door value: 1 Door value: 0 Door value: 1 Door value: 0 Door value: 1Thank you !
@chatainsim 5ms for debouncer might be a bit low. I use 50ms without any problems
Have you added a pullup resistor to the door sensor? If not try changing this in your sketch:
// pinMode(BUTTON_PIN,INPUT); pinMode(BUTTON_PIN,INPUT_PULLUP); debouncer.attach(BUTTON_PIN); -
@chatainsim 5ms for debouncer might be a bit low. I use 50ms without any problems
Have you added a pullup resistor to the door sensor? If not try changing this in your sketch:
// pinMode(BUTTON_PIN,INPUT); pinMode(BUTTON_PIN,INPUT_PULLUP); debouncer.attach(BUTTON_PIN);Thanks @TheoL , I've tried with 10ms but the door sensor doesn't detect the opening.
No, I haven't added a pullup resistor to the door sensor.
I'll try your change. -
@chatainsim 5ms for debouncer might be a bit low. I use 50ms without any problems
Have you added a pullup resistor to the door sensor? If not try changing this in your sketch:
// pinMode(BUTTON_PIN,INPUT); pinMode(BUTTON_PIN,INPUT_PULLUP); debouncer.attach(BUTTON_PIN);Thank you @TheoL !
It's working fine with your change. -
Thank you @TheoL !
It's working fine with your change.@chatainsim Glad I could help.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login