Der Motion-Sensor - AZ-Delivery

Hallo zusammen,

heute wollen wir Ihnen den ersten Beitrag von einem unserer neuen Autoren präsentieren - Jens Feldema.

Jens Feldema wird uns von nun an mit interessanten Projekten begleiten!

Viel Spaß beim Lesen!


Willkommen im Blog über den Motion-Sensor. Da die Bewegungserkennung zu den Grundfunktionen jedes Smart-Home-Systems gehört, möchte ich hier die Verkabelung und Verwendung eines Motion-Sensors anhand eines PIR-Sensors (Pyroelektrischer Sensor) beschreiben.

Motion-Sensor im gedruckten Gehäuse

Benötigte Hardware 

Anzahl Bauteil Anmerkung
1 Breadboard
8 Steckbrücken
1 PIR-Sensor (HC-SR501)
1 NodeMCU LUA Amica
1 5V Micro-USB-Netzteil
1 LED-Leuchtdiode
1 200 Ohm Widerstand

Die Teile 

Schritt 1: Verkabelung

Die Stromversorgung wird am Ende über ein Micro-USB-Kabel der NodeMCU zugeführt. Damit auch die Komponenten mit Strom versorgt und die Signale ausgewertet werden können, starten wir mit der Verkabelung auf dem Breadboard.

Übersicht 

NodeMCU PIR-Sensor LED
Vin Vcc
GND GND -
D7 Output
D8 + +

Zunächst wird der Power-Bus auf dem Breadboard mit der Stromversorgung verbunden. Da der Bewegungsmelder mit 5V betrieben werden möchte, wählen wir Vin (+), an dem wir 5V abfangen können und GND (-).

Stromversorgung des Breadboards

Schritt 2: PIR-Sensor anschließen

Die Beschriftung der Pins des Sensors HC-SR501 findet man unter der Fresnel-Linse, diese lässt sich leicht abziehen. Das Schöne an dem Sensor ist, dass der Ausgangspin in der Mitte nur 3,3V liefert und damit direkt an den kleinen Microcontroller angeschlossen werden kann. Aufpassen muss man bei der Spannungsversorgung, da es verschiedene Ausfertigungen gibt, die sich äußerlich kaum unterscheiden lassen. Schauen Sie deshalb auf die Beschriftung der Platine, die ggf. unterhalb der Fresnel-Linse liegen kann (siehe Bild).

PIR-Sensor Oberseite

Von unten betrachtet sind die Pins in folgender Reihenfolge angeordnet (siehe Bild): GND, Output (3,3V), Vcc (5V-20V).

Unterseite PIR-Sensor
 
Verkabelung PIR-Sensor

Schritt 3: Leuchtdiode anschließen

Bitte beachten: Die Leuchtdiode hat ein längeres (+, Anode) und ein kürzeres (-, Kathode) Bein.

Leuchtdiode

Verkabelung Leuchtdiode

Schritt 5: Funktionstest

Folgende Arduino-Code müssen wir nun auf die NodeMCU hochladen.
Bei erkannter Bewegung wird nun die Leuchtdiode mit Strom versorgt und leuchtet für eine kurze Dauer. Diese Dauer lässt sich am PIR-Sensor über die Potentiometer einstellen (li. Empfindlichkeit, re. Haltedauer des Signals).

Die Software 

INO-Code:
int Status = 13;  // Digital pin D7
int sensor = 14;  // Digital pin D8

void setup() {
  // put your setup code here, to run once:
  Serial.begin(57600);
  pinMode(sensor, INPUT);   // declare sensor as input
  pinMode(Status, OUTPUT);  // declare LED as output
}

void loop() {
  // put your main code here, to run repeatedly:
  long state = digitalRead(sensor);
    if(state == HIGH) {
      digitalWrite (Status, HIGH);
      Serial.println("Motion detected!");
      delay(1000);
    }
    else {
      digitalWrite (Status, LOW);
      Serial.println("Motion absent!");
      delay(1000);
      }

}

