PIR-Bewegungsmelder (HC-SR501): Bewegungserkennung mit Arduino, ESP32 und Pico
Wie funktioniert ein PIR-Bewegungsmelder? Anschluss des HC-SR501, Empfindlichkeit und Zeit einstellen, H/L-Triggermodus, Code für Arduino, ESP32 und Pico, Licht mit Bewegungsmelder und Fehlauslösungen vermeiden.
Ein PIR-Sensor (Passive InfraRed, passiver Infrarotsensor) ist ein günstiger, extrem sparsamer Sensor, der erkennt, wenn sich ein Mensch oder Tier in seinem Sichtfeld bewegt. Treppenlichter, die von selbst angehen, Alarmanlagen und automatische Türklingeln arbeiten meist mit einem PIR. Das Wort "passiv" bedeutet, dass der Sensor selbst nichts aussendet: Er lauscht nur auf die Infrarotstrahlung, die warme Körper in seiner Umgebung abgeben. Das beliebteste Modell in Arduino-Projekten ist der HC-SR501.

Wie funktioniert ein PIR-Sensor?
Jeder Körper, der wärmer als der absolute Nullpunkt ist, gibt Infrarotstrahlung ab; der menschliche Körper strahlt am stärksten bei einer Wellenlänge von 9–10 Mikrometern. Herzstück des Sensors ist ein pyroelektrisches Element, das auf diese Strahlung reagiert und aus zwei Hälften besteht. Bewegt sich nichts, sehen beide Hälften gleich viel Strahlung, ihre Signale heben sich auf und der Ausgang bleibt ruhig. Durchquert jemand das Sichtfeld, empfängt zuerst die eine, dann die andere Hälfte mehr Strahlung; die Schaltung des Moduls erkennt diesen Unterschied und der Pin OUT geht auf HIGH.
Die weiße Kuppel oben ist eine Fresnel-Linse. Sie teilt das Sichtfeld in Dutzende kleine Zonen und bündelt die Strahlung jeder Zone auf das Element. Wechselt eine Person von Zone zu Zone, ändert sich das Signal – deshalb erkennt ein PIR-Sensor Bewegung sehr gut, aber keinen Menschen, der völlig still steht.
Technische Daten des HC-SR501
| Merkmal | Wert |
|---|---|
| Versorgungsspannung | 4,5–20 V (5 V empfohlen) |
| Ruhestrom | Etwa 50 µA |
| Ausgang | Digital: 3,3 V bei Bewegung, sonst 0 V |
| Erfassungsreichweite | 3–7 m (einstellbar) |
| Erfassungswinkel | Etwa 110° |
| Haltezeit | Etwa 3 Sekunden – 5 Minuten (einstellbar) |
| Sperrzeit | Etwa 2,5 Sekunden nach dem Abschalten des Ausgangs |
| Aufwärmzeit | 30–60 Sekunden nach dem Einschalten |
Einstellungen auf dem Modul
- Sx-Poti (Empfindlichkeit): stellt die Reichweite ein. Im Uhrzeigersinn steigt sie von etwa 3 auf 7 Meter.
- Tx-Poti (Zeit): legt fest, wie lange der Ausgang nach einer Bewegung HIGH bleibt. Im Uhrzeigersinn wird die Zeit länger.
- Trigger-Jumper H (wiederholend): Solange die Bewegung anhält, startet die Zeit jedes Mal neu – ideal für Lichtsteuerung.
- Trigger-Jumper L (einmalig): Ist die Zeit abgelaufen, geht der Ausgang auf LOW, auch wenn die Bewegung weitergeht; dann ist eine neue Auslösung nötig.
- Sperrzeit: Etwa 2,5 Sekunden nachdem der Ausgang auf LOW gegangen ist, wird keine neue Bewegung erkannt; dieser Wert ist nicht einstellbar.
Pinbelegung und Anschluss des HC-SR501
| Pin | Funktion | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|---|
| VCC | Versorgung | 5V | VIN (5V) | VBUS (5V) |
| OUT | Digitaler Ausgang (3,3 V) | D2 | GPIO 27 | GP16 |
| GND | Masse | GND | GND | GND |
Bewegung mit dem Arduino erkennen
Der folgende Code wartet, bis der Sensor aufgewärmt ist, und meldet dann im seriellen Monitor einmal, wenn eine Bewegung beginnt, und einmal, wenn sie endet – dabei schaltet er die eingebaute LED des Arduino ein und aus. Nur auf Zustandswechsel zu achten, statt den Ausgang ständig auszugeben, ist auch die Methode für echte Projekte.
1const int PIR_PIN = 2;
2const int LED_PIN = 13; // dahili LED / built-in LED
3
4bool motion = false;
5
6void setup() {
7 pinMode(PIR_PIN, INPUT);
8 pinMode(LED_PIN, OUTPUT);
9 Serial.begin(9600);
10 Serial.println("Sensör ısınıyor / warming up...");
11 delay(30000); // ilk 30 sn kararsız / unstable for ~30 s
12 Serial.println("Hazır / ready");
13}
14
15void loop() {
16 bool now = digitalRead(PIR_PIN);
17 if (now && !motion) {
18 Serial.println("Hareket algılandı / motion detected");
19 digitalWrite(LED_PIN, HIGH);
20 motion = true;
21 } else if (!now && motion) {
22 Serial.println("Hareket bitti / motion ended");
23 digitalWrite(LED_PIN, LOW);
24 motion = false;
25 }
26}Licht mit Bewegungsmelder: Zeitsteuerung mit millis()
Die Leuchtdauer im Code statt am Tx-Poti festzulegen ist viel flexibler. Der folgende Code merkt sich bei jeder Bewegung die Zeit und schaltet das Licht 20 Sekunden nach der letzten Bewegung aus – solange sich jemand im Raum bewegt, bleibt es also an. An LIGHT_PIN kannst du eine LED anschließen oder ein Relaismodul für eine Netzlampe; bei einem Active-LOW-Relais tauschst du in der letzten Zeile HIGH und LOW. Den Relaisanschluss erklärt Was ist ein Relaismodul?
1const int PIR_PIN = 2;
2const int LIGHT_PIN = 7; // LED ya da röle / LED or relay
3const unsigned long ON_TIME = 20000; // son hareketten sonra 20 sn / 20 s after last motion
4
5unsigned long lastMotion = 0;
6
7void setup() {
8 pinMode(PIR_PIN, INPUT);
9 pinMode(LIGHT_PIN, OUTPUT);
10}
11
12void loop() {
13 if (digitalRead(PIR_PIN) == HIGH) {
14 lastMotion = millis(); // her harekette süreyi yenile / refresh on every motion
15 }
16 bool on = (lastMotion != 0) && (millis() - lastMotion < ON_TIME);
17 digitalWrite(LIGHT_PIN, on ? HIGH : LOW);
18}PIR mit ESP32 und Raspberry Pi Pico
Der Ausgang des HC-SR501 liefert bereits 3,3 V, er kann also ohne Spannungsteiler direkt an ESP32 und Pico. Das Modul selbst versorgst du aber mit 5 V, denn sein Spannungsregler arbeitet unter 4,5 V unzuverlässig. Am ESP32 läuft derselbe Arduino-Code; bei Batterieprojekten verlängert es die Laufzeit um Wochen, den ESP32 in den Tiefschlaf zu schicken und ihn mit dem PIR-Ausgang zu wecken (ext0 wakeup). Am Pico kannst du mit MicroPython einen Interrupt nutzen, damit dir keine Bewegung entgeht:
1from machine import Pin
2import time
3
4pir = Pin(16, Pin.IN) # GP16
5led = Pin(25, Pin.OUT) # dahili LED; Pico W'de Pin("LED") / onboard LED; Pin("LED") on Pico W
6
7def on_motion(pin):
8 led.value(pin.value()) # hareket varken yanar / on while there is motion
9 print("Hareket / motion" if pin.value() else "Bitti / ended")
10
11pir.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=on_motion)
12
13while True:
14 time.sleep(1)Fehlauslösungen vermeiden
- Nicht auf Wärmequellen richten: Heizkörper, Klimaanlagen, sonnige Fenster und heiße Lampen lösen durch plötzliche Temperaturänderungen aus.
- Von bewegten Gegenständen fernhalten: Vorhänge, Pflanzen oder Äste, die im Wind schwanken und in der Sonne warm geworden sind, wirken wie Bewegung.
- Versorgung entstören: Relais und WLAN-Module erzeugen Störungen; setze einen 100-µF-Kondensator zwischen VCC und GND des Sensors.
- Etwas Abstand zum ESP32: Direkt neben der WLAN-Antenne löst der HC-SR501 gelegentlich von selbst aus; ein paar Zentimeter Abstand und ein kurzes Kabel helfen meist.
- Bei Haustieren: die Empfindlichkeit senken und den Sensor hoch montieren, leicht nach unten geneigt.
- Nicht hinter Glas: Normales Fensterglas lässt die Infrarotstrahlung nicht durch, ein Sensor hinter der Scheibe sieht draußen nichts.
PIR, Mikrowellenradar oder Ultraschall?
| Merkmal | PIR (HC-SR501) | Mikrowellenradar (RCWL-0516) | Ultraschall (HC-SR04) |
|---|---|---|---|
| Was wird erkannt? | Warme, bewegte Körper | Jede Art von Bewegung | Entfernung zu einem Objekt |
| Durch dünne Wand oder Gehäuse | Nein | Ja | Nein |
| Still stehender Mensch | Nein | Nein | Als Entfernung gemessen |
| Stromverbrauch | Sehr gering (~50 µA) | Gering (~3 mA) | Mittel (~15 mA) |
| Typischer Einsatz | Licht, Alarm | Versteckte Sensoren, Türöffner | Hinderniserkennung, Füllstandsmessung |
Willst du wissen, ob sich jemand bewegt – und nicht, ob jemand im Raum ist –, ist der PIR die günstigste Lösung. Musst du messen, wie weit ein Objekt entfernt ist, lies HC-SR04 Entfernungssensor.
Projektideen mit dem PIR-Sensor
- Automatisches Flurlicht: bei Bewegung eine Lampe über ein Relais einschalten und nach 30 Sekunden ohne Bewegung wieder aus.
- Einbruchalarm: im Nachtmodus bei Bewegung einen Buzzer ertönen lassen; für den Ton siehe Was ist ein Buzzer?
- Intelligentes Nachtlicht: den PIR mit einem LDR-Lichtsensor kombinieren, damit die Lampe nur bei Dunkelheit und Bewegung angeht.
- Benachrichtigung aufs Handy: mit einem ESP32 bei Bewegung eine Telegram-Nachricht senden.
- Stromsparendes Display: die Hintergrundbeleuchtung eines LCD einschalten, wenn jemand näherkommt, und ausschalten, wenn er geht.
- Besucherzähler: jede Bewegung durch eine Tür zählen und auf einem Display anzeigen.
Typische Fehler und ihre Lösungen
- Der Ausgang bleibt dauernd HIGH: Die Tx-Zeit ist zu lang oder im H-Modus gibt es ständig Bewegung; dreh das Poti zurück und prüfe, ob der Sensor auf eine Wärmequelle zeigt.
- Er löst nie aus: VCC hat vielleicht keine 5 V, der Sensor wärmt sich noch auf oder das OUT-Kabel steckt an einem anderen Pin als im Code.
- Er löst alle paar Sekunden von selbst aus: Die Versorgung ist gestört; Kondensator ergänzen und Abstand zu Relais und WLAN-Modulen schaffen.
- Nach dem Ende der Bewegung erkennt er nicht sofort wieder: Die Sperrzeit von etwa 2,5 Sekunden ist normal, der Sensor ist nicht defekt.
- Falsch montiert: Ein PIR erkennt am besten, wenn die Bewegung das Sichtfeld seitlich kreuzt; jemanden, der direkt auf ihn zugeht, bemerkt er später.
Ein PIR-Sensor ist einer der besten Einstiege für dein erstes Smart-Home-Projekt: drei Kabel, und du siehst sofort ein Ergebnis. In der BlueGrays-App findest du Projekte mit Bewegungsmelder-Licht, Türklingel und Alarm Schritt für Schritt mit Schaltplänen und Code.
Häufige Fragen
Wie weit erkennt ein PIR-Sensor?
Der HC-SR501 erkennt in einem Winkel von etwa 110 Grad zwischen 3 und 7 Metern. Die Reichweite stellst du mit dem Sx-Poti (Empfindlichkeit) ein; im Uhrzeigersinn wird sie größer.
Erkennt ein PIR-Sensor einen Menschen, der still steht?
Nein. Ein PIR erkennt nur Änderungen der Infrarotstrahlung, also Bewegung. Wer völlig still sitzt, wird nicht bemerkt. Um festzustellen, ob jemand im Raum ist, nutzt man mmWave-Präsenzradare wie den LD2410.
Funktioniert ein PIR-Sensor durch Glas?
Nein. Normales Fensterglas lässt die vom Körper abgegebene Infrarotstrahlung nicht durch, deshalb sieht ein Sensor hinter der Scheibe draußen keine Bewegung. Für außen montierst du den Sensor regengeschützt im Freien.
Funktioniert der HC-SR501 mit 3,3 V?
Sein Spannungsregler arbeitet unter 4,5 V unzuverlässig, daher braucht er 5 V. Der Ausgang liefert bereits 3,3 V und kann direkt an ESP32 oder Pico. Für ein reines 3,3-V-System eignet sich das kleine AM312-PIR-Modul, das mit 2,7–12 V läuft.
Warum löst mein PIR-Sensor von selbst aus?
Häufige Ursachen sind die Aufwärmzeit, Wärmequellen im Sichtfeld (Heizung, Sonne, Klimaanlage) und Störungen auf der Versorgung. Ignoriere die ersten 60 Sekunden, richte den Sensor von Wärmequellen weg, setze einen Kondensator zwischen VCC und GND und halte Abstand zu WLAN-Modulen.
Was ist der Unterschied zwischen H- und L-Modus beim HC-SR501?
Im H-Modus (wiederholend) startet die Haltezeit bei jeder Erkennung neu, solange die Bewegung anhält – ein Licht bleibt also an, solange sich etwas bewegt. Im L-Modus (einmalig) schaltet der Ausgang nach Ablauf der Zeit ab, auch wenn die Bewegung weitergeht; eine neue Auslösung folgt nach der Sperrzeit.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
Bewegungsmelder mit Bewegungssensor
Einfaches Projekt, das LEDs durch Erkennung von Bewegungen in der Umgebung mit einem PIR-Bewegungssensor zum Leuchten bringt. Lehrt das Lesen digitaler Sensoren und die Logik der Bewegungserkennung.

