Wenn du Bewegungen erkennen möchtest, um daraufhin z.B. das Licht einzuschalten, ist der Bewegungsmelder HC-SR501 (auch PIR für „passiver Infrarot-Sensor“ genannt) eine oft ausreichend gute und günstige Wahl.
In erster Linie reagiert dieser Sensor auf Wärme in Form von Infrarotstrahlen. Damit nicht die Heizung das Licht einschaltet, reagiert der Bewegungsmelder nur auf warme Objekte, die sich bewegen. Hierfür ist eine sogenannte Fresnel-Linse (die „Kuppel“) über dem eigentlichen Sensor verbaut.
Den Bewegungsmelder anschließen
Der Anschluss des HC-SR501 ist ganz simpel. Gerade einmal drei Pins benötigst du hierfür: Plus (VCC), Minus (GND) und OUT. Letzteren schließt du an einen Digitalpin deines Arduinos an. Sobald dein Sensor eine Bewegung erkennt, sendet er ein HIGH an den Arduino, das du in deinem Sketch auslesen kannst.
An der Unterseite des Bewegungsmelders findest du zwei Potentiometer. Drehe den Sensor um, sodass die Platine nach oben zeigt. Am linken Potentiometer kannst du die Empfindlichkeit des Sensors einstellen; am rechten die Länge, des Signals, das an deinen Arduino gesendet wird. Stellst du hier eine lange Zeitspanne ein, hält der Bewegungsmelder den „Alarm“ damit in dieser Zeit kann keine weitere Bewegung erkannt werden kann. Das ist praktisch, wenn du nicht möchtest, dass ein und dieselbe Bewegung mehrere Signale sendet.
Der passende Sketch
Für diesen Sketch haben wir eine LED an den Digitalpin 9 angeschlossen. Diese leuchtet auf, sobald eine Bewegung erkannt wurde. Der Bewegungsmelder hängt am Digitalpin 7.
Neben den Einstellungen und Angaben für die verwendeten Pins benötigst du nur eine Variable und eine IF-Abfrage:
status = digitalRead(sensor);
if (status == HIGH){
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
Den Wert, den der Bewegungsmelder ausgibt, speicherst du in die Variable status – liegt keine Bewegung vor, ist dieser Wert 0. Wenn sich etwas vorm Sensor bewegt entsprechend 1.
Anschließend lässt du die LED bei einer Bewegung aufleuchten. Wenn dein Bewegungsmelder wieder auf Null umschaltet – weil er keine Bewegung erkennt – geht sie wieder aus. Das war’s.
Hier der vollständige Sketch:
int led = 9;
int sensor = 7;
int status = 0;
void setup(){
pinMode(led, OUTPUT);
pinMode(sensor, INPUT);
}
void loop(){
status = digitalRead(sensor);
if (status == HIGH){
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
Wie geht es weiter?
Jetzt wo du weißt, wie du den Bewegungsmelder HC-SR501 richtig anschließt und verwendest, kannst du dich an ein richtiges Projekt machen. Wie wäre es z.B. mit dem Klassiker – ein Licht, das angeht, sobald du einen Raum betrittst?
Diese Art von Bewegungsmelder ist übrigens nicht die einzige: In diesem Projekt verwendest du einen Mikrowellen-Radar, um herauszufinden, ob du einen Regenschirm benötigst.