Viel Spaß beim Nachbau!

ProduktvorstellungenSensoren

14 Kommentare

Andreas Wolter

Andreas Wolter

@Reinhold Kwauka: Die Pins GND und VCC sind selbsterklärend. Der dritte Pin schaltet HIGH oder LOW, abhängig von der eingestellten Sensibilität und ob etwas detektiert wurde. Es gibt hier im Blogbereich noch den folgenden Beitrag, in dem das etwas genauer beschrieben wird:
https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/dem-weihnachtsmann-auf-der-spur-sensoren-fur-die-uberwachung-des-kaminzimmers

Grüße,
Andreas Wolter
AZ-Delivery Blog

Reinhold Kwauka

Reinhold Kwauka

Hallo,
gibt es irgendwo eine Erklärung bzw. Schaltbild über die einzelnen Pins des Motion Sensor?
Ich benutzte einen ESP32-Wrover ? Es wird zwar gezeigt, wie alles angeschlossen wird, aber vielleicht wäre es besser auch zu wissen, was die einzelnen Pins bedeuten.

Mfg,
Reinhold

Jens Feldema

Jens Feldema

Hallo, vielen Dank für die Kommentare und Hinweise.
Das mit dem Vorwiderstand hat sich durch das vertauschte Bild geklärt. Da das digitalRead nur High/Low zurück gibt ist als Typ auch boolean möglich. Für diesen kleinen Test war es unerheblich, kann aber bei größeren Projekten tatsächlich Speicher sparen.
Bei zukünftigen Projekten werde ich genauer auf Details achten. Zur Abstandsmessung ist ein “Motion-Sensor” leider nicht geeignet.
Gruß
Jens

Bernd Albrecht

Bernd Albrecht

Vielen Dank für die vielen Hinweise zum fehlenden Vorwiderstand auf dem Bild. Den Vorschlag für eine QS = Qualitätssicherung (engl. QA=quality assurance) haben wir tatsächlich schon seit drei Monaten bei den Blog-Beiträgen realisiert. Bei dem „Erstlingswerk“ unseres neuen Bloggers wurde der fehlende Vorwiderstand beanstandet, es wurde nachgebessert, aber auf der Zielgeraden vor der Veröffentlichung wurde das letzte Bild nicht ausgetauscht. Hier arbeiten Menschen. Aber wir werden besser. Versprochen!

Jürgen

Jürgen

Anmerkung zu Volvo: Abstandsmessung mit HC-SR501, ist “nicht so gedacht”.
Angegeben ist der Messbereich mit bis zu 7m bei 120Grad Winkel, aber das Messfeld sieht aus wie eine “Keule”. Rechts und links, vorn und hinten (oder oben/unten- je nach Einbaurichtung) ist er unempfindlicher.
Empfindlichkeit kann man wohl am Poti etwas einstellen.
Aber ausgewertet wird, ob sich der Messwert zwischen den Messungen ändert. Bleibe ich still stehen, “sieht” er mich nicht, auch nicht bei 30cm Abstand. Gehe ich nach 15 Min. seitlich weg, erkennt er eine Bewegung, und gibt Laut. Gehe ich gerade von dem Senor weg, erkennt er es auch nicht “so richtig gut”. Das alles wird durch die Linsenform beeinflusst.
Für die Kontaktzeit wäre er also bedingt (=ungenau) geeignet.
Bewegt sich der Sensor selbst, werden viele Wärmequellen erkannt, die sich bewegen. Das ist ihm zu aufregend, und dann wird er schüchtern und sagt nichts.
Ein HC-SR04 (UltraSchallmessung) kann aber Abstände bis ca. 4m sehr genau messen. Der ist aber mit seinem Messwinket “sehr schmal” und darum weiss man nicht wo der gerade “Mist”.
Wenn da eine Wand ist, ist das eine genaue Messung wert. Eine Person die vor der Wand steht, kann er nicht erkennen, sondern nur einen anderen Abstand messen.
Beide Sensoren können helfen, aber es fehlt noch die eindeutige Personenerkennung…

DigiPit

DigiPit

Echt jetzt? Eine LED ohne Vorwiderstand an D8? Die Leuchtet dann kurz sehr hell, brennt durch und nimmt die NodeMCU gleich mit ins Nirvana. Dank AZ-Delivery kann man ja schnell wieder eine nachbestellen. Ein Einsteiger wirft seine Bastelkiste so ziemlich schnell zum Elektroschrott.
Ist zwar toll, dass es bei AZ so viele interessante Blog-Beiträge und eBooks gibt, jedoch sind die meissten so voll mit teilweise groben Fehlern. Wo bleibt die QS????

Juergen

Juergen

In der Hardwareliste ist ein 200Ohm Widerstand.
Auf den Bildern sehe ich den nicht. Um den Strom zu begrenzen, der im LED und am ESP32 fließt, wäre der in der Schaltung gut.
Typische LEDs aus der Bastelkiste nehmen 2mA bis 20mA auf. Bei 3,3V wären 820 Ohm (z.B. für kleine rote LEDs) bis 82 Ohm (große LED) als Vorwiederstand vorteilhaft. Sollte es ohne Strombegrenzung doch gut gehen … ok.
Sonst…. immer die dreier Packs ESP32 kaufen ;-)
Und dann den Block lesen “Elektrizitätslehre für Elektroniker Teil 1”. Da steht, dass ein ESP GPIO ca 15mA ( 0,015A) kann. Das gezeigte grüne LED kann evtl. mit 10mA aus kommen, möchte aber nur ca. 2V.
(Hier könnte ein 100 Pack LEDS im Produktportfolio aufgenommen werden ;-)
Für die Berechnung des Vorwiderstandes gibt auch einen guten Block (einfach “LED” in der Suche eingeben).
Oder testen, testen, testen.
Noch ein Praxis Tip: Immer eine Hand am Strom Stecker, und mit der anderen die Wärmeentwicklung an den Bauteilen prüfen.
Mindestens 10 Minuten lang, sollte kein Bauteil sehr warm werden!
Dann ist die Schaltung “gut berechnet” und und hält evtl. auch 15 Minuten.
Strom und Satiere passen nicht immer zusammen, bei beiden kann aber ein Funke überspringen.

RAINBOW

RAINBOW

Danke!

Pit Gutzmann

Pit Gutzmann

Warum wird der Status als Variable vom Typ LONG deklariert? BOOL würde doch reichen, oder?

Armin

Armin

Warum ist die Variable state ein “long”, würde da nicht auch ein “bool” reichen?

Otto-Christian Zeides

Otto-Christian Zeides

Sehr anschaulich beschrieben. Leider sind die Pins D7/8vertauscht, oder passen nicht zum Programm.

Volov

Volov

Die Erklärung ist sehr plausibel. Wie ich verstehe erkennt der Bewegungsmelder die eine Änderung der Infrarotwärme in einem Raum. Ich habe Interesse an solche Sensoren, um ein Gerät für Abstandskontrolle 2 m bei Corona Pandemie zu bauen. Wie ich bei meinen Testen der Bewegungsmeldersensoren festgestellt habe erkennen diese Sensoren die Menschen wenn die Sensoren stationär installiert sind. Wenn zum Beispiel ein Bewegungsmelder auf einem mobilen Objekt installiert wird funktioniert der Sensor nicht korrekt.

J.-P. Paulsen

J.-P. Paulsen

Der 200 Ohm Widerstand aus der Materialliste erschließt sich mit nicht ;-))

Matthias

Matthias

Danke für den Beitrag. Aber da wäre natürlich noch die Sache mit dem Widerstand, der ja noch vor die LED gehört und auch in eurer Teileliste aufgeführt ist…

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery