Arduino Nano – Bewegungssensor
Haben Sie sich schon einmal gefragt: „Wie kann es das tun?“, wenn Sie auf Orte mit automatischen Türen, Beleuchtung und Rolltreppen stoßen? Wenn ja, wird dieses Tutorial nicht nur Ihre Frage beantworten, sondern Ihnen auch zeigen, wie Sie es durch die Verwendung eines Arduino Nano und eines Bewegungssensors realisieren können. Legen wir los!
Dieses Tutorial erklärt dir, wie man den Arduino Nano mit einem Bewegungssensor verwendet. Im Detail werden wir lernen:
- Wie der HC-SR501-Bewegungssensor funktioniert
- So schließen Sie den HC-SR501-Bewegungssensor an den Arduino Nano an
- Wie man den Arduino Nano programmiert, um den Zustand des HC-SR501-Bewegungssensors auszulesen
- Wie man den Arduino Nano und den HC-SR501-Bewegungssensor verwendet, um menschliche Präsenz zu erkennen und entsprechend zu handeln
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über den HC-SR501-Bewegungssensor

Der HC-SR501 PIR-Sensor kann die Bewegung von Menschen (oder Tieren) erkennen. Er wird häufig in verschiedenen Anwendungen eingesetzt, z. B. um eine Glühbirne automatisch ein- oder auszuschalten, eine Tür zu öffnen und zu schließen, eine Rolltreppe zu aktivieren oder zu deaktivieren, und einen Eindringling zu erkennen.
Pinbelegung des Bewegungssensors
Der HC-SR501-Bewegungssensor hat drei Pins:
- GND-Pin: Dieser Pin sollte mit GND (0V) verbunden werden.
- VCC-Pin: Dieser Pin sollte mit VCC (5V) verbunden werden.
- OUTPUT-Pin: Dies ist ein Ausgangspin und er wird LOW sein, wenn keine Bewegung erkannt wird, und HIGH, wenn Bewegung erkannt wird. Dieser Pin muss mit dem Eingangspin des Arduino verbunden werden.
Der HC-SR501 verfügt über einen Jumper und zwei Potentiometer, mit denen die Einstellungen des Sensors angepasst werden.

Wie es funktioniert
Der HC-SR501-Sensor ist in der Lage, Bewegungen anhand der Veränderungen der Infrarotstrahlung eines sich bewegenden Objekts zu erkennen. Damit der HC-SR501-Sensor das Objekt erkennen kann, müssen zwei Kriterien erfüllt werden:
- Das Objekt muss in Bewegung sein oder sich schütteln
- Das Objekt muss Infrarotstrahlung aussenden
Folglich:
- Wenn sich ein Objekt bewegt, aber keine Infrarotstrahlung aussendet (z. B. ein Roboter oder Spielzeugfahrzeug), wird es vom Sensor nicht erkannt.
- Wenn ein Objekt Infrarotstrahlung aussendet, sich aber nicht bewegt (z. B. eine Person, die stillsteht), wird es vom Sensor nicht erkannt.
Menschen und Tiere sind Quellen von Infrarotstrahlung. Daher kann der Sensor ihre Bewegungen erkennen.
Zustand des Ausgangspins:
- Wenn kein Mensch (oder ein Tier) im erfassten Bereich des Sensors vorhanden ist, liegt der Ausgangspin des Sensors im LOW-Zustand.
- Wenn ein Mensch (oder ein Tier) den erfassten Bereich des Sensors betritt, wechselt der Ausgangspin vom LOW-Zustand in den HIGH-Zustand, was darauf hinweist, dass eine Bewegung erkannt wurde.
- Wenn ein Mensch (oder ein Tier) den erfassten Bereich des Sensors verlässt, wechselt der Ausgangspin vom HIGH- in den LOW-Zustand, was darauf hinweist, dass die Bewegung beendet ist.
Das oben gezeigte Video demonstriert die grundlegende Funktionsweise eines Bewegungsmelders. In der Praxis kann der Bewegungsmelder je nach Konfiguration unterschiedlich arbeiten (was im Abschnitt Fortgeschrittene Anwendungen beschrieben ist).
Die Anwesenheit von Menschen erkennen
Der Sensor selbst erkennt die Anwesenheit von Menschen nicht. Er erkennt nur die Bewegung. Wir verwenden ein Arduino Nano, um die Anwesenheit von Menschen anhand der vom Sensor erkannten Bewegung abzuleiten, gemäß dieser Regel:
- Wenn Bewegung erkannt wird, dann sind Menschen anwesend.
- Wenn keine Bewegung erkannt wird, dann sind Menschen nicht anwesend.
Diese Regel funktioniert in der Praxis nicht perfekt: Wenn sich Menschen im Bereich des Sensors befinden, sich aber nicht bewegen, wird die Bewegung nicht erkannt. Infolgedessen wird der Arduino Nano zu dem Schluss kommen, dass keine Menschen anwesend sind.
Zum Beispiel ist der Bewegungsmelder in Ihrem Besprechungsraum so eingerichtet, dass die Lichter aktiviert werden, wenn Personen anwesend sind. Wenn die Besprechung im Gange ist und sich niemand bewegt, wird die Bewegung nicht erkannt und damit die menschliche Anwesenheit nicht erkannt, wodurch die Lichter ausgeschaltet werden. Um sie wieder einzuschalten, muss sich jemand bewegen.
Dieses Problem ist jedoch NICHT ernst und der Sensor ist kostengünstig. Daher wird er in vielen Anwendungen häufig eingesetzt, um Menschen zu erkennen.
Arduino Nano – HC-SR501 Bewegungsmelder
Schließen Sie den digitalen Eingangspin des Arduino an den OUTPUT-Pin des HC-SR501-Sensors an. Mit dem Arduino Nano-Code können wir den Wert des OUTPUT-Pins überprüfen, um Bewegung zu erkennen.
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.
Anfangseinstellung
Time Delay Adjuster | Screw it in anti-clockwise direction fully. |
Detection Range Adjuster | Screw it in clockwise direction fully. |
Repeat Trigger Selector | Put jumper as shown on the image. |

