HC-SR501 motion sensor with Arduino
Bewegungen erkennen und ein Warnsignal auslösen
Choose a microcontroller
Pins, schematic, and sketch in the steps change with your selection. It remains saved.
Den Bewegungsmelder kennenlernen
Den Jumper richtig setzen
Verkabeln und programmieren
Pin assignment Arduino UNO
Beim Arduino UNO schreibst du die Pin-Nummer direkt in den Sketch, also 5 und 7 ohne Zusatz.
// Das Wort "Piezo" steht jetzt für den Wert 5.
int Piezo = 5;
// Das Wort "Bewegungsmelder" steht jetzt für den Wert 7.
int Bewegungsmelder = 7;
// 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.
int Bewegungsstatus = 0;
// Hier beginnt das Setup.
void setup()
{
// Der Pin mit dem Lautsprecher (Pin 5) ist jetzt ein Ausgang.
pinMode(Piezo, OUTPUT);
// Der Pin mit dem Bewegungsmelder (Pin 7) ist jetzt ein Eingang.
pinMode(Bewegungsmelder, INPUT);
}
// Der loop-Teil beginnt
void loop()
{
// Hier wird Pin 7 ausgelesen. Das Ergebnis wird in der Variablen "Bewegungsstatus"
// mit dem Wert "HIGH" für 5 Volt oder "LOW" für 0 Volt gespeichert.
Bewegungsstatus = digitalRead(Bewegungsmelder);
// Wenn eine Bewegung erkannt wird (das Signal ist HIGH), soll der Lautsprecher piepsen.
if (Bewegungsstatus == HIGH)
{
digitalWrite(Piezo, HIGH);
delay(5000); // ... und zwar für 5 Sekunden.
digitalWrite(Piezo, LOW); // ... danach wird er ausgeschaltet.
}
// ansonsten, wenn das erkannte Signal LOW ist ...
else
{
// ... soll der Lautsprecher aus sein.
digitalWrite(Piezo, LOW);
}
}
// Mit dieser letzten Klammer wird der loop-Teil geschlossen.Download: programmcode-arduino-uno.ino
Board in the Arduino IDEArduino Uno
Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.
Pin assignment Wemos D1 Mini
Den Pin-Nummern muss das D vorangestellt werden. Du schreibst also D6 und D7 in den Sketch, nicht 6 und 7.
// Das Wort "Piezo" steht jetzt für den Wert D3.
int Piezo = D3;
// Das Wort "Bewegungsmelder" steht jetzt für den Wert D1.
int Bewegungsmelder = D1;
// 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.
int Bewegungsstatus = 0;
// Hier beginnt das Setup.
void setup()
{
// Der Pin mit dem Lautsprecher (Pin D3) ist jetzt ein Ausgang.
pinMode(Piezo, OUTPUT);
// Der Pin mit dem Bewegungsmelder (Pin D1) ist jetzt ein Eingang.
pinMode(Bewegungsmelder, INPUT);
}
// Der loop-Teil beginnt
void loop()
{
// Hier wird Pin D1 ausgelesen. Das Ergebnis wird in der Variablen "Bewegungsstatus"
// mit dem Wert "HIGH" für 5 Volt oder "LOW" für 0 Volt gespeichert.
Bewegungsstatus = digitalRead(Bewegungsmelder);
// Wenn eine Bewegung erkannt wird (das Signal ist HIGH), soll der Lautsprecher piepsen.
if (Bewegungsstatus == HIGH)
{
digitalWrite(Piezo, HIGH);
delay(5000); // ... und zwar für 5 Sekunden.
digitalWrite(Piezo, LOW); // ... danach wird er ausgeschaltet.
}
// ansonsten, wenn das erkannte Signal LOW ist ...
else
{
// ... soll der Lautsprecher aus sein.
digitalWrite(Piezo, LOW);
}
}
// Mit dieser letzten Klammer wird der loop-Teil geschlossen.Download: programmcode-wemos-d1-mini.ino
Board in the Arduino IDELOLIN(WEMOS) D1 R2 & mini
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Pin assignment ESP32-Wroom
Beim ESP32 schreibst du die GPIO-Nummer direkt in den Sketch, also 26 und 27 ohne D davor.
// Das Wort "Piezo" steht jetzt für den Wert 22.
int Piezo = 22;
// Das Wort "Bewegungsmelder" steht jetzt für den Wert 23.
int Bewegungsmelder = 23;
// 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.
int Bewegungsstatus = 0;
// Hier beginnt das Setup.
void setup()
{
// Der Pin mit dem Lautsprecher (Pin 22) ist jetzt ein Ausgang.
pinMode(Piezo, OUTPUT);
// Der Pin mit dem Bewegungsmelder (Pin 23) ist jetzt ein Eingang.
// INPUT_PULLDOWN: der interne Widerstand wird auf LOW gezogen
pinMode(Bewegungsmelder, INPUT_PULLDOWN);
}
// Der loop-Teil beginnt
void loop()
{
// Hier wird Pin 23 ausgelesen. Das Ergebnis wird in der Variablen "Bewegungsstatus"
// mit dem Wert "HIGH" für 5 Volt oder "LOW" für 0 Volt gespeichert.
Bewegungsstatus = digitalRead(Bewegungsmelder);
// Wenn eine Bewegung erkannt wird (das Signal ist HIGH), soll der Lautsprecher piepsen.
if (Bewegungsstatus == HIGH)
{
digitalWrite(Piezo, HIGH);
delay(5000); // ... und zwar für 5 Sekunden.
digitalWrite(Piezo, LOW); // ... danach wird er ausgeschaltet.
}
// ansonsten, wenn das erkannte Signal LOW ist ...
else
{
// ... soll der Lautsprecher aus sein.
digitalWrite(Piezo, LOW);
}
}
// Mit dieser letzten Klammer wird der loop-Teil geschlossen.Download: programmcode-esp32-wroom.ino
Board in the Arduino IDEESP32 Dev Module
Dafür muss die ESP32-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Pin assignment NodeMCU
Auch beim NodeMCU steht vor der Pin-Nummer ein D. D1 entspricht GPIO 5, D2 entspricht GPIO 4.
// Das Wort "Piezo" steht jetzt für den Wert D1.
int Piezo = D1;
// Das Wort "Bewegungsmelder" steht jetzt für den Wert D2.
int Bewegungsmelder = D2;
// 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.
int Bewegungsstatus = 0;
// Hier beginnt das Setup.
void setup()
{
// Der Pin mit dem Lautsprecher (Pin D1) ist jetzt ein Ausgang.
pinMode(Piezo, OUTPUT);
// Der Pin mit dem Bewegungsmelder (Pin D2) ist jetzt ein Eingang.
pinMode(Bewegungsmelder, INPUT);
}
// Der loop-Teil beginnt
void loop()
{
// Hier wird Pin D2 ausgelesen. Das Ergebnis wird in der Variablen "Bewegungsstatus"
// mit dem Wert "HIGH" für 5 Volt oder "LOW" für 0 Volt gespeichert.
Bewegungsstatus = digitalRead(Bewegungsmelder);
// Wenn eine Bewegung erkannt wird (das Signal ist HIGH), soll der Lautsprecher piepsen.
if (Bewegungsstatus == HIGH)
{
digitalWrite(Piezo, HIGH);
delay(5000); // ... und zwar für 5 Sekunden.
digitalWrite(Piezo, LOW); // ... danach wird er ausgeschaltet.
}
// ansonsten, wenn das erkannte Signal LOW ist ...
else
{
// ... soll der Lautsprecher aus sein.
digitalWrite(Piezo, LOW);
}
}
// Mit dieser letzten Klammer wird der loop-Teil geschlossen.Download: programmcode-nodemcu.ino
Board in the Arduino IDENodeMCU 1.0 (ESP-12E Module)
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.