Arduino Mega - Bewegungssensor

Diese Anleitung zeigt Ihnen, wie Sie den HC-SR501 Bewegungssensor und einen Arduino Mega zur Personenerkennung verwenden. Hier ist, was wir lernen werden:

Arduino Mega motion sensor

Benötigte Hardware

1×Arduino Mega
1×USB 2.0 Kabel Typ A/B
1×HC-SR501 Bewegungssensor
1×Jumper-Kabel
1×(Empfohlen) Screw Terminal Block Shield for Arduino Uno/Mega
1×(Empfohlen) Breadboard Shield for Arduino Mega
1×(Empfohlen) Enclosure for Arduino Mega

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 Bewegungssensor

HC-SR501 Motion Sensor

Der HC-SR501 ist ein PIR-Sensor, der sich bewegende Personen oder Tiere erkennt. Er wird häufig für viele Aufgaben verwendet, wie das Ein- und Ausschalten von Lichtern, das Öffnen und Schließen von Türen, die Steuerung von Rolltreppen und das Entdecken von Eindringlingen.

Haben Sie schon einmal Türen gesehen, die sich von selbst öffnen und schließen, Lichter, die sich von selbst ein- und ausschalten, oder Rolltreppen, die von selbst starten? Haben Sie sich schon einmal gefragt: "Wie funktioniert das?" Wenn ja, wird diese Anleitung erklären, wie es funktioniert und Ihnen auch zeigen, wie Sie es selbst machen können. Lassen Sie uns anfangen!

Pinbelegung

Der HC-SR501 Bewegungssensor hat drei Pins.

  • GND Pin: mit Masse verbinden (0 V)
  • VCC Pin: mit 5V verbinden
  • OUTPUT Pin: wird LOW wenn keine Bewegung da ist, HIGH wenn Bewegung erkannt wird. Verbinden Sie diesen Pin mit dem Input-Pin eines Arduino Uno R4.

Der HC-SR501 hat einen Jumper und zwei Einstellregler, um die Sensoreinstellungen zu ändern. Beginnen Sie mit der Standardeinstellung. Für weitere Informationen siehe den Abschnitt "Erweiterte Anwendungen". Erweiterte Anwendungen

HC-SR501 Motion Sensor Pinout

Funktionsweise

Der HC-SR501 Sensor erkennt Bewegung, indem er Veränderungen im Infrarotlicht des sich bewegenden Objekts überwacht. Damit der HC-SR501 ein Objekt erkennen kann, müssen zwei Bedingungen erfüllt sein:

  • Es bewegt sich oder zittert.
  • Es strahlt Infrarotenergie aus.

Also:

  • Wenn sich etwas bewegt, aber kein Infrarotlicht ausstrahlt (zum Beispiel ein Roboter oder ein Spielzeugauto), wird der Sensor es nicht erkennen.
  • Wenn etwas Infrarotlicht ausstrahlt, aber stillsteht (zum Beispiel eine Person, die stillsteht), wird der Sensor es nicht erkennen.

Menschen und Tiere strahlen natürlich Wärme aus. Deshalb kann der Sensor erkennen, wenn sich Menschen und Tiere bewegen.

Der Status des Output-Pins:

  • Wenn sich nichts im Erfassungsbereich des Sensors bewegt, ist der OUTPUT Pin LOW.
  • Wenn eine Person oder ein Tier in den Erfassungsbereich des Sensors eintritt, wechselt der OUTPUT Pin von LOW zu HIGH und zeigt an, dass Bewegung erkannt wurde.
  • Wenn eine Person oder ein Tier den Erfassungsbereich des Sensors verlässt, wechselt der OUTPUT Pin von HIGH zu LOW und zeigt an, dass die Bewegung beendet ist.

Das Video zeigt das Grundprinzip der Funktionsweise des Bewegungssensors. In der Praxis kann die Funktionsweise je nach Einstellungen etwas anders sein, wie im Abschnitt Erweiterte Anwendungen erklärt.

Arduino Mega - HC-SR501 Bewegungssensor

Wenn Sie einen Pin am Arduino Mega als digitalen Eingang konfigurieren, kann er erkennen, ob das Angeschlossene low oder high ist.

Verbinden Sie einen Pin am Arduino Mega mit dem OUTPUT Pin des HC-SR501 Sensors. Verwenden Sie dann einfachen Arduino Code, um den Wert dieses Pins zu lesen und Bewegung zu erkennen.

Schaltplan

Arduino Mega Motion Sensor Wiring Diagram

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

Anfangseinstellung

Zeitverzögerung EinstellerVollständig gegen den Uhrzeigersinn einschrauben.
Erfassungsbereich EinstellerVollständig im Uhrzeigersinn einschrauben.
Wiederholungsauslöser WählerJumper wie im Bild gezeigt platzieren.
arduino motion sensor initial setting

Wie Sie für den Bewegungssensor programmieren

  • Konfigurieren Sie einen Arduino Mega Pin als digitalen Eingang mit der pinMode() Funktion.
pinMode(SENSOR_PIN, INPUT);
  • Verwenden Sie die digitalRead() Funktion, um zu sehen, ob der OUTPUT Pin des Sensors high oder low ist.
motion_state = digitalRead(SENSOR_PIN);
  • Erkennen Sie, wenn Bewegung beginnt (der Pin wechselt von low zu high).
prev_motion_state = motion_state; // Den vorherigen Pin-Zustand speichern motion_state = digitalRead(SENSOR_PIN); // Den aktuellen Eingangspegel lesen if (prev_motion_state == LOW && motion_state == HIGH) { // Auslösung bei einer LOW-zu-HIGH Flanke Serial.println("Motion detected!"); }
  • Erkennen Sie, wenn keine Bewegung mehr da ist (der Pin wechselt von HIGH zu LOW).
prev_motion_state = motion_state; // Den vorherigen Sensorwert für Flankenerkennung speichern motion_state = digitalRead(SENSOR_PIN); // Den aktuellen Zustand vom Sensor lesen if (prev_motion_state == HIGH && motion_state == LOW) { // Eine HIGH-zu-LOW Transition (fallende Flanke) erkennen Serial.println("Motion stopped!"); // Benachrichtigung ausgeben, wenn Bewegung stoppt }

Arduino Mega Code

/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega 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-mega/arduino-mega-motion-sensor */ #define SENSOR_PIN 2 // Pin number connected to the motion sensor's output int motion_state = LOW; // Current read state of the sensor (LOW on idle) int prev_motion_state = LOW; // Previous read state used for edge detection void setup() { Serial.begin(9600); // Initialize serial communication at 9600 baud pinMode(SENSOR_PIN, INPUT); // Configure SENSOR_PIN as input for the motion sensor } void loop() { prev_motion_state = motion_state; // Store the last sensor state for edge detection motion_state = digitalRead(SENSOR_PIN); // Read the current sensor output // Detect rising edge: motion detected when LOW becomes HIGH if (prev_motion_state == LOW && motion_state == HIGH) { Serial.println("Motion detected!"); // Serial message when motion is detected // Optional: Placeholder for extra actions on detection } // Detect falling edge: motion stops when HIGH transitions to LOW else if (prev_motion_state == HIGH && motion_state == LOW) { Serial.println("Motion stopped!"); // Serial message when motion stops // Optional: Placeholder for extra actions on stop } }

Schnelle Schritte

Befolgen Sie diese Schritte nacheinander:

  • Verbinden Sie die Teile wie im Schaltplan gezeigt.
  • Verbinden Sie das Arduino Mega Board mit Ihrem Computer über ein USB-Kabel.
  • Öffnen Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das richtige Board: Arduino Mega, und wählen Sie den COM-Port.
  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
  • Drücken Sie den Upload Button, um den Code zum Arduino Mega zu senden.
  • Öffnen Sie den Serial Monitor.
  • Bewegen Sie Ihre Hand vor dem Sensor.
  • Überprüfen Sie die Ausgabe im Serial 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.

