Digitaler Wachhund

Hallo Leute,

Ich bin der neue hier ;)

Folgendes Szenario, eine Bekannte von mir übernachtet des öfteren in einem Dachzelt. Zu Ihrer Sicherheit bzw Abschreckung von Neugierigen die sich dem Dachzelt nähern, wollte sie sowas in der Art einer Alarmanlage.

Mein Aufbau wäre ein Arduino mit einem Radarsensor in Verbindung mit einem MP3 Modul. Der Alarm soll ausgelöst werden wenn das Radar mindestens 5 oder 10 sec. eine Bewegung registriert. Deaktiviert wird der Alarm wieder über einem Taster.

Der Aufbau der Elektronik ist kein Problem für mich, nur mit dem Code dafür ist nicht so mein Gebiet bzw. Fehlt mir im Moment die Zeit mich da einzulesen. Einen ähnlichen Code hab ich schon entdeckt, nur müsste er so modifiziert werden das der Radarsensor erst nach 5 oder 10 sec auslöst. Anstatt der LED wird an dem Ausgang das MP3 Modul betrieben

Hier der Code:

int Sensor = 2;     // RCWL-0516 Input Pin
int Pbut = 3;       // Push button Input Pin
int LED = 13;       // LED Output Pin


int sensorval = 0;  // RCWL-0516 Sensor Value
int pbval = 0;      // Push button value




void setup() {
 pinMode (Sensor, INPUT);  // RCWL-0516 as input
 pinMode (Pbut, INPUT);    // Push button as input
 pinMode (LED, OUTPUT);    // LED as OUTPUT
 digitalWrite(LED, LOW);   // Turn LED Off
}


void loop(){


 sensorval = digitalRead(Sensor);  // Read Sensor value
 pbval = digitalRead(Pbut);        // Read Push button value
 
 if (sensorval == HIGH) {        
   digitalWrite(LED, HIGH);  // Turn LED On
 }
 
 if (pbval == LOW) {        
   digitalWrite(LED, LOW);  // Turn LED Off
 }
}

MfG

Pascal

Dein Sketch ist fast nicht zu lesen. In einem Mobilgerät überhaupt nicht.
Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Das musst Du näher spezifizieren.

Soll immer 5 Sekunden nach HIGH der Alarm losgehen oder soll ein LOW in den 5 Sekunden den Alarm wieder zurücksetzen?

Gruß Tommy

Hallo,

Willst du bei dem MP3 Modul eventuell auch noch etwas anders machen , Lautstärke einstellen , abschalten

Ich denke ein gängiges Modul kannst du nicht mit nur einen Ausgang ansteuern

Schau dir die Beispiele zum MP 3 Modul an und oder lese die Doku dazu Heinz

Was deine Verzögerung von 5-10 sek. betrifft, brauchst du da eine Abfrage die immer in dieser Zeit prüft, ob der Sensor noch aktiv ist. Das kannst du mit der Funktion millis() erledigen.

Sieh dir dazu die Funktion "BlinkWithoutDelay()" in den Beispielen der IDE an.

Also der Alarm soll ausgelöst werden wenn der Radarsensor mind. 5 bzw 10 sek. eine Bewegung erkennt. Deaktiviert wird das Ganze wieder über einen Taster. Danach soll das ganze wieder von vorne beginnen. Das MP3 Modul funktioniert sobald 5V anliegen und startet mit der zuletzt gespeicherten Lautstärke. Der Code ist auch soweit lauffähig, mir fehlt nur die Modifikation mit den 5 ...10 Sek. Das soll halt Fehlalarme verhindern wenn eine Person z.B. nur am Dachzelt vorbei geht.

5...10 Sekunden sind nicht programmierbar. Du musst Dich für einen Wert entscheiden. Da Du nichts anderes machen willst, als diese Einschaltverzögerung ohne Retriggern wäre sogar ein delay dafür gerechtfertigt. Mindestens überlesen, dann also millis().

Disclaimer: Ich setze nur die Vorgaben um. Ich würde es so nicht realisieren.

Gruß Tommy

Siehe mein Post #4.

Tommy56: Da Du nichts anderes machen willst, als diese Einschaltverzögerung ohne Retriggern wäre sogar ein delay dafür gerechtfertigt.

Tommy, das wird ohne "Retriggern" nicht sicher funktionieren. Er will ja prüfen, ob eine Person so lange sich vor dem Zelt aufhält und erst danach Alarm auslösen.

Hast Recht. Ich hatte es auch schon gestrichen.

Gruß Tommy

Hi

Rückschlag: Der Sensor guckt nicht nur in eine Richtung - Der guckt auch (durch die Platine) in die Gegen-Richtung. Sobald sich Deine Bekannte bewegt - geht das Theater los. Auch guckt der Sensor durch Wände - wehendes Laub wird auch recht zuverlässig erkannt - Vögel, Die den Sensor kreuzen machen Ähnliches. In meinem Windfang teilen sich ein Radar- und ein PIR-Sensor die Arbeit - zum Auslösen müssen Beide angesprochen haben, zur Abschalt-Verzögerung reicht Einer (... müsste zumindest so sein ...). Allerdings hatte ich mehr Probleme mit Einschaltungen des PIR, weshalb der Radar-Sensor einen zweiten PIR ersetzte und nicht umgekehrt. Trotzdem ist für den Radar-Sensor nicht an der nächsten Wand Schluss (was hier aber vll. ein Vorteil sein könnte).

Ob man den Sensor zu einer Seite abschirmen kann? Aka Alu-Hut?

MfG

Wenn denn der Sensor die "richtigen" Dinge sieht als Anregung:

const int Sensor = 2;     // RCWL-0516 Input Pin
const int Pbut = 3;       // Push button Input Pin
const int LED = 13;       // LED Output Pin

bool sensorval = 0;  // RCWL-0516 Sensor Value
bool pbval = 0;      // Push button value
byte schritt = 0;

void setup() {
  pinMode (Sensor, INPUT);  // RCWL-0516 as input
  pinMode (Pbut, INPUT);    // Push button as input
  pinMode (LED, OUTPUT);    // LED as OUTPUT
  digitalWrite(LED, LOW);   // Turn LED Off
}

void loop() {
  static uint32_t start = 0;
  sensorval = digitalRead(Sensor);  // Read Sensor value
  pbval = digitalRead(Pbut);        // Read Push button value
  switch (schritt) {
    case 0:
      if (sensorval) {
        start = millis();
        schritt++;
      }
      break;
    case 1:
      if (!sensorval) {
        schritt = 0;
      }
      if (millis() - start >= 5000) {
        digitalWrite(LED, HIGH);  // Turn LED On
        schritt++;
      }
      break;
    case 2:
      if (pbval == LOW) {
        digitalWrite(LED, LOW);  // Turn LED Off
        schritt = 0;
      }
      break;
  }
}

Danke Leute,

Der Code von Agmue hat mit sehr geholfen, funktioniert auch soweit. Jetzt geht es an das Feintuning des Radarsensor, aber das ist schnell erledigt.

MfG

Pascal :)