Arduino UNO R4 - Bewegungssensor

Dieses Tutorial zeigt Ihnen, wie Sie den HC-SR501-Bewegungssensor und den Arduino UNO R4 verwenden, um einen Menschen zu erkennen. Im Detail werden wir lernen:

Arduino UNO R4 Bewegungssensor

Über HC-SR501 Bewegungsmelder

HC-SR501 Bewegungssensor

Der HC-SR501 PIR-Sensor erkennt menschliche oder tierische Bewegungen. Er wird häufig in verschiedenen Anwendungen eingesetzt, zum Beispiel beim Ein- und Ausschalten von Lichtern, beim Öffnen und Schließen von Türen, beim Betreiben von Rolltreppen und beim Erkennen von Eindringlingen.

Wenn Sie zu Orten gehen, an denen sich Türen von selbst öffnen und schließen, an denen sich Lichter automatisch ein- und ausschalten oder an denen Rolltreppen von selbst starten, haben Sie sich jemals gefragt: „Wie passiert das?“ Wenn ja, wird Ihnen diese Anleitung nicht nur erklären, wie es funktioniert, sondern auch zeigen, wie Sie es selbst nachbauen können. Fangen wir an!

Pinbelegung

Der HC-SR501-Bewegungssensor kommt mit drei Pins:

  • GND-Pin: mit GND (0 V) verbinden
  • VCC-Pin: mit VCC (5 V) verbinden
  • OUTPUT-Pin: sendet LOW, wenn keine Bewegung vorliegt, HIGH bei Bewegung. Schließen Sie diesen Pin an den Eingangspin des Arduino UNN R4 an.

Der HC-SR501 enthält einen Jumper und zwei Potentiometer, die bei der Einstellung des Sensors helfen. Beginnen Sie mit der Standardeinstellung. Weitere Informationen finden Sie im Abschnitt Fortgeschrittene Anwendungen. Fortgeschrittene Anwendungen

HC-SR501 Bewegungsmelder-Pinbelegung

Wie es funktioniert

Der HC-SR501-Sensor erkennt Bewegungen, indem er Veränderungen des infraroten Lichts feststellt, das von dem sich bewegenden Objekt ausgeht. Damit der HC-SR501-Sensor ein Objekt erkennen kann, muss er zwei Bedingungen erfüllen:

  • Zittert oder bewegt sich
  • Strahlt Infrarotstrahlung aus

Deshalb:

  • Wenn sich ein Objekt bewegt, ohne Infrarotstrahlen abzugeben (wie ein Roboter oder ein Spielzeugauto), wird der Sensor es nicht erkennen.
  • Wenn ein Objekt Infrarotstrahlen abgibt, sich aber nicht bewegt (wie eine Person, die stillsteht), wird der Sensor es nicht erkennen.

Menschen und Tiere geben natürlich Infrarot ab. Dadurch kann der Sensor erkennen, wenn Menschen und Tiere sich bewegen.

Der Zustand des OUTPUT-Pins:

  • Wenn sich im Erfassungsbereich des Sensors weder eine Person noch ein Tier bewegt, ist der Ausgangspin des Sensors LOW.
  • Wenn eine Person oder ein Tier den Erfassungsbereich des Sensors betritt, ändert sich der Ausgangspin von LOW zu HIGH, was auf eine Bewegungserkennung hinweist.
  • Wenn sich eine Person oder ein Tier aus dem Erfassungsbereich des Sensors entfernt, ändert sich der Ausgangspin von HIGH zu LOW, was das Ende der Bewegung anzeigt.

Das Video zeigt die Grundidee dahinter, wie der Bewegungsmelder funktioniert. In der Praxis kann die Funktionsweise je nach Einstellung leicht variieren, wie im Abschnitt „Fortgeschrittene Anwendungen“ erläutert.

Arduino UNO R4 - HC-SR501 Bewegungsmelder

Wenn Sie einen Pin am Arduino UNO R4 als digitalen Eingang konfigurieren, kann er erkennen, ob das angeschlossene Bauteil sich in einem LOW- oder HIGH-Zustand befindet.

Verbinde den Pin des Arduino UNO R4 mit dem OUTPUT-Pin des HC-SR501-Sensors. Verwende dann den Arduino UNO R4-Code, um den Wert des OUTPUT-Pins auszulesen, um Bewegung zu erkennen.

Verdrahtungsdiagramm

Arduino UNO R4 Bewegungs-Sensor-Schaltplan

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

Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.

Ersteinrichtung

Time Delay AdjusterScrew it in anti-clockwise direction fully.
Detection Range AdjusterScrew it in clockwise direction fully.
Repeat Trigger SelectorPut jumper as shown on the image.
Ersteinrichtung des Arduino-Bewegungssensors