Türklingel und Licht mit Bewegungssensor
Projekt, bei dem die LED leuchtet und die Türklingelmelodie mit Summer abgespielt wird, wenn der PIR-Sensor eine Bewegung erkennt. Es kombiniert Bewegungserkennung mit Ton und Licht Benachrichtigung.

Automatische Beleuchtung mit dem ESP32-PIR-Bewegungssensor
In diesem Projekt werden wir mithilfe des PIR-Bewegungssensors HC-SR501 Personen erkennen, die den Raum betreten, und die LED automatisch einschalten. Wenn eine Bewegung erkannt wird, leuchtet die LED für eine bestimmte Zeit, und wir werden die Zeit mithilfe der Funktion `millis()` und eines Zählers steuern, ohne `delay()` zu verwenden. Auf diese Weise erhalten wir ein Beleuchtungssystem mit Bewegungssensor, das andere Aufgaben ausführen kann, ohne dass der ESP32 blockiert wird. In der Praxis ka

ESP32-Bewegungsmelder
In diesem Projekt, das mit einem ESP32 und einem PIR-Sensor realisiert wurde, wird bei Bewegungserkennung ein Summer aktiviert, der einen akustischen Alarm auslöst. Es handelt sich um eine einfache und kostengünstige Sicherheitssystem-Anwendung. (Die Abbildungen dienen nur zur Veranschaulichung; bitte ordnen Sie sie den Texten zu.)

