Hallo liebe Unterstützer,
ich baue gerade für einen Freund eine "Da ist oder war jemand oder etwas auf meinem Grundstück-Alarmanlage".
Eckdaten:
Ich nutze einen Leonardo mit einem 128x64 GLCD zur Anzeige.
Dazu einen DCF77-Empfänger (PIN 3 / Interrupt 0), 3 PIR (die von Adafruit, PIN 0-2, Interrupt 1-3), einen Piezo und ein Relaismodul.
Viel für so ein kleinen Arduino, aber er wird das meistern!
Generelle Funktion:
Das DCF-Modul sorgt für gute Zeit, funktioniert auch.
Die PIR sollen eine Bewegung wahrnehmen, ein Signal über einen Piezo ausgeben und die Auslösung soll dann im Display protokolliert werden.
Zweck:
- Wenn jemand auf dem Grundstück ist, soll er einfach über ein Signal (Piezo oder externe Klingel via Relais) mitbekommen, dass da Besuch kommt.
- Wenn niemand auf dem Grundstück ist möchte er hinterher wissen, ob jemand da war und wenn ja wo (PIR an verschiedenen Stellen des Grundstücks, mehrere Zugänge).
Dazu wird das Display (Ideenfindung noch nicht final abgeschlossen) einfach die Anzahl der Auslösungen pro PIR und die letzte Auslösezeit anzeigen.
Ein Reset setzt leider auch die Zeit zurück, aber eine RTC bekomme ich da nicht noch unter ...
Im Prinzip funktioniert alles bis auf zwei Kleinigkeiten:
- Wenn ich nur einen PIR anschließe (PIN0, Interrupt 2), dann habe ich auf PIN1(Int3) das gleiche Signal, die Interrupt-Routine läufft dann für beide PINs, das gleich gilt für PIN3/Interrupt0 und PIN2(Int1). Muss / sollte ich die PINs irgendwie terminieren? Definition ist
attachInterrupt(2, signalAlertA, RISING);
attachInterrupt(3, signalAlertB, RISING);
attachInterrupt(1, signalAlertC, RISING);
- Nach einer gewissen Laufzeit (mehrere Stunden) fällt die linke Hälfte des Displays aus, wenn ich alle Interrupts laufen lasse. Bei nur einem PIR + DCF läuft das ganze problemlos wochenlang. Könnte also ein Speicherproblem sein!? Aber wo und wie bekomme ich die tatsächliche Speichernutzung mit? Sketchgröße ist bei etwa 20k (Bei einem Limit von 28k).
Über ein paar Denkanstöße wäre ich sehr dankbar.
Danke euch
Dirk