Wie man einen Bewegungsmelder programmiert
- Richte den Pin eines Arduino-Boards als digitalen Eingang ein, indem du die Funktion pinMode() verwendest.
- Überprüfen Sie den Zustand des Ausgangspins des Sensors mit der digitalRead() Funktion.
- Bestimme, wann die Bewegung beginnt (der Pin-Zustand ändert sich von LOW zu HIGH).
- Erkennen, wann der Zustand des Pins von HIGH auf LOW gewechselt ist, was darauf hindeutet, dass die Bewegung gestoppt wurde.
Arduino Nano-Quellcode
Schnelle Schritte
- Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
- Klicken Sie auf die Hochladen-Schaltfläche in der Arduino IDE, um den Code zu kompilieren und auf den Arduino Nano hochzuladen.
- Öffnen Sie den seriellen Monitor.
- Bewegen Sie Ihre Hand innerhalb des Bereichs des Sensors.
- Überprüfen Sie die Ausgabe im seriellen Monitor.
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
Wie bereits erwähnt, können wir die Konfiguration des Sensors mit einem Jumper und zwei Potentiometern ändern.
Detektionsbereich-Einsteller
Dieses Potentiometer kann beeinflussen, wie weit etwas erkannt werden kann (etwa 3 bis 7 Meter).
- Wenn man es ganz nach rechts dreht, erkennt es Objekte in einer Entfernung von bis zu 3 Metern.
- Wenn man es ganz nach links dreht, erkennt es Objekte in einer Entfernung von bis zu 7 Metern.

Wir können das Potentiometer verwenden, um einen Wertebereich zwischen 3 m und 7 m einzustellen.
Zeitverzögerungsregler
Dieses Potentiometer wird verwendet, um die Zeitverzögerung einzustellen:
- Wenn es ganz im Uhrzeigersinn gedreht wird, beträgt die Zeitverzögerung ungefähr 5 Minuten.
- Wenn es ganz gegen den Uhrzeigersinn gedreht wird, beträgt die Zeitverzögerung ungefähr 3 Sekunden.
Der folgende Abschnitt erläutert das Konzept der Zeitverzögerung in Verbindung mit dem Wiederholungs-Auslöser.

Wiederholungs-Auslöser-Auswahl
Es gibt einen Jumper, der dazu verwendet wird, zwischen Trigger-Modi zu wählen: Einzeltrigger oder wiederholbarer Trigger.