ESP32 Intelligente Beleuchtung (PIR + LDR + Relais + OLED)
Verwandle deinen Flur, dein Badezimmer oder deine Speisekammer mit dem ESP32 in intelligente Beleuchtung! Mit einem PIR-Bewegungssensor, einem LDR-Lichtsensor und einem Relaismodul realisieren wir das klassische Szenario "Licht geht an, wenn im Dunkeln Bewegung erkannt wird" — bei Tageslicht bleibt das Licht trotz Bewegung aus, was tagsüber Energie spart. Das Licht bleibt 30 Sekunden lang an; bei anhaltender Bewegung wird der Timer zurückgesetzt und das Licht bleibt länger an. Das SSD1306 OLED-D

ESP32 Bewegungsalarmsystem (PIR + Buzzer + LED + Telegram)
Ein intelligentes Sicherheitsalarmsystem, das Buzzer und LED aktiviert, sobald der PIR-Sensor Bewegung erkennt, und gleichzeitig eine sofortige Benachrichtigung per Telegram an den Besitzer sendet. Ein 30-sekündiger Cooldown verhindert Fehlalarme. Geeignet für Heimsicherheit, Garagenüberwachung, Lagerräume oder Arbeitszimmer. Mit ESP32-CAM sind Foto-Benachrichtigungen möglich; mit dem klassischen ESP32 DevKit V1 werden Textbenachrichtigungen gesendet.

Laser-Warnsystem
Sicherheitsprojekt, das erkennt, wenn der Laserstrahl über LDR unterbrochen wird und mit Summer und LED warnt. Es lehrt die Logik der Lichtunterbrechungserkennung mit einem Laser-LDR-Paar.

Laser-Sicherheitssystem
Fortschrittliches Sicherheitssystem, das bei Unterbrechung des Laserstrahls einen Alarm auslöst und per Drucktaste oder IR-Steuerung zurückgesetzt werden kann. Lehrt mehrere Eingangsquellen und Status
Weitere Artikel
Lerne, wie ein PIR-Sensor menschliche Bewegung erkennt, wie du den HC-SR501 einstellst, ihn an den Arduino anschließt, ein bewegungsgesteuertes Licht baust und Fehlalarme vermeidest.

