Ein passiver Infrarotsensor (PIR) am Raspberry
Dieser Sensor stammt ebenfalls aus dem Starterkit. Er hat die Bezeichnung DYP-ME003. Nach den Fotos zu urteilen ist er baugleich zum HC-SR501.
Diesen Sensoren begegnet man sehr häufig, denn die meisten Bewegungsmelder für Aussenleuchten sind nach diesem Prinzip aufgebaut. Aber auch in den Gebäuden findet man sie immer öfter, zum Beispiel um Energie für die Beleuchtung zu sparen.
Anschluss des PIR an den Pi
Drei blanke Anschlusspins ohne Bezeichnung, Ohne Google wäre da nicht viel zu machen...
Wenn man mal die Typenbezeichnung herausgefunden hat, liefert Google sowohl Links zu einem oberflächlichen Datenblatt als auch Youtube-Videos mit Beispielschaltungen. Alle Videos setzen aber auf Arduinos oder sogar diskrete Elektronik.
Das spezielle an diesem Sensor: er braucht mindestens 5V als Betriebsspannung. Das ist zwar noch möglich mit dem Pi, aber ich habe befürchtet dass der Ausgang dann auch 5V liefert. Und das ist eindeutig ungesund für einen Raspberry!
Das Schema des Moduls zeigt, dass es einen Spannungsregler auf dem Print gibt. Dieser Spannungsregler versorgt den Chip auf dem Board mit 3.3V. Der Ausgang kommt direkt von diesem Chip und müsste demgemäss ebenfalls 3.3V liefen.
So ganz habe ich der Sache immer noch nicht getraut, aber sorgfältiges Nachmessen (ohne Pi!) ergab tatsächlich 3.28V bei High-Pegel. Passt also wunderbar.
Verkabelung des Sensors (genau hinsehen, rot ist am 5V Pin!):
Das Shell-Script zur Demonstration
Auch zu diesem Sensor gibt es ein Test-Script. Obwohl es sehr ähnlich aussieht wie das Programm zum Regensensor macht es etwas anderes.
#!/bin/bash # Definition des Pins PIN=4 # Den Pin exportieren wenn er nicht schon exportiert ist if [ ! -d /sys/class/gpio/gpio$PIN ] then echo $PIN > /sys/class/gpio/export fi # Den Pin als Eingang definieren echo "in" > /sys/class/gpio/gpio$PIN/direction # Den Zustand des Eingangs lesen previous=$(cat /sys/class/gpio/gpio$PIN/value) # Endlose Schleife while true do # Den Zustand des Eingangs lesen current=$(cat /sys/class/gpio/gpio$PIN/value) # Ausgeben wenn der Zustand geändert hat if [ $current -ne $previous ] then if [ $current -eq 1 ] then omxplayer /usr/share/scratch/Media/Sounds/Animal/Kitten.wav > /dev/null else omxplayer /usr/share/scratch/Media/Sounds/Effects/Plunge.wav > /dev/null fi fi previous=$current sleep 0.1 done
Und auch dieses Script soll mit sudo gestartet werden. Die Ausgabe ist uninteressant, und deshalb gibt es kein Log der Konsole.
Test des Sensors
Der Sensor funktioniert mehr oder weniger wie erwartet. Ueberrascht hat mich die Wartezeit bis der Sensor wieder anspricht.
Die Beschreibung des Jumpers ist verkehrt. Um ein Retrigger zu bekommen musste er genau umgekehrt eingesteckt werden.
Genaue Tests der Reichweite habe ich nicht gemacht, doch aus mindestens 3 Metern Entfernung hat er geschaltet, und das obwohl er einfach auf dem Tisch lag.