So programmieren Sie einen Bewegungsmelder

  • Setzen Sie einen Pin des Arduino UNO R4 in den digitalen Eingangsmodus, indem Sie die pinMode() Funktion verwenden.
pinMode(SENSOR_PIN, INPUT);
  • Verwenden Sie die Funktion digitalRead(), um den Status des OUTPUT-Pins des Sensors zu überprüfen.
motion_state = digitalRead(SENSOR_PIN);
  • Bewegung erkennen, wenn sie beginnt (der Pin wechselt den Zustand von LOW zu HIGH).
prev_motion_state = motion_state; // Speichere den vorherigen Zustand des Pins motion_state = digitalRead(SENSOR_PIN); // Lese den aktuellen Zustand des Pins aus if (prev_motion_state == LOW && motion_state == HIGH) { // Prüfe den Übergang von LOW zu HIGH Serial.println("Motion detected!"); }
  • Feststellen, wann die Bewegung stoppt (der Pinstatus ändert sich von HIGH zu LOW).
prev_motion_state = motion_state; // Speichere den vorherigen Zustand des Pins motion_state = digitalRead(SENSOR_PIN); // Aktualisiere den aktuellen Zustand aus dem Sensorsignal if (prev_motion_state == HIGH && motion_state == LOW) { // Erkenne den Übergang von HIGH nach LOW Serial.println("Motion stopped!"); // Ausgabe der Meldung, wenn die Bewegung stoppt }

Arduino UNO R4 Code

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 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-uno-r4/arduino-uno-r4-motion-sensor */ #define SENSOR_PIN 2 // Der Arduino UNO R4 ist mit dem Ausgangspin des Bewegungsmelders verbunden int motion_state = LOW; // Initialisiere den aktuellen Pin-Zustand mit LOW int prev_motion_state = LOW; // Initialisiere den vorherigen Pin-Zustand mit LOW void setup() { Serial.begin(9600); // Starte serielle Kommunikation mit 9600 Baud pinMode(SENSOR_PIN, INPUT); // Konfiguriere Pin 2 als Eingang für den Sensor } void loop() { prev_motion_state = motion_state; // Weise den aktuellen Pin-Zustand dem vorherigen Pin-Zustand zum Vergleich zu motion_state = digitalRead(SENSOR_PIN); // Lese den aktuellen Zustand vom Sensor-Ausgang // Überprüfe den Übergang von LOW zu HIGH, der auf eine erkannte Bewegung hinweist if (prev_motion_state == LOW && motion_state == HIGH) { Serial.println("Motion detected!"); // Nachricht ausgeben, wenn Bewegung erkannt wird // Optional: Weitere Aktionen bei Bewegungserkennung } // Überprüfe den Übergang von HIGH zu LOW, der darauf hindeutet, dass die Bewegung gestoppt hat else if (prev_motion_state == HIGH && motion_state == LOW) { Serial.println("Motion stopped!"); // Nachricht ausgeben, wenn die Bewegung gestoppt hat // Optional: Weitere Aktionen beim Stoppen der Bewegung } }

Schnelle Schritte

Folgen Sie diesen Anweisungen Schritt für Schritt:

  • Wenn dies das erste Mal ist, dass Sie den Arduino Uno R4 WiFi/Minima verwenden, lesen Sie das Tutorial zur Einrichtung der Umgebung für Arduino Uno R4 WiFi/Minima in der Arduino IDE Einrichtung der Umgebung für Arduino Uno R4 WiFi/Minima in der Arduino IDE.
  • Verbinden Sie die Bauteile gemäß dem bereitgestellten Diagramm.
  • Schließen Sie das Arduino UNO R4-Board über ein USB-Kabel an Ihren Computer an.
  • Starten Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das passende Arduino Uno R4-Board (z. B. Arduino Uno R4 WiFi) und den COM-Port aus.
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE.
  • Drücken Sie in der Arduino IDE die Schaltfläche Hochladen, um den Code auf Arduino UNO R4 hochzuladen.
  • Öffnen Sie den seriellen Monitor.
  • Bewegen Sie Ihre Hand vor dem Sensor.
  • Überprüfen Sie 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.

Fortgeschrittene Anwendungen

Dieser Abschnitt widmet sich vertieftem Wissen. Machen Sie sich KEINE Sorgen, wenn Sie es nicht verstehen. Überspringen Sie diesen Abschnitt, wenn er Sie überfordert, und kommen Sie an einem anderen Tag zurück. Lesen Sie weiter mit den folgenden Abschnitten.

Wir können die Einstellungen des Sensors mit einem Jumper und zwei Potentiometern anpassen, wie oben beschrieben.

