Hallo zusammen,
gestern habe ich bis kurz vor 1 Uhr vor dem Rechner gesessen und habe programmiert. Danach habe ich mich der allabendlichen Prozedur unterzogen, um verdientermaßen doch noch ins Bett zu kommen.
Da irritierte mich, dass sich jemand vor unserer Wohnungstür (2. und oberste Etage in einem Schwarzwald-Holzhaus im selbigen Wald - Nachbar ist ca. 5 mal im Jahr in seiner Wohnung) zu schaffen machte und dann die Treppe abwärts von dannen schlich. Da die Treppe zu unserer Wohnungstür nur von mir und meiner Freundin genutzt wird, sollte sich niemand mit redlichen Absichten um diese Zeit vor unserer Wohnungstür aufhalten. Oder?
Spontan ist heute die Idee entstanden, einen Raspberry Pi mit PIR-Sensor und Kamera-Modul in einem dunklen Holzspalt zu deponieren, der durchs Gemäuer von unseren Wohnung ins Treppenhaus führt. Über den Holzspalt kann die Stromversorgung erfolgen. Kurzum, man sieht von dem Teil nicht viel, weil die Kamera in einem weißen Gehäuse sitzt und der Spalt mit Watte abgedichtet ist. Weiß auf Weiß - Weißer Adler auf weißem Grund, die Nationalflagge der Ostfriesen - man sieht also nichts.
Heute Abend habe ich dann die Komponenten zusammen gesucht:
- Raspberry Pi A+ (original verpackt, unbenutzt)
- Kamera-Modul (Version 1.3)
- drei Jumperkabel Buchse-Buchse
- PIR-Sensor-Modul (vermutlich aus einem Arduino-Set)
- SD-Karte (aus einem aktuellen Projekt entnommen)
Die Kamera habe ich in ein Gehäuse gesteckt und das Kabel in die mit Camera bezeichnete Buchse fixiert. Die Orientierung des Kabels war schnell klar, da nur auf einer Seite des Flexi-Kabels Kontakte sind.
Das PIR-Sensor-Modul habe ich erst mal getestet, da ich diesen Modulen generell nicht über den Weg traue:
- Labornetzteil auf 3,2 V eingestellt
- den mit GND gekennzeichneten Pin des PIR-Sensor-Moduls habe ich mit dem Minus-Anschluss des Labornetzteils verbunden
- den COM-Eingang eines Digital-Multimeters habe ich mit GND des PIR-Sensor-Moduls verbunden
- den mit VCC gekennzeichneten Pin habe ich mit dem Pluspol eines Labornetzteils verbunden
- den mit Out gekennzeichneten Pin habe ich mit dem Spannungseingang eines Digital-Multimeters verbunden (Stellung 20 V=)
Dann habe ich irgendwelche Faxen vor dem Sensor aufgeführt. Bei jeder Bewegung hat das PIR-Sensor-Modul eine Spannung von rund 2,5 V angezeigt. Das sagt mir, dass das PIR-Sensor-Modul auch mit den 3V3 des Raspberry Pi klarkommen wird (OK - ich hätte noch den Strom messen können, aber irgendwas ist ja immer). Und dass das Ausgangssignal sicher vom GPIO erkant werden kann, da dieser bei einem Pegel > 1,3 V HIGH signalisiert.
Auf der Platine des PIR-Sensor-Moduls sind zwei Regler, an denen ich noch spielen musste. Der eine regelt die Zeit zwischen zwei Pegeln. Drei Stellungen habe ich ausprobiert:
- Mittelstellung erzeugt in zyklischen Abständen - auch gänzlich ohne Bewegung - ein Signal = unbrauchbar
- Eine Extremstellung erzeugt ein Dauersignal ohne Bewegung = unbrauchbar
- die andere Extremstellung erzeugt nur ein Signal, wenn auch Bewegung vorhanden ist = Die isses!
Der andere Regler ist für die Empfindlichkeit zuständig. Den habe ich nach kurzem Ausprobieren auch in einer Extremstellung belassen, wodurch jede Bewegung auch in größerer Entfernung erkannt wird. Da soll's sein, denn ich will ja wissen, wer sich da nächtens die Treppe hochschleppt.
Dann habe ich die Schaltung wieder abgebaut und mit dem Raspberry Pi verbunden:
- Danach habe ich GND des Sensors mit einem GND der GPIO-Leiste
- VCC des Sensors mit 3V3 der GPIO-Leiste
- Out des Sensors mit GPIO17
Danach habe ich mich mit der Raspi-Camera beschäftigt. Über
habe ich erstmal die Kamera aktiviert. Danach wollte der RPi A+ einen Reboot. Ich wunderte mich - aber was soll's. Wenige Sekunden später war er wieder da.
Ein Testbild habe ich mit
geschossen. Hat funktioniert.
Dann habe ich mich mit in die Parameter von raspistill eingelesen und habe folgende Parameter für einen ersten brauchbaren Ansatz identifiziert:
Ich denke aber, dass ich da morgen bei Tageslicht und nach Installation an Ort und Stelle noch Anpassungen vornehmen werden. Vielleicht bekommt das Teil auch einen Tages- und Nacht-Parametersatz - oder einen wenn das Treppenhauslicht brennt und wenn es doch dunkle Gestalten nächtens nicht gesehen werden wollen.
Dann ging's - ENDLICH! - ans Programmieren.
Es musste eine Minimal-Lösung werden - maximal 20 Zeilen in Icon sollten es werden. Jedes Bild soll einen Datumszeitstempel im Dateinamen erhalten. Mit folgendem Code startete ich:
link GPIO
$define PIR 17
procedure main()
repeat
{ if GPIO(PIR) = 1 then
{ bild := "sd" || &date[1:5] || &date[6:8] || &date[9:0] || "_" || &clock[1:3] || &clock[4:6] || &clock[7:0] || ".jpg"
system("raspistill -w 800 -h 600 -t 100 -n -o /home/pi/camera/" || bild)
write(bild, " geschossen.")
}
}
delay(100)
end
Alles anzeigen
Die CPU-Auslastung liegt - wenn kein Bild geschossen wird bei 2 bis 6 Prozent (die Entwicklungsumgebung ist noch offen und das Programm aus dieser gestartet). Nicht dass mir jetzt jemand kommt und was von zwingender Interrupt-Nutzung erzählt, dass diese die CPU-Auslastung verringern. Viel ist da ja nicht mehr zu holen.
Ich denke, der Code ist selbsterklärend. Hat dann auch nach Beseitigung von Flüchtigkeitsfehlern funktioniert.
Morgen wird das Ganze am Zielort installiert - und dann bin ich gespannt, wer da nächtens durchs Haus vor fremden Wohnungen herumschleicht.
Bilder und Schalte stelle ich dann morgen Abend hier rein, da ich morgen den ganzen Tag unterwegs sein werde.
Abschließend muss ich sagen, dass es bemerkenswert ist, innerhalb von nicht einmal einer Stunde, ein solches Etwas - Projekt möchte ich's nicht nennen - begonnen und abgeschlossen zu haben.
2012 hätte ich sowas nicht gekonnt und auch nicht gewusst, womit man sowas lösen könnte (Hardware, "Schaltung abfragen", ...) Und dann sowieso nicht zu diesem Preis.
Beste Grüße
Andreas