ESP8266ESP8266 - Einführung

Bewegungen erkennen

In diesem Artikel zeige ich Dir, wie Du mit dem ESP8266 auf Bewegungen reagieren kannst. Mit dem Modul „HC-SR501“ können einfach Bewegungen erkannt werden. Über zusätzliche Einstellungen am Modul kann die Dauer die Ausgabe sowie die Sensibilität eingestellt werden.


Im ersten Schritt hier eine Liste der benötigten Materialien:

Für den Versuchsaufbau habe ich zudem Breadboard sowie Jumper-Kabel eingesetzt. Ich denke diese sind aber mittlerweile bei jedem Leser vorhanden 😉

Bevor wir mit dem Aufbau der Schaltung beginnen können, schauen wir uns das Bewegungsmodul genauer an.

Mit dem linken Regler (Poti) kann die Dauer des Ausgangssignals festgelegt werden. Mit dem rechten Regler wird die Sensibilität definiert. Zudem verfügt das Modul über einen Jumper, mit dem die Verarbeitung des Ausgangssignales umgestellt werden kann.

Die Kunststoffabdeckung des PIR-Sensors ist nur leicht aufgesteckt, für die Pin-Belegung kann sie abgenommen werden. Nach dem wir die Abdeckung entfernt haben, sehen wir nun die Belegung des Sensors. VCC geht zu unseren 5V-Plus Anschluss am Board (Bei mir VIN, da das Board über USB betrieben wird). OUT ist die digitale Ausgangsleitung, welche wir mit dem D7-Pin des ESP-Boards verbinden. GND verbinden wir mit dem GND-Pin auf dem Board.

Im nächsten Schritt schließen wir noch die Status-LED an. Hier setzen wir den Plus-Pol der LED direkt an den Pin D8 und den Minus-Pin der LED ebenfalls an GND des Boards.

 

Foto der Schaltung

Sketch des Bewegungsmelders

Im Sketch definieren wir zunächst als Konstante der Pins, welche wir die LED sowie den Bewegungsmelder einsetzen. In der Setup-Methode wird die serielle Schnittstelle sowie der Pin-Mode der verwendeten Pins definiert. In der Loop-Methode lesen wir nun das digitale Signal des Bewegungsmelders und prüfen auf HIGH (Bewegung erkannt) oder LOW (keine Bewegung erkannt) und setzen entsprechend die LED auf HIGH oder LOW (einschalten oder ausschalten).

const int pinBewegungsmelder = D7;
const int pinStatusLED = D8;

void setup() {
  Serial.begin(9600);
  pinMode(pinBewegungsmelder, INPUT);
  pinMode(pinStatusLED, OUTPUT);
}

void loop() {
  int bewegungsstatus=digitalRead(pinBewegungsmelder);

  if (bewegungsstatus == HIGH)
  {
    Serial.println("Bewegung erkannt");
    digitalWrite(pinStatusLED,HIGH);
  }
  else
  {
    Serial.println("Keine Bewegung erkannt");
    digitalWrite(pinStatusLED,LOW);
  }  

  delay(1000);
}

Ich hoffe Dir gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

4 Gedanken zu „Bewegungen erkennen

  • Ulrich Engel

    Hallo,
    gibt es eine Möglichkeit den Bewegungsstatus „Bewegung erkannt“ auch über das Internet zu schicken, so dass ich auch ausserhalb der Wohnung im Internet-Browser über eine Wegseite diesen Status mir anzeigen lassen kann?

    Antwort
    • Matthias Korte

      Hallo Ulrich,
      da gibt es viele Möglichkeiten. Du könntest z.B. den Status in ioBroker via MQTT auffangen und dann entsprechend drauf reagieren. Z.B. eine Benachrichtigung versenden, etc.

      Antwort
  • Hichem

    Hallo
    Kann man in Fall einer Bewegung eine große Last mit Relais schalten ?
    Gruß

    Antwort
  • Markus

    Das klingt genau nach dem was ich möchte.
    wie sieht denn der code aus für die Wifi-Eibindung und dem MQTT-client?

    Antwort

Schreibe einen Kommentar zu Ulrich Engel Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.