Detektionsreichweite-Einsteller

Dieses Potentiometer stellt den Erkennungsabstand ein (etwa 3 bis 7 Meter).

  • Wenn er vollständig im Uhrzeigersinn gedreht ist, beträgt der Erfassungsbereich etwa 3 Meter.
  • Wenn er vollständig gegen den Uhrzeigersinn gedreht ist, beträgt der Erfassungsbereich etwa 7 Meter.
Bewegungssensor-Erfassungsbereich

Wir können die Potentiometer-Einstellungen so ändern, dass der gewünschte Bereich zwischen 3 Metern und 7 Metern liegt.

Zeitverzögerungsregler

Dieses Potentiometer stellt die Verzögerungszeit ein.

  • Wenn Sie es ganz im Uhrzeigersinn drehen, beträgt die Zeitverzögerung etwa 5 Minuten.
  • Wenn Sie es ganz gegen den Uhrzeigersinn drehen, beträgt die Zeitverzögerung etwa 3 Sekunden.

Als Nächstes erklären wir, was eine Zeitverzögerung bedeutet und wie sie sich auf den Wiederholungs-Auslöser bezieht.

Bewegungssensor-Verzögerung einstellen

Wiederholungs-Auslöser-Auswahl

Dieser Jumper ermöglicht es Ihnen, einen Trigger-Modus auszuwählen: Einzeltrigger oder wiederholbarer Trigger.

Bewegungssensor-Auslöser-Auswahl

Wir bezeichnen die Zeitverzögerungseinstellung (durch den Time Delay Adjuster angepasst) als time_delay. Stellen Sie sich vor, Sie bewegen sich weiterhin innerhalb des Detektionsbereichs des Sensors über eine beträchtliche Zeit, die wir motion_time nennen werden (viel länger als time_delay).

  • Im Einzel-Auslöser-Modus wechselt der OUTPUT-Pin mehrmals zwischen LOW und HIGH. Er bleibt HIGH für eine Periode, die der Verzögerungszeit 'time_delay' entspricht, und LOW für eine feste Zeit von 3 Sekunden.
Bewegungsmelder Einzelauslösungsmodus
  • Der Ausgangspin bleibt während der Bewegungszeit zuzüglich der Zeitverzögerung HIGH.
Bewegungssensor - wiederholbarer Auslösemodus

Tests

Lassen Sie uns die Trigger-Modi testen. Drehen Sie den Verzögerungsregler ganz nach links, um die Verzögerungszeit auf 3 Sekunden einzustellen.

  • Einzel-Auslöser-Modus:
    • Setzen Sie den Jumper, um den Einzel-Auslöser-Modus auszuwählen.
    • Bewegen Sie Ihre Hand kontinuierlich vor dem Sensor für 10 Sekunden.
    • Entfernen Sie Ihre Hand aus dem Erfassungsbereich des Sensors.
    • Warten Sie 3 Sekunden; prüfen Sie anschließend den seriellen Monitor auf die Ausgabe, wie gezeigt.
    COM6
    Send
    Motion detected! Motion stopped! Motion detected! Motion stopped! Motion detected! Motion stopped!
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  
    • Wiederholbarer Trigger-Modus:
      • Setzen Sie den Jumper ein, um den Wiederholbaren Trigger-Modus zu aktivieren.
      • Bewegen Sie Ihre Hand ungefähr 10 Sekunden lang kontinuierlich vor dem Sensor.
      • Entfernen Sie Ihre Hand aus dem Bereich des Sensors.
      • Nachdem Sie 3 Sekunden gewartet haben, überprüfen Sie den seriellen Monitor, um die Ausgabe zu sehen.
      COM6
      Send
      Motion detected! Motion stopped!
      Autoscroll Show timestamp
      Clear output
      9600 baud  
      Newline  

      Im Einzeltrigger-Modus aktiviert der Sensor zweimal oder dreimal. Im wiederholbaren Trigger-Modus aktiviert er nur einmal.

      ※ Notiz:

      Während der LOW-Periode, die 3 Sekunden dauert, kann der Sensor keine Bewegung erkennen. Das bedeutet, dass der Sensor in dieser Zeit inaktiv ist, aber das verursacht in der Regel keine Probleme.

      Es wird empfohlen, den wiederholbaren Auslösemodus zu verwenden.

      In praktischen Anwendungen:

      • Geräte oder Maschinen werden oft eingeschaltet, wenn in der Nähe eine Person erkannt wird.
      • Geräte oder Maschinen werden nicht sofort ausgeschaltet, sobald die Person den Bereich verlässt. Sie werden nach einer bestimmten Verzögerung ausgeschaltet.

Funktionsreferenzen

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