Nennen wir die Zeitverzögerungseinstellung, die über den Zeitverzögerungsregler festgelegt wird, als time_delay. Wenn Sie sich im Erfassungsbereich des Sensors über einen längeren Zeitraum bewegen (bekannt als motion_time), der um ein Vielfaches länger ist als time_delay:
- Im Einzeltrigger-Modus: Der Zustand des OUTPUT-Pins wird mehrmals zwischen LOW und HIGH umgeschaltet. Die HIGH-Dauer entspricht time_delay, während die LOW-Dauer auf 3 Sekunden festgelegt ist.

- Wiederholbarer Trigger-Modus: Der Zustand des Ausgangspins bleibt HIGH für einen Zeitraum von (motion_time + time_delay).

Testen
- Einzel-Auslöser-Modus:
- Setzen Sie den Jumper, um den Einzel-Auslöser-Modus auszuwählen.
- Bewegen Sie Ihre Hand etwa 10 Sekunden vor dem Sensor.
- Bewegen Sie Ihre Hand aus dem Bereich des Sensors.
- Warten Sie 3 Sekunden; die Ausgabe im seriellen Monitor sollte wie folgt aussehen:
- Setzen Sie den Jumper, um den wiederholbaren Trigger-Modus auszuwählen
- Winken Sie Ihre Hand vor dem Sensor für etwa 10 Sekunden
- Bewegen Sie Ihre Hand aus dem Erfassungsbereich des Sensors
- Warten Sie 3 Sekunden; die Ausgabe wird im seriellen Monitor wie folgt sichtbar sein:
- Wir schalten Geräte/Maschinen ein oder aktivieren sie, sobald eine Person anwesend ist
- Wir schalten Geräte/Maschinen NICHT sofort ab, nachdem eine Person nicht mehr anwesend ist. Wir schalten Geräte/Maschinen erst nach einer bestimmten Zeit aus bzw. deaktivieren sie.
Wiederholbarer Trigger-Modus:
Wir beobachten, dass der Sensor im Einzel-Auslösemodus zwei- oder dreimal aktiviert wird. Im wiederholbaren Auslösemodus hingegen löst der Sensor nur einmal aus.
※ Notiz:
Während der LOW-Zeit (3 Sekunden, ein fester und unverstellbarer Wert) ist der Sensor nicht in der Lage, jegliche Bewegung zu erkennen. Das verursacht in der Praxis keine Probleme.
Es wird empfohlen, den wiederholbaren Triggermodus zu verwenden.
In vielen realen Szenarien:
Wie man eine Zeitverzögerung verwendet
Wenn kein Mensch erkannt wird, wartet das Automatisierungssystem eine bestimmte Zeit, bevor es Maßnahmen ergreift.
Der Bewegungssensor verfügt über einen Zeitverzögerungsregler, mit dem die Zeitverzögerung auf ein Minimum von 3 Sekunden und ein Maximum von 5 Minuten eingestellt werden kann. Darüber hinaus kann der Arduino Nano-Code verwendet werden, um jeden Wert für die Zeitverzögerung festzulegen.
Wenn wir im Code des Arduino Nano kein Timeout festlegen, entspricht dieses Timeout der im Sensor festgelegten Zeitverzögerung.
Wenn im Arduino Nano-Code ein Timeout festgelegt wird, ergibt sich die Summe aus der Zeitverzögerung in der Sensor-Konfiguration und der Zeitverzögerung im Arduino Nano-Code.
Festlegen der Verzögerungszeit im Arduino Nano-Code
Wenn der wiederholbare Auslösemodus aktiviert ist, beträgt die Verzögerung im Code 30 Sekunden zuzüglich time_delay, welche in den Sensoreinstellungen über den Time Delay Adjuster festgelegt wird.
Fordere dich heraus
Verwenden Sie den Bewegungssensor, um eines dieser Projekte durchzuführen:
- Aktiviere das Licht, wenn du dein Zimmer betrittst, und schalte es nach 30 Sekunden deiner Abwesenheit aus. Tipp: Sieh dir Arduino Nano - Relay an.
- Aktiviere einen Alarm, wenn sich jemand deinen wertvollen Besitztümern nähert. Tipp: Sieh dir Arduino Nano - Piezo Buzzer an.