Raspberry Pi - Bewegungsmelder

Haben Sie sich jemals gefragt, "Wie kann das funktionieren?" wenn Sie auf Orte mit automatischen Türen, Lichtern und Rolltreppen stoßen? Falls ja, wird dieses Tutorial nicht nur Ihre Frage beantworten, sondern Ihnen auch zeigen, wie Sie es mit Raspberry Pi und Bewegungsmelder verwirklichen können. Lassen Sie uns anfangen!

Dieses Tutorial zeigt Ihnen, wie Sie Raspberry Pi mit Bewegungsmelder verwenden. Im Detail werden wir lernen:

Hardware erforderlich

1×Raspberry Pi 5
1×HC-SR501 Bewegungsmelder
1×Jumper Kabel
1×(Empfohlen) Schraubklemmenblock-Shield für Raspberry Pi
1×(Empfohlen) Raspberry Pi Prototyping-Grundplatte & Breadboard-Kit
1×(Empfohlen) HDMI-Touchscreen-Monitor für Raspberry Pi

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

HC-SR501 Motion Sensor

Der HC-SR501 PIR-Sensor kann die Bewegung von Menschen (oder Tieren) erkennen. Er wird weitverbreitet in verschiedenen Anwendungen eingesetzt, wie automatisches Ein-/Ausschalten von Glühbirnen, Öffnen/Schließen von Türen, Aktivieren/Deaktivieren von Rolltreppen und Erkennen von Eindringlingen.

Der Bewegungsmelder Pinout

Der HC-SR501 Bewegungsmelder hat 3 Pins:

  • GND-Pin: muss mit GND (0V) verbunden werden
  • VCC-Pin: muss mit VCC (5V) verbunden werden
  • OUTPUT-Pin: ist ein Ausgangs-Pin, der LOW ist, wenn keine Bewegung erkannt wird und HIGH, wenn Bewegung erkannt wird. Dieser Pin sollte mit einem Eingangs-Pin des Raspberry Pi verbunden werden.

Der HC-SR501 hat einen Jumper und zwei Potentiometer. Diese werden verwendet, um die Einstellungen des Sensors anzupassen.

HC-SR501 Motion Sensor pinout

Wie es funktioniert

Der HC-SR501 Sensor kann Bewegung basierend auf Änderungen der Infrarotstrahlung erkennen, die von einem sich bewegenden Objekt ausgestrahlt wird. Um vom HC-SR501 Sensor erkannt zu werden, muss das Objekt zwei Kriterien erfüllen:

  • Es muss sich bewegen oder vibrieren.
  • Es muss Infrarotlicht ausstrahlen.

Somit:

  • Wenn sich ein Objekt bewegt, aber keine Infrarotstrahlen aussendet (z.B. ein Roboter oder Fahrzeugspielzeug), wird es nicht vom Sensor erkannt.
  • Wenn ein Objekt Infrarotstrahlen aussendet, sich aber nicht bewegt (z.B. eine stillstehende Person), wird es nicht vom Sensor erkannt.

Menschen und Tiere sind Quellen von Infrarotstrahlung. Folglich kann der Sensor ihre Bewegungen erkennen.

Zustand des OUTPUT-Pins:

  • Wenn kein Mensch (oder Tier) im Erkennungsbereich des Sensors vorhanden ist, ist der OUTPUT-Pin LOW.
  • Wenn ein Mensch (oder Tier) in den Erkennungsbereich des Sensors eintritt, wechselt der OUTPUT-Pin von LOW zu HIGH und zeigt an, dass Bewegung erkannt wurde.
  • Wenn der Mensch (oder das Tier) den Erkennungsbereich des Sensors verlässt, wechselt der OUTPUT-Pin von HIGH zu LOW und zeigt an, dass die Bewegung beendet ist.

Das obige Video zeigt, wie der Bewegungsmelder theoretisch funktioniert. In der Realität funktioniert der Bewegungsmelder etwas anders, abhängig von den Sensor-Einstellungen (die im Abschnitt Erweiterte Verwendung besprochen werden).