Erweiterte 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 Sensoreinstellungen mit einem Jumper und zwei Reglern anpassen, wie oben beschrieben.

Erfassungsbereich Einsteller

Dieser Regler lässt Sie ändern, wie weit er Objekte erkennen kann (etwa 3 bis 7 Meter).

  • Wenn er ganz nach rechts gedreht wird, kann er bis zu etwa 3 Meter erkennen.
  • Wenn er ganz nach links gedreht wird, kann er bis zu etwa 7 Meter erkennen.
Motion Sensor Detection Range

Wir können das Potentiometer einstellen, um den Bereich zwischen 3 und 7 Metern zu setzen.

Zeitverzögerung Einsteller

Dieser Regler stellt die Verzögerungszeit ein.

  • Drehen Sie ihn ganz nach rechts, und die Verzögerung beträgt etwa 5 Minuten.
  • Drehen Sie ihn ganz nach links, und die Verzögerung beträgt etwa 3 Sekunden.

Als nächstes erklären wir, was eine Zeitverzögerung ist und wie sie mit dem Wiederholungsauslöser funktioniert.

motion sensor adjust time delay

Wiederholungsauslöser Wähler

Dieser Schalter lässt Sie wählen, wie der Auslöser funktioniert: einmaliger Auslöser oder wiederholender Auslöser.

motion sensor trigger selection

Wir nennen die Zeitverzögerungseinstellung time_delay (Sie ändern sie mit dem Zeitverzögerung Einsteller). Stellen Sie sich vor, Sie bewegen sich lange Zeit innerhalb des Erfassungsbereichs des Sensors. Das ist motion_time, was viel länger ist als time_delay.

  • Im Einzel-Modus geht der OUTPUT Pin mehrmals an und aus. Er bleibt für eine Zeit gleich time_delay an und bleibt für feste 3 Sekunden aus.
motion sensor single trigger mode
  • Der OUTPUT Pin bleibt HIGH für die Bewegungszeit plus die Verzögerung.
motion sensor repeatable trigger mode

Testen

Lassen Sie uns die Auslösermodi testen. Drehen Sie den Verzögerungsregler ganz nach links, um die Verzögerung auf 3 Sekunden zu setzen.

  • Einzel-Auslöser Modus:
  • Setzen Sie den Jumper auf Einzel-Auslöser Modus.
  • Bewegen Sie Ihre Hand 10 Sekunden lang vor dem Sensor.
  • Nehmen Sie Ihre Hand vom Sensor weg.
  • Warten Sie 3 Sekunden, dann überprüfen Sie den Serial Monitor, um die Ausgabe zu sehen.
COM6
Send
Motion detected! Motion stopped! Motion detected! Motion stopped! Motion detected! Motion stopped!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Wiederholbarer Auslöser Modus:
  • Setzen Sie den Jumper auf wiederholbaren Auslöser Modus.
  • Halten Sie Ihre Hand etwa 10 Sekunden lang vor dem Sensor.
  • Entfernen Sie Ihre Hand vom Sensor.
  • Nach etwa 3 Sekunden überprüfen Sie den Serial Monitor, um die Ausgabe zu sehen.
COM6
Send
Motion detected! Motion stopped!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Im Einzel-Modus schaltet sich der Sensor zwei- oder dreimal ein. Im wiederholbaren Auslöser Modus schaltet er sich nur einmal ein.

※ Notiz:

Während der LOW-Periode (3 Sekunden) kann der Sensor keine Bewegung erkennen. Das bedeutet, der Sensor ist während dieser Zeit nicht aktiv, aber es verursacht normalerweise keine Probleme.

Wir empfehlen die Verwendung des wiederholbaren Auslöser Modus.

In der praktischen Anwendung:

  • Geräte oder Maschinen schalten sich oft ein, wenn jemand in der Nähe ist.
  • Sie schalten sich nicht sofort aus, wenn die Person geht; sie schalten sich nach einer kurzen Verzögerung aus.

Funktionsreferenzen

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!