ESP32 - Bewegungsensor

In diesem Tutorial zeigen wir dir, wie man den ESP32 mit dem HC-SR501-Bewegungssensor verwendet. Im Detail werden wir Folgendes lernen:

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×HC-SR501 Bewegungssensor
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den HC-SR501-Bewegungssensor

HC-SR501 Bewegungsmelder

HC-SR501 PIR-Sensor ist ein Sensor, der die Bewegung von Menschen (oder Tieren) erkennen kann. Er wird häufig verwendet, um die Anwesenheit von Menschen in vielen Anwendungen zu erkennen (automatisches Ein- bzw. Ausschalten der Glühbirne, Aktivieren/Deaktivieren der Rolltreppe, Erkennen eines Eindringlings, Öffnen/Schließen der Tür...)

HC-SR501 Bewegungssensor Pinbelegung

Der HC-SR501-Bewegungssensor hat 3 Pins:

  • VCC-Pin: Verbinden Sie diesen Pin mit VCC (5V)
  • GND-Pin: Verbinden Sie diesen Pin mit GND (0V)
  • OUTPUT-Pin: Verbinden Sie diesen Pin mit dem Eingangs-Pin des ESP32. Dieser Pin gibt das Signal aus, das der Bewegungserkennung entspricht:
    • NIEDRIG, wenn keine Bewegung erkannt wird
    • HOCH, wenn Bewegung erkannt wird

    Am HC-SR501-Bewegungsmelder gibt es auch zwei Potentiometer und einen Jumper. Diese Potentiometer und der Jumper werden verwendet, um die Einstellung des Sensors anzupassen. Die detaillierte Anleitung finden Sie unter Fortgeschrittene Anwendungen.

    HC-SR501 Bewegungsmelder Pinbelegung

    Wie der HC-SR501-Bewegungssensor funktioniert

    Das Funktionsprinzip des HC-SR501-Sensors basiert auf der Veränderung der Infrarotstrahlung am sich bewegenden Objekt. Damit der HC-SR501-Sensor das Objekt erkennen kann, muss das Objekt zwei Voraussetzungen erfüllen:

    • Das Objekt strahlt Infrarotstrahlung aus.
    • Das Objekt bewegt sich oder zittert.

    Also:

    • Wenn ein Objekt eine Infrarotstrahlung aussendet, sich aber nicht bewegt, wird es vom Sensor nicht erkannt.
    • Wenn ein Objekt sich bewegt, aber keine Infrarotstrahlung aussendet, wird es vom Sensor nicht erkannt.

    Die Tiere und Menschen strahlen von Natur aus Infrarotstrahlung aus. Daher können die Tiere und Menschen vom HC-SR501-Sensor erkannt werden, wenn sie sich bewegen.

    Das oben gezeigte Video zeigt das Funktionsprinzip des Bewegungssensors. In der Praxis kann der Bewegungssensor je nach Einstellung des Sensors unterschiedlich funktionieren (wie im Abschnitt Erweiterte Anwendungen beschrieben).

    Erkennung der Anwesenheit von Menschen

    Der Sensor selbst erkennt NICHT direkt die Anwesenheit von Menschen; der Sensor erkennt nur die Bewegung. Und dann wird die Anwesenheit von Menschen anhand der Bewegungserkennung abgeleitet:

    • Wenn die Bewegung erkannt wird, sind die Menschen anwesend
    • Wenn die Bewegung nicht erkannt wird, sind die Menschen nicht anwesend

    In der Praxis gibt es ein Problem mit dieser Regel. Die Menschen befinden sich im Sensorbereich, bewegen sich jedoch NICHT. Die Bewegung wird NICHT erkannt. Der ESP32 (oder ein MCU) schlussfolgert, dass die Menschen NICHT anwesend sind.

    Allerdings werden Sensoren in vielen Anwendungen eingesetzt, um Menschen zu erkennen, da dieses Problem nicht gravierend ist und der Preis der Sensoren günstig ist.

    ESP32 und HC-SR501 Bewegungsmelder

    Wenn der Pin eines ESP32 als digitaler Eingang konfiguriert ist, kann er den Zustand (LOW oder HIGH) von allem lesen, an dem er angeschlossen ist.

    Indem der Pin des ESP32 mit dem Ausgangspin des HC-SR501-Sensors verbunden wird, können wir den ESP32-Code verwenden, um den Wert des Ausgangspins zu lesen und daraus die Bewegung abzuleiten.

Schaltplan zwischen HC-SR501 Bewegungssensor und ESP32

  • Wie man ESP32 und Bewegungssensor mit Breadboard verbindet (über USB-Kabel gespeist)
ESP32-Bewegungssensor-Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

  • So verbinden Sie ESP32 und Bewegungssensor mit einem Breadboard (über den Vin-Pin mit Strom versorgt)
ESP32-Bewegungssensor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

So verbinden Sie ESP32 und Bewegungsmelder
So verdrahten Sie ESP32 und Bewegungssensor

Ersteinrichtung

Detection Range Adjuster Fully screw it in the clockwise direction.
Time Delay Adjuster Fully screw it in the anti-clockwise direction.
Repeat Trigger Selector Put jumper like the below image.
Ersteinrichtung des ESP32-Bewegungssensors

Wie man einen Bewegungssensor programmiert

  • Konfigurieren Sie einen Pin eines ESP32 als digitalen Eingang, indem Sie die Funktion pinMode() verwenden.
pinMode(PIN_TO_SENSOR, INPUT);
  • Lies den Zustand des OUTPUT-Pins des Sensors mit der Funktion digitalRead().
pinStateCurrent = digitalRead(PIN_TO_SENSOR);
  • Bewegungsbeginn erkennen (Pin-Zustandsänderung von LOW nach HIGH)
pinStatePrevious = pinStateCurrent; // Speichert den alten Zustand pinStateCurrent = digitalRead(PIN_TO_SENSOR); // Liest den neuen Zustand if (pinStatePrevious == LOW && pinStateCurrent == HIGH) { // Pin-Zustandswechsel: LOW -> HIGH Serial.println("Motion detected!"); }
  • Bewegungsstopp erkennen (Zustandsänderung des Pins von HIGH nach LOW)
pinStatePrevious = pinStateCurrent; // alten Zustand speichern pinStateCurrent = digitalRead(PIN_TO_SENSOR); // neuen Zustand lesen if (pinStatePrevious == HIGH && pinStateCurrent == LOW) { // Pin-Zustandsänderung: HIGH -> LOW Serial.println("Motion stopped!"); }

ESP32-Quellcode

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-motion-sensor */ const int PIN_TO_SENSOR = 19; // GPIO19-Pin verbunden mit dem OUTPUT-Ausgangspin des Sensors int pinStateCurrent = LOW; // aktueller Zustand des Pins int pinStatePrevious = LOW; // vorheriger Zustand des Pins void setup() { Serial.begin(9600); // Seriellen Port initialisieren pinMode(PIN_TO_SENSOR, INPUT); // Setze den ESP32-Pin in den Eingangsmodus, um den Wert vom OUTPUT-Pin des Sensors zu lesen } void loop() { pinStatePrevious = pinStateCurrent; // alten Zustand speichern pinStateCurrent = digitalRead(PIN_TO_SENSOR); // neuen Zustand lesen if (pinStatePrevious == LOW && pinStateCurrent == HIGH) { // Pin-Zustandsänderung: LOW -> HIGH Serial.println("Motion detected!"); // TODO: turn on alarm, light or activate a device ... here } else if (pinStatePrevious == HIGH && pinStateCurrent == LOW) { // Pin-Zustandsänderung: HIGH -> LOW Serial.println("Motion stopped!"); // TODO: Alarm, Licht ausschalten oder ein Gerät deaktivieren ... hier } }

Schnelle Schritte

  • Wenn dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie sich wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Kompilieren und den Code auf das ESP32-Board hochladen, indem Sie in der Arduino IDE auf die Schaltfläche Hochladen klicken.
  • Öffnen Sie den seriellen Monitor in der Arduino IDE.
Wie man den seriellen Monitor in der Arduino-IDE öffnet.
  • Bewege deine Hand vor dem Sensorbereich
  • Sieh die Ausgabe im seriellen Monitor
COM6
Send
Motion detected! Motion stopped!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Sprachreferenzen

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!