Erkennung der Anwesenheit von Menschen

Der Sensor erkennt nicht die Anwesenheit von Menschen. Er erkennt nur Bewegung. Wir verwenden einen Raspberry Pi, um die Anwesenheit von Menschen basierend auf der vom Sensor erkannten Bewegung zu schließen, nach diesem Prinzip:

  • Wenn Bewegung beobachtet wird, dann sind Menschen anwesend.
  • Wenn keine Bewegung erkannt wird, dann sind keine Menschen anwesend.

Diese Regel ist in praktischen Szenarien unvollkommen: Wenn Menschen im Bereich des Sensors sind, sich aber nicht bewegen, wird keine Bewegung erkannt. Folglich schließt der Raspberry Pi, dass kein Mensch anwesend ist.

Zum Beispiel wird in Ihrem Besprechungsraum der Bewegungsmelder verwendet, um das Licht ein- und auszuschalten. Wenn Menschen den Raum betreten, wird das Licht automatisch aktiviert. Wenn alle während der Besprechung stillsitzen, wird keine Bewegung erkannt, was anzeigt, dass niemand anwesend ist, somit wird das Licht ausgeschaltet. Um das Licht wieder einzuschalten, muss sich jemand bewegen.

Dieses Problem ist jedoch NICHT schwerwiegend und der Sensor ist kostengünstig. Daher wird er weit verbreitet zur Erkennung von Menschen in vielen Anwendungen verwendet.

Raspberry Pi - HC-SR501 Bewegungsmelder

Verbinden Sie einen digitalen Eingangs-Pin des Raspberry Pi mit dem OUTPUT-Pin des HC-SR501 Sensors. Mit dem Raspberry Pi Code können wir den Wert des OUTPUT-Pins überprüfen, um Bewegung zu erkennen.

Verdrahtungsdiagramm

Raspberry Pi Motion Sensor wiring diagram

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

Um Ihren Verdrahtungsaufbau zu vereinfachen und zu organisieren, empfehlen wir die Verwendung eines Schraubklemmenblock-Shields für Raspberry Pi. Dieses Shield gewährleistet sicherere und besser verwaltbare Verbindungen, wie unten gezeigt:

Raspberry Pi Schraubklemmenblock-Shield

Grundeinstellung

Zeitverzögerungs-EinstellerDrehen Sie ihn vollständig gegen den Uhrzeigersinn.
Erkennungsbereich-EinstellerDrehen Sie ihn vollständig im Uhrzeigersinn.
Wiederholungsauslöser-AuswahlSetzen Sie den Jumper wie im Bild gezeigt.
arduino motion sensor initial setting

Wie man für Bewegungsmelder programmiert

  • Richten Sie einen digitalen Eingang an einem Pin des Raspberry Pi ein, indem Sie die GPIO.setup() Funktion verwenden.
GPIO.setup(PIR_PIN, GPIO.IN)
  • Greifen Sie auf den OUTPUT-Pin des Sensors zu, indem Sie die GPIO.input() Funktion verwenden.
pir_value = GPIO.input(PIR_PIN)

Raspberry Pi Code - Bewegungszustand ausgeben

Schnelle Schritte

  • Stellen Sie sicher, dass Sie Raspbian oder ein anderes Raspberry Pi-kompatibles Betriebssystem auf Ihrem Pi installiert haben.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit demselben lokalen Netzwerk wie Ihr PC verbunden ist.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, wenn Sie einige Bibliotheken installieren müssen.
  • Wenn Sie den Raspberry Pi zum ersten Mal verwenden, siehe wie Sie den Raspberry Pi einrichten
  • Verbinden Sie Ihren PC über SSH mit dem Raspberry Pi, indem Sie den eingebauten SSH-Client auf Linux und macOS oder PuTTY auf Windows verwenden. Siehe wie Sie Ihren PC über SSH mit dem Raspberry Pi verbinden.
  • Stellen Sie sicher, dass Sie die RPi.GPIO Bibliothek installiert haben. Falls nicht, installieren Sie sie mit folgendem Befehl:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Erstellen Sie eine Python-Script-Datei motion_sensor.py und fügen Sie den folgenden Code hinzu:
# Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi 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/raspberry-pi/raspberry-pi-motion-sensor import RPi.GPIO as GPIO import time # Set the GPIO mode and HC-SR501 PIR motion sensor pin GPIO.setmode(GPIO.BCM) PIR_PIN = 12 GPIO.setup(PIR_PIN, GPIO.IN) try: while True: # Read the HC-SR501 PIR motion sensor value pir_value = GPIO.input(PIR_PIN) # PIR output is high when motion is detected if pir_value == GPIO.HIGH: print("Motion detected!") else: print("No motion detected.") time.sleep(0.1) except KeyboardInterrupt: print("Exiting...") GPIO.cleanup()
  • Speichern Sie die Datei und führen Sie das Python-Script aus, indem Sie den folgenden Befehl im Terminal eingeben:
python3 motion_sensor.py
  • Bewegen Sie Ihre Hand vor dem Erfassungsbereich des Sensors.
  • Überprüfen Sie die Ausgabe im Terminal.
PuTTY - Raspberry Pi
No motion detected. No motion detected. No motion detected. Motion detected! Motion detected! Motion detected! Motion detected!

Das Script läuft in einer Endlosschleife kontinuierlich, bis Sie Ctrl + C im Terminal drücken.

Der obige Code überprüft kontinuierlich den Bewegungszustand und gibt ihn aus. In bestimmten Fällen möchten Sie möglicherweise bei der Erkennung einer Änderung im Bewegungszustand etwas ausgeben oder eine Aktion ausführen. Wenn ein solches Szenario eintritt, schauen Sie sich den nächsten Abschnitt an.

Raspberry Pi Code - Erkennt Bewegungszustandsänderungen

  • Erstellen Sie eine Python-Script-Datei motion_sensor_events.py und fügen Sie den folgenden Code hinzu:
# Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi 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/raspberry-pi/raspberry-pi-motion-sensor import RPi.GPIO as GPIO import time # Set the GPIO mode and HC-SR501 PIR motion sensor pin GPIO.setmode(GPIO.BCM) PIR_PIN = 12 GPIO.setup(PIR_PIN, GPIO.IN) # Initialize variables to keep track of previous and current states prev_pir_value = GPIO.LOW pir_value = GPIO.LOW try: while True: # Read the HC-SR501 PIR motion sensor value pir_value = GPIO.input(PIR_PIN) # Check for change event (motion started or stopped) if pir_value != prev_pir_value: if pir_value == GPIO.HIGH: print("Motion started!") else: print("Motion stopped!") # Update the previous value with the current value prev_pir_value = pir_value time.sleep(0.1) except KeyboardInterrupt: print("Exiting...") GPIO.cleanup()
  • Speichern Sie die Datei und führen Sie das Python-Script aus, indem Sie den folgenden Befehl im Terminal eingeben:
python3 motion_sensor_events.py
  • Bewegen Sie Ihre Hand vor dem Erfassungsbereich des Sensors.
  • Überprüfen Sie die Ausgabe im Terminal.
PuTTY - Raspberry Pi
Motion started! Motion stopped!

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 Verwendung

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.

Wie bereits erwähnt, können ein Jumper und zwei Potentiometer verwendet werden, um die Konfiguration des Sensors zu ändern.

Erkennungsbereich-Einsteller

Dieses Potentiometer wird verwendet, um zu ändern, wie weit etwas erkannt werden kann (zwischen etwa 3 bis 7 Metern).

  • Wenn Sie es ganz nach rechts drehen, erkennt es Dinge bis zu etwa 3 Metern Entfernung.
  • Wenn Sie es ganz nach links drehen, erkennt es Dinge bis zu etwa 7 Metern Entfernung.
Motion Sensor Detection Range

Zeitverzögerungs-Einsteller

Dieses Potentiometer wird verwendet, um die Zeitverzögerung zu ändern:

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

Der nächste Teil erläutert das Konzept der Zeitverzögerung in Bezug auf Wiederholungsauslösung.

motion sensor adjust time delay

Wiederholungsauslöser-Auswahl

Es existiert ein Jumper, der verwendet wird, um Auslösemodi zu wählen: Einzelauslösung oder wiederholbare Auslösung.

motion sensor trigger selection

Nennen wir die Zeitverzögerungseinstellung, die über den Zeitverzögerungs-Einsteller eingestellt wird, time_delay. Wenn Sie sich lange Zeit im Bereich des Sensors bewegen (genannt motion_time, was mehrmals länger ist als time_delay), dann wird im Einzelauslösemodus der Zustand des OUTPUT-Pins mehrmals zwischen LOW und HIGH wechseln. Die HIGH-Dauer entspricht time_delay, während die LOW-Dauer fest auf 3 Sekunden eingestellt ist.

motion sensor single trigger mode
  • Wiederholbarer Auslösemodus: Der Zustand des OUTPUT-Pins bleibt HIGH für eine Periode von (motion_time + time_delay).
motion sensor repeatable trigger mode

Testen

  • Einzelauslösemodus:
    • Setzen Sie den Jumper, um den Einzelauslösemodus zu wählen
    • Winken Sie mit Ihrer Hand vor dem Sensor für etwa 10 Sekunden
    • Bewegen Sie Ihre Hand vom Sensor weg
    • Warten Sie 3 Sekunden und Sie werden die Ausgabe im Terminal wie folgt beobachten:
    PuTTY - Raspberry Pi
    Motion started! Motion stopped! Motion started! Motion stopped! Motion started! Motion stopped!

    Wiederholbarer Auslösemodus:

    • Setzen Sie den Jumper, um den wiederholbaren Auslösemodus zu wählen
    • Bewegen Sie Ihre Hand vor dem Sensor für etwa 10 Sekunden
    • Entfernen Sie Ihre Hand aus dem Erfassungsbereich des Sensors
    • Warten Sie 3 Sekunden und Sie werden die Ausgabe im Terminal wie folgt beobachten:
    PuTTY - Raspberry Pi
    Motion started! Motion stopped!

    Wir können beobachten, dass im Einzelauslösemodus der Sensor zwei- oder dreimal aktiviert wird. Während im wiederholbaren Auslösemodus der Sensor nur einmal auslöst.

    ※ Notiz:

    Während der LOW-Zeit (3 Sekunden), die ein fester und nicht einstellbarer Wert ist, kann der Sensor keine Bewegung erkennen. Mit anderen Worten, er ist für diesen Zeitraum blockiert, aber dies verursacht keine Probleme.

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

    Für viele reale Anwendungen:

    • Wir schalten Maschinen/Geräte ein oder aktivieren sie, wenn eine Person anwesend ist
    • Wir schalten Maschinen/Geräte nicht sofort aus oder deaktivieren sie, wenn eine Person nicht mehr anwesend ist. Wir schalten sie aus oder deaktivieren sie nach einer Zeitüberschreitung.

    Wie man Zeitverzögerung verwendet

    Wenn kein Mensch erkannt wird, wartet das Automatisierungssystem für eine bestimmte Zeit, bevor es eine Aktion ausführt.

    Der Bewegungsmelder hat einen Zeitverzögerungs-Einsteller, der auf mindestens 3 Sekunden und maximal 5 Minuten eingestellt werden kann. Zusätzlich kann jeder Wert im Raspberry Pi Code durch Programmierung eingestellt werden.

    Wenn wir keine Zeitüberschreitung im Raspberry Pi Code angeben, entspricht die Zeitüberschreitung der im Sensor eingestellten Zeitverzögerung.

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