Arduino Nano ESP32 - Bewegungssensor

Dieses Tutorial gibt Anleitungen dazu, wie man den Arduino Nano ESP32 mit dem HC-SR501-Bewegungssensor verwendet. Genauer gesagt werden wir lernen:

Erforderliche Hardware

1×Arduino Nano ESP32
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 Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

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-Bewegungsmelder

HC-SR501 Bewegungsmelder

Der HC-SR501-PIR-Sensor ist ein Sensor, der die Bewegung von Menschen (oder Tieren) erkennen kann. Er wird in vielen Anwendungen häufig verwendet, um die Anwesenheit von Menschen zu erkennen (Licht automatisch ein- und auszuschalten, Rolltreppe ein- und auszuschalten, einen Einbrecher zu erkennen, Türen öffnen/schließen...).

HC-SR501 Bewegungsmelder 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 eine Bewegung erkannt wird

    Es gibt auch zwei Potentiometer und einen Jumper am HC-SR501-Bewegungssensor. Diese Potentiometer und Jumper werden verwendet, um die Einstellung des Sensors anzupassen. Die detaillierte Anleitung wird in den Fortgeschrittenen Anwendungen beschrieben.

    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 es zwei Voraussetzungen erfüllen:

    • Das Objekt emittiert Infrarotstrahlung.
    • Das Objekt bewegt sich oder zittert.

    Also:

    • Wenn ein Objekt den Infrarotstrahl aussendet, sich aber NICHT bewegt, wird es vom Sensor NICHT erkannt (z. B. eine Person, die stillsteht).
    • Wenn sich ein Objekt bewegt, aber NICHT den Infrarotstrahl aussendet, wird es vom Sensor NICHT erkannt (z. B. ein Roboter oder ein Fahrzeug).

    Die Tiere und Menschen emittieren natürlich Infrarotstrahlung. Daher können sie 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 Sensor-Einstellung unterschiedlich funktionieren (wie im Abschnitt Fortgeschrittene Anwendungen beschrieben).

    Erkennung der Anwesenheit eines Menschen

    Der Sensor selbst erkennt das Vorhandensein von Menschen NICHT direkt; der Sensor erkennt lediglich die Bewegung. Und dann wird das Vorhandensein 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

    Es gibt ein Problem mit dieser Regel in der Praxis. Die Menschen befinden sich im Sensorbereich, bewegen sich aber NICHT. Die Bewegung wird NICHT erkannt. Der Arduino Nano ESP32 (oder MCU) schlussfolgert, dass kein Mensch vorhanden ist.

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

    Arduino Nano ESP32 und HC-SR501 Bewegungssensor

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

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

Verdrahtungsdiagramm zwischen HC-SR501-Bewegungssensor und Arduino Nano ESP32

  • Das Verdrahtungsdiagramm beim Betrieb des Arduino Nano ESP32-Boards über den USB-Anschluss.
Arduino Nano ESP32 Bewegungsmelder-Verdrahtungsschema

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

  • Das Schaltbild beim Betrieb des Arduino Nano ESP32-Boards über den Vin-Pin.
Arduino Nano ESP32 Bewegungssensor-Verdrahtungsdiagramm mit externem Netzadapter

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

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.
Arduino Nano ESP32 Bewegungsensor-Ersteinrichtung

So programmieren Sie einen Bewegungsmelder

  • Konfigurieren Sie den Pin eines ESP32 in den digitalen Eingabemodus, indem Sie die Funktion pinMode() verwenden.
pinMode(PIN_TO_SENSOR, INPUT);
  • Lies den Zustand des Sensor-Ausgangspins, indem du die digitalRead() Funktion verwendest.
motion_state = digitalRead(PIN_TO_SENSOR);
  • Bewegungsbeginn erkennen (Pin-Zustandsänderung von LOW nach HIGH)
prev_motion_state = motion_state; // Speichere den vorherigen Zustand motion_state = digitalRead(PIN_TO_SENSOR); // Lies den neuen Zustand if (prev_motion_state == LOW && motion_state == HIGH) { // Pin-Zustandsänderung: LOW -> HIGH Serial.println("Motion detected!"); }
  • Erkennung eines Bewegungsstopps (Zustandsänderung des Pins von HIGH nach LOW)
prev_motion_state = motion_state; // alten Zustand speichern motion_state = digitalRead(PIN_TO_SENSOR); // neuen Zustand lesen if (prev_motion_state == HIGH && motion_state == LOW) { // Pin-Zustandsänderung: HIGH -> LOW Serial.println("Motion stopped!"); }

Arduino Nano ESP32-Code

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano-esp32/arduino-nano-esp32-motion-sensor */ #define PIN_TO_SENSOR D2 // Der Arduino Nano ESP32 Pin, der mit OUTPUT-Pin des Sensors verbunden ist int motion_state = LOW; // aktueller Zustand des Pins int prev_motion_state = LOW; // vorheriger Zustand des Pins void setup() { Serial.begin(9600); // Initialisiert die serielle Schnittstelle zur Kommunikation mit dem seriellen Monitor. pinMode(PIN_TO_SENSOR, INPUT); // setzt den Arduino Nano ESP32 Pin in den Eingangsmodus, um den Wert vom OUTPUT-Pin des Sensors zu lesen } void loop() { prev_motion_state = motion_state; // speichert den alten Zustand motion_state = digitalRead(PIN_TO_SENSOR); // liest den neuen Zustand if (prev_motion_state == LOW && motion_state == HIGH) { // Pin-Zustandsänderung: LOW -> HIGH Serial.println("Motion detected!"); // TODO: Alarm einschalten, Licht einschalten oder ein Gerät aktivieren ... hier } else if (prev_motion_state == HIGH && motion_state == LOW) { // Pin-Zustandsänderung: HIGH -> LOW Serial.println("Motion stopped!"); // TODO: Alarm ausschalten, Licht ausschalten oder ein Gerät deaktivieren ... hier } }

Schnelle Schritte

  • Wenn dies das erste Mal ist, dass Sie Arduino Nano ESP32 verwenden, lesen Sie wie man die Umgebung für Arduino Nano ESP32 in der Arduino IDE einrichtet.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Kompilieren Sie den Code und laden Sie ihn auf das Arduino Nano ESP32-Board hoch, indem Sie in der Arduino IDE auf die Hochladen-Schaltfläche klicken.
  • Öffnen Sie den seriellen Monitor in der Arduino IDE.
Wie öffnet man den seriellen Monitor in der Arduino-IDE?
  • Bewege deine Hand vor dem Sensorbereich
  • Sieh dir die Ausgabe im Serial Monitor an
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

Verwandte Tutorials

※ 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!