Nr. 07 – Bewegungsmelder HC-SR501 (NodeMCU)

Inhaltsverzeichnis

Für dieses Projekt benötigst du

Aufgabenstellung: Ein Piezo-Lautsprecher soll piepen, sobald eine Bewegung registriert wird.​

Hintergrundinformation zu dem Bewegungsmelder

Der Bewegungsmelder HC-SR501, auch PIR Sensor genannt, ist sehr einfach konstruiert. Sobald er eine Bewegung detektiert, gibt er auf einem Pin eine Spannung von 5 Volt aus. Diese muss nur ausgelesen und vom Mikrocontroller verarbeitet werden. Die Dauer des Ausgangssignals (linker Regler) und die Sensibilität (rechter Regler) kann über Drehregler eingestellt werden (Bild rechts).

1) Jumper ist wie auf dem Bild ganz außen: Das Ausgangssignal wird, nachdem eine Bewegung detektiert wurde, für eine gewisse Zeit aufrechterhalten und danach auf jeden Fall wieder deaktiviert, auch wenn im Aktionsbereich des Bewegungsmelders noch eine Bewegung detektiert werden könnte. Nach einer gewissen Zeit wird das Ausgangssignal erneut erzeugt.

2) Der Jumper ist leicht nach innen versetzt. Das Ausgangssignal bleibt pausenlos aktiv, solange vom Bewegungsmelder eine Bewegung detektiert wird.

Die Kunststofflinse ist nur leicht gesteckt. Wenn man sie abhebt, kann man den Infrarotdetektor erkennen und man sieht anhand der Beschriftung unter der Linse, wie der Sensor verkabelt werden muss: GND (–), OUT (Ausgang des Signals), VCC (+).

Auf dem linken Bild sieht man am oberen Rand die Bezeichnungen der Kontakte.


Hinweis: Die neuste Version des Bewegungsmelder verzichtet auf die Jumperbrücke. Der Sensor kann über die Potentiometer direkt kalibriert werden.

Der Aufbau

Der Sketch

int piezo=D5; //Das Wort „piezo“ steht jetzt für den Wert 5.
int bewegung=D7; //Das Wort „bewegung“ steht jetzt für den Wert 7.
int bewegungsstatus=0; //Das Wort „bewegungsstatus“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob eine Bewegung erkannt wird oder nicht.

void setup() //Hier beginnt das Setup.
{
pinMode(piezo, OUTPUT); //Der Pin mit dem Piezo (Pin 5) ist jetzt ein Ausgang.
pinMode(bewegung, INPUT); //Der Pin mit dem Bewegungsmelder (Pin 7) ist jetzt ein Eingang.
}

void loop() //Der Loop-Teil beginnt
{ //Mit dieser Klammer wird der Loop-Teil geöffnet.
bewegungsstatus=digitalRead(bewegung); //Hier wird der Pin D7 ausgelesen. Das Ergebnis wird unter der Variablen „bewegungsstatus“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert.
if (bewegungsstatus == HIGH) //Verarbeitung: Wenn eine Bewegung detektiert wird (Das Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
digitalWrite(piezo, HIGH); //dann soll der Piezo piepsen.
delay(5000); //...und zwar für für 5 Sekunden.
digitalWrite(piezo, LOW); //...danach soll er leise sein.
} //Programmabschnitt des IF-Befehls schließen.
else //ansonsten...
{ //Programmabschnitt des else-Befehls öffnen.
digitalWrite(piezo, LOW); //...soll der Piezo-Lautsprecher aus sein.
} //Programmabschnitt des else-Befehls schließen.
} //Mit dieser letzten Klammer wird der Loop-Teil geschlossen.

Zusatz: Gehäuse für die Bewegungsmelder zum Selberdrucken

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 2.000 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE