Skip to Content

Wie man ein bewegungsaktiviertes Nachtlicht baut

Wie man ein bewegungsaktiviertes Nachtlicht baut

In diesem Tutorial lernen wir, wie man eine bewegungsaktivierte, batteriebetriebene Nachtlampe mit einem ESP32 lite und einem PIR (Passiv-Infrarot) Sensor baut. Dieses Projekt ist perfekt, um Ihrem Zuhause oder Arbeitsplatz eine Prise Automatisierung zu verleihen und eine praktische sowie energieeffiziente Beleuchtungslösung zu schaffen.

Durch die Verwendung eines PIR-Sensors schaltet sich unsere Nachtlampe nur ein, wenn sie Bewegung in ihrer Nähe erkennt, sodass sie ausgeschaltet bleibt, wenn sie nicht benötigt wird. Diese Funktion spart nicht nur Batterielebensdauer, sondern erhöht auch die Sicherheit, indem sie Sie auf Bewegungen im Bereich aufmerksam macht. Zusätzlich nutzen wir den Deep-Sleep-Modus des ESP32, um noch mehr Energie zu sparen.

Um sicherzustellen, dass die Nachtlampe nur nachts aktiv ist, fügen wir außerdem einen Fotowiderstand oder LDR hinzu, um die Umgebungslichtverhältnisse zu erkennen.

In diesem Tutorial bauen wir zwei Nachtlampen: eine sehr einfache und eine etwas fortgeschrittenere. Letztere wird in einen Schädel integriert, was sie zu einem tollen Geschenk oder Demonstrationsobjekt macht.

Für dieses Projekt benötigen wir einige wichtige Komponenten, die wir im nächsten Abschnitt besprechen. Keine Sorge, wenn Sie neu bei Arduino oder Elektronik sind – dieses Tutorial ist anfängerfreundlich und wir führen Sie durch jeden Schritt.

Also, legen wir los!

Benötigte Teile

Nachfolgend finden Sie die Komponenten, die für das Projekt benötigt werden. Für dieses Projekt verwende ich ein älteres ESP32-Board, das zwar veraltet ist, aber noch sehr günstig erhältlich ist. Dieses ist unten aufgeführt. Es gibt ein Nachfolgemodell mit verbesserten Spezifikationen, das Sie finden können here.

Schließlich haben alle 903052 LiPo-Akkus, die ich finden konnte, den falschen Anschluss. Sie müssen den Stecker abschneiden und durch einen 2,0 mm JST PH 2-poligen Stecker ersetzen. Ich mag jedoch die Form dieser Akkus, da sie fast die gleichen Abmessungen wie das ESP32-Board haben.

ESP32 lite Lolin32

ESP32 lite

USB data cable

USB-Datenkabel

Dupont wire set

Dupont-Kabelset

Half_breadboard56a

Breadboard

Widerstands- & LED-Kit

Bewegungssensor

Fotowiderstands-Set

1200mAh Akku

Schädel

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Licht- und PIR-Sensoren

Um eine bewegungsaktivierte Nachtlampe zu bauen, müssen wir zuerst die beiden Hauptkomponenten verstehen: den Lichtsensor und den PIR (Passiv-Infrarot) Bewegungssensor.

Lichtsensor

Ein Lichtsensor, auch Fotowiderstand oder LDR (Light Dependent Resistor) genannt, erkennt die Umgebungshelligkeit. Er funktioniert, indem er seinen Widerstand je nach Lichtintensität ändert. Bei hellem Licht sinkt der Widerstand, bei Dunkelheit steigt er.

LDR photoresistior
LDR/Fotowiderstand

Für unsere Nachtlampe bestimmt der Lichtsensor, ob das Licht ein- oder ausgeschaltet wird, basierend auf den Umgebungslichtverhältnissen. Wenn die Umgebungshelligkeit unter einen bestimmten Schwellenwert fällt, also Dunkelheit herrscht, aktiviert der Lichtsensor das Ausgangssignal des PIR-Sensors und erlaubt so das Einschalten der Nachtlampe.

PIR-Sensor

Der PIR-Sensor ist ein Bewegungssensor, der Änderungen der Infrarotstrahlung von Objekten in seinem Sichtfeld erkennt. Er besteht aus einem pyroelektrischen Sensor, der eine Spannung erzeugt, wenn er Infrarotstrahlung ausgesetzt ist. PIR-Sensoren werden häufig in Sicherheitssystemen, automatischer Beleuchtung und anderen Anwendungen mit Bewegungsdetektion eingesetzt.

Sie werden feststellen, dass es drei gängige PIR-Bewegungsmodule gibt. Das große HC-SR501, das mittelgroße HC-SR505 und das kleine AM312, das wir hier verwenden. Alle funktionieren, aber da wir die Nachtlampe in einen Schädel integrieren wollen, nehmen wir das kleinste. Der AM312 scheint auch den lowest power consumption (8uA) zu haben, obwohl ich das nicht selbst gemessen habe.

PIR motion sensor AM312
PIR-Bewegungssensor AM312

Für mehr Details zum HC-SR501 Sensor oder Bewegungssensoren allgemein siehe unser Tutorial HC-SR501 PIR Motion Sensor Arduino Tutorial (3 Examples).

Wenn der PIR-Sensor Bewegung in seinem Bereich erkennt, sendet er ein Signal an den Mikrocontroller, das anzeigt, dass Bewegung erkannt wurde. In unserem Nachtlampenprojekt wird der PIR-Sensor verwendet, um das Licht einzuschalten, wenn Bewegung erkannt wird, und nach einer festgelegten Zeit wieder auszuschalten.

Im nächsten Abschnitt besprechen wir die Basisschaltung, die wir verwenden, um Bewegung bei Nacht zu erkennen.

Schaltplan der Basisschaltung

Die einfachste Lösung zur Bewegungserkennung bei Nacht wäre, den Bewegungssensor (PIR) an einen Eingangspin des ESP32 und den Lichtsensor (LDR) an einen anderen Pin anzuschließen. Wenn wir dann ein HIGH-Signal vom PIR-Sensor erkennen, könnten wir den Lichtpegel über den LDR auslesen und das Licht ein- oder ausschalten.

Das würde funktionieren, hat aber den Nachteil, dass wir den ESP32 jedes Mal aus dem Deep-Sleep wecken müssen, wenn Bewegung erkannt wird (unabhängig vom Umgebungslicht). Das würde Batterieenergie verschwenden, da es keinen Sinn macht, auf Bewegung zu reagieren, wenn es hell ist, denn wir wollen eine Nachtlampe.

Eine Lösung ist, das HIGH-Signal vom Bewegungssensor nur dann an den ESP32 zu senden, wenn es dunkel ist. Das erreichen wir mit folgender Schaltung.

Base circuit for motion activated night light sensor
Basisschaltung für bewegungsaktivierte Nachtlampe

Der PIR-Sensor sendet sein Signal vom DATA-Pin an Pin 4 des ESP32. Wir fügen jedoch den LDR als Pull-Down-Widerstand hinzu, der das Signal des Bewegungssensors bei Helligkeit auf LOW zieht. Da der Widerstand des LDR bei Dunkelheit sehr hoch ist, kommt das PIR-Signal durch. Bei Helligkeit ist der LDR-Widerstand niedrig und der DATA-Ausgang wird praktisch auf Masse (GND) gezogen, sodass Pin 4 am ESP32 ein LOW-Signal liest.

Wenn Sie mehr Details zur Lichtdetektion mit einem LDR benötigen, schauen Sie sich unser Tutorial How to detect light using an Arduino.

Im folgenden Abschnitt zeige ich Ihnen, wie Sie diese Schaltung nutzen, um eine einfache Nachtlampe zu bauen.

Bau einer einfachen Nachtlampe

In diesem Abschnitt bauen wir eine einfache Nachtlampe, die eine LED einschaltet, wenn bei Dunkelheit Bewegung erkannt wird.

Schaltung für eine einfache Nachtlampe

Nachfolgend finden Sie die Schaltung für diese Nachtlampe. Sie besteht aus dem AM312 Bewegungssensor (PIR), dem Fotowiderstand (LDR) zur Messung des Umgebungslichts und einer LED mit einem Vorwiderstand.

Wir verbinden die Stromversorgung des Bewegungssensors und dessen Ausgang mit Pin 4 des ESP32. Danach schließen wir den LDR an den Ausgang des PIR und an Masse an. Schließlich fügen wir die LED hinzu, die über Pin 16 des ESP32 gesteuert wird.

Circuit for a simple night light
Schaltung für eine einfache Nachtlampe

Die detaillierte Verdrahtungstabelle finden Sie hier.

Von Pin Kabel-Farbe Zu Pin
ESP32 3,3V Rot Breadboard Positive Schiene
ESP32 GND Blau Breadboard Negative Schiene
PIR GND Blau Breadboard Negative Schiene
PIR VIN Rot Breadboard Positive Schiene
PIR Out/Signal Gelb Breadboard LDR
Breadboard LDR Gelb ESP32 4
ESP32 16 Orange Widerstand Beliebig
Widerstand Beliebig LED Anode (langer Pin)
LED Kathode (kurzer Pin) Blau Breadboard Negative Schiene

Nun zum Code.

Code für eine einfache Nachtlampe

Die gute Nachricht ist, dass Sie nur sehr wenig Code schreiben müssen, um die Nachtlampe zu steuern. Siehe unten.

Zuerst definieren wir zwei Konstanten für die Pins, an die der Bewegungssensor (PIR_PIN) und die LED (LED_PIN) angeschlossen sind. In der setup() Funktion setzen wir den PIR_PIN auf Eingabemodus, da wir von ihm lesen. Und den LED_PIN setzen wir auf Ausgabemodus, da wir darauf schreiben.

#define PIR_PIN GPIO_NUM_4
#define LED_PIN GPIO_NUM_16

void setup() {
  pinMode(PIR_PIN, INPUT);  
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  esp_sleep_enable_ext0_wakeup(PIR_PIN, 1);   
  digitalWrite(LED_PIN1, HIGH);
  delay(5000);
  esp_deep_sleep_start();  
}

In der loop() Funktion wollen wir den ESP32 in den Deep-Sleep-Modus versetzen, ihn bei Bewegungserkennung aufwecken und dann die LED für kurze Zeit einschalten. Dazu geben wir zuerst an, welcher Pin das Aufwachen über esp_sleep_enable_ext0_wakeup(PIR_PIN, 1) ermöglicht. Wenn der PIR_PIN auf HIGH (=1) geht, wecken wir den ESP32 auf.

Beachten Sie, dass nicht jeder Pin als Wake-Up-Quelle verwendet werden kann. Unterstützt werden nur die Pins: 0, 2, 4, 12-15, 25-27, 32-39.

Jedes Mal, wenn wir aufwachen, schalten wir die LED über digitalWrite ein, lassen sie 5 Sekunden (5000 ms) mit delay aktiv und gehen dann mit esp_deep_sleep_start() zurück in den Deep-Sleep.

Wie Sie sehen, ist der Code sehr einfach. Die Nutzung von Deep-Sleep spart enorm viel Batterie und ermöglicht es uns, die Nachtlampe viel länger zu betreiben.

Jetzt haben Sie eine sehr einfache Nachtlampe. Im nächsten Abschnitt erhöhen wir die Helligkeit und fügen einen Dimm-Effekt hinzu, um sie interessanter zu machen.

Bau einer helleren, dimmenden Nachtlampe

In diesem Abschnitt fügen wir eine zweite LED hinzu, um die Nachtlampe heller zu machen, und reduzieren die Helligkeit langsam über die Zeit. Das gibt eine Warnung, dass das Licht bald ausgeht.

Schaltung für eine hellere, dimmende Nachtlampe

Die Schaltung ist im Wesentlichen die gleiche wie zuvor. Wir fügen nur eine zweite LED hinzu, die über Pin 17 des ESP32 gesteuert wird. Wir wählen einen weiteren Ausgang, um den Pin nicht zu überlasten. Der ESP32 liefert problemlos 20 mA an seinen Ausgängen, was für eine einzelne LED ausreichend ist. Mehrere LEDs an einem Pin würden zu hohem Strom führen! Also verwenden wir entweder einen weiteren Pin oder einen Transistor zur Steuerung mehrerer LEDs. Da wir viele Pins frei haben, wählen wir die einfachere Lösung und nutzen einfach einen zusätzlichen Pin.

Circuit for a brighter, dimming night light
Schaltung für eine hellere, dimmende Nachtlampe

Nachfolgend finden Sie die vollständige Verdrahtungstabelle

Von Pin Kabel-Farbe Zu Pin
ESP32 3,3V Rot Breadboard Positive Schiene
ESP32 GND Blau Breadboard Negative Schiene
PIR GND Blau Breadboard Negative Schiene
PIR VIN Rot Breadboard Positive Schiene
PIR Out/Signal Gelb Breadboard LDR
Breadboard LDR Gelb ESP32 4
ESP32 16 Orange Widerstand Beliebig
Widerstand Beliebig LED1 Anode (langer Pin)
LED1 Kathode (kurzer Pin) Blau Breadboard Negative Schiene
ESP32 17 Grün Widerstand Beliebig
Widerstand Beliebig LED2 Anode (langer Pin)
LED2 Kathode (kurzer Pin) Blau Breadboard Negative Schiene

Der Code für diese Nachtlampe ist eine kleine Erweiterung des vorherigen Codes. Wir besprechen ihn im nächsten Abschnitt.

Code für eine hellere, dimmende Nachtlampe

Zuerst fügen wir eine weitere Konstante für die zweite LED (LED_PIN2) hinzu. Dann erstellen wir eine neue Funktion fade(), um die LEDs über die Zeit zu dimmen. Zum Dimmen reduzieren wir den brightness von maximal 255 auf einen niedrigen Wert von 50 in einer Schleife. In jedem Schritt steuern wir die Helligkeit der LEDs über analogWrite und warten dann 100 ms mit delay(). Für 255-50 = 205 Schritte und mit 100 ms Verzögerung dauert es 20,5 Sekunden, bis die LEDs dunkel werden.

Für weitere mögliche Lichteffekte sehen Sie sich unser Tutorial zum Control Halloween Lights using ESP32 on Battery an, in dem wir einen Flackereffekt hinzufügen.

#define PIR_PIN GPIO_NUM_4
#define LED_PIN1 GPIO_NUM_16
#define LED_PIN2 GPIO_NUM_17

void fade() {
  for(int brightness=255; brightness>50; brightness--) {
    analogWrite(LED_PIN1, brightness);
    analogWrite(LED_PIN2, brightness);
    delay(100); 
  }  
}

void setup() {
  pinMode(PIR_PIN, INPUT);  
  pinMode(LED_PIN1, OUTPUT);
  pinMode(LED_PIN2, OUTPUT);
}

void loop() {
  esp_sleep_enable_ext0_wakeup(PIR_PIN, 1);   
  fade();
  esp_deep_sleep_start();  
}

Im setup() bleibt nichts wirklich Neues. Wir müssen nur den Pin-Modus für die zusätzliche LED setzen. Ebenso bleibt die loop() Funktion weitgehend unverändert. Nach der Angabe der Wake-Up-Quelle rufen wir fade() auf, um die LEDs zu dimmen, und starten dann den Deep-Sleep.

Erweiterungen

Es gibt alle möglichen Erweiterungen, die Sie zu dieser Basisversion hinzufügen können. Zum Beispiel könnten wir am Ende der Dimmphase einen Flackereffekt einbauen, wie es manche kommerzielle Nachtlampen tun. Wir könnten RGB-LEDs für Farbeffekte verwenden. Oder wir nutzen den Bewegungssensor als Alarmsystem: Bei Bewegung aktivieren wir das WiFi des ESP32 und senden eine E-Mail. Ein Alarm-Buzzer wäre ebenfalls leicht integrierbar.

Endlose Möglichkeiten. Im nächsten Abschnitt zeige ich Ihnen, wie Sie diese Nachtlampe in einen cool aussehenden Schädel integrieren.

Code über Arduino IDE hochladen

Wenn Sie dasselbe ESP32-Board verwenden, das ich bei den benötigten Teilen aufgeführt habe, wählen Sie das WEMOS LOLIN32 Lite Board und den richtigen COM-Port aus. Dann drücken Sie den Upload-Button (->).

Select WEMOS LOLIN32 Lite board for upload
Wählen Sie das WEMOS LOLIN32 Lite Board für den Upload aus

Ein Schädel als Nachtlampe

Wir haben nun die Schaltung für eine bewegungsaktivierte Nachtlampe, und alles in eine Box mit Akku zu packen würde gut funktionieren. Aber ich wollte etwas Spannenderes. Also habe ich diesen anatomisch korrekten Mini-Schädel gekauft, der unter den benötigten Teilen aufgeführt ist. Er hat einen abnehmbaren Deckel und bietet genug Platz für die gesamte Hardware.

Unten sehen Sie ein Bild des geöffneten Schädels mit der Schaltung inklusive Akku. Ich musste nur die Augenhöhlen und die Nase etwas verbreitern, um die LEDs und den Bewegungssensor unterzubringen.

Skull as a motion activated night light
Schädel als bewegungsaktivierte Nachtlampe

Beachten Sie, dass ich den Schädel auch neu lackiert und mit Alterungseffekten versehen habe. Das Endprodukt sieht großartig aus! Den Bewegungssensor sehen Sie in der Nase (die LEDs fehlen auf diesem Bild noch).

The Skull with integrated circuitry
Der Schädel mit integrierter Elektronik

Schließlich habe ich den Code für die fade() Funktion etwas erweitert. Ich habe das Setzen der Helligkeit für die beiden LEDs ausgelagert und eine Schleife hinzugefügt, die die Augen am Ende der Dimmphase dreimal blinken lässt. Eine weitere Warnung, dass das Licht bald ausgeht.

void set_leds(int brightness, int wait_ms) {
    analogWrite(LED_PIN1, brightness);
    analogWrite(LED_PIN2, brightness);
    delay(wait_ms); 
}

void fade() {
  for(int brightness=255; brightness>50; brightness--) {
    set_leds(brightness, 100);
  }  
  for(int i=0; i<3; i++) {
    set_leds(0, 500); 
    set_leds(50, 500);     
  }
}

Ich hoffe, Ihnen hat dieses Projekt gefallen und Sie haben Spaß beim Bau Ihrer eigenen Nachtlampe.

Fazit

In diesem Tutorial haben wir gelernt, wie man eine bewegungsaktivierte Nachtlampe mit Arduino, PIR- und LDR-Sensoren baut. Durch die Kombination dieser Komponenten schaffen wir eine praktische und energieeffiziente Beleuchtungslösung für unser Zuhause.

Wir begannen mit dem Verständnis der Funktionsweise von Licht- (LDR) und PIR-Sensoren. Der Lichtsensor hilft uns, die Umgebungshelligkeit zu erkennen, während der PIR-Sensor Bewegung in seinem Bereich detektiert. Durch die Kombination beider Sensoren entsteht ein System, das die Nachtlampe nur bei Dunkelheit und Bewegung aktiviert.

Anschließend gingen wir Schritt für Schritt den Bau einer einfachen Nachtlampe durch. Wir schlossen die Sensoren und das Relaismodul an den Arduino an und programmierten ihn, das Licht basierend auf den Sensordaten zu steuern. Diese einfache Nachtlampe eignet sich perfekt zur Beleuchtung kleiner Bereiche wie Flure oder Badezimmer.

Für alle, die eine vielseitigere Nachtlampe möchten, haben wir auch den Bau einer helleren, dimmenden Nachtlampe erkundet. Der Dimm-Effekt erlaubt es, die Lichtstärke nach Wunsch anzupassen.

Abschließend integrierten wir die Nachtlampe in einen cool aussehenden Schädel.

Zusammenfassend ist der Bau einer bewegungsaktivierten Nachtlampe ein spaßiges und praktisches Projekt, das die Sicherheit und den Komfort Ihres Zuhauses verbessern kann.

Häufig gestellte Fragen

Hier sind einige häufig gestellte Fragen zum Bau einer bewegungsaktivierten Nachtlampe:

F: Wie funktioniert eine bewegungsaktivierte Nachtlampe?

A: Eine bewegungsaktivierte Nachtlampe verwendet eine Kombination aus einem Lichtsensor (LDR) und einem passiven Infrarotsensor (PIR), um Bewegung im Umfeld zu erkennen. Wenn Bewegung erkannt wird und der Lichtsensor niedrige Lichtwerte misst, schaltet sich das Licht ein.

F: Was sind die Vorteile einer bewegungsaktivierten Nachtlampe?

A: Der Hauptvorteil ist die Energieeffizienz. Sie schaltet sich nur bei Bewegung ein und spart so Strom im Vergleich zu einer herkömmlichen Nachtlampe, die die ganze Nacht an bleibt. Außerdem bietet sie Komfort, da sie automatisch den Bereich beleuchtet, wenn jemand ihn betritt.

F: Kann ich die Empfindlichkeit des Bewegungssensors einstellen?

A: Viele Bewegungssensoren haben einstellbare Empfindlichkeit. Meist gibt es einen Potentiometer oder Jumper am Sensor-Modul, mit dem Sie die Empfindlichkeit anpassen können. Der AM312 bietet diese Möglichkeit jedoch nicht. Wenn Sie das brauchen, nehmen Sie den größeren HC-SR501.

F: Wie weit erkennt der Bewegungssensor Bewegung?

A: Die Reichweite hängt vom verwendeten Bewegungssensormodul ab. Die meisten PIR-Sensoren haben eine Reichweite von etwa 5 bis 7 Metern. Der hier verwendete AM312 hat eine kürzere Reichweite von nur 3-5 Metern.

F: Kann ich mehrere Bewegungssensoren für bessere Abdeckung verwenden?

A: Ja, wenn Sie einen größeren Bereich abdecken wollen, können Sie mehrere Bewegungssensoren strategisch im Raum platzieren. So wird sichergestellt, dass die Nachtlampe bei Bewegung aus jeder Richtung angeht.

F: Kann ich die Helligkeit der Nachtlampe anpassen?

A: Ja, Sie können die Helligkeit der Nachtlampe anpassen, indem Sie den Code entsprechend ändern, um die Helligkeitsstufe zu steuern.

F: Kann ich dieses Projekt mit einem Arduino oder einem anderen ESP32-Board verwenden?

A: Absolut! Dieses Projekt ist kompatibel mit Arduino, ESP32 und ähnlichen Mikrocontroller-Boards. Wenn Sie die Nachtlampe jedoch batteriebetrieben betreiben wollen, suchen Sie ein Board mit geringem Stromverbrauch.

F: Brauche ich unbedingt einen Mikrocontroller?

A: Nein, wenn Sie den fortgeschritteneren HC-SR501 Bewegungssensor verwenden, reicht dieser für eine einfache Nachtlampe aus. Der HC-SR501 unterstützt einen LDR zur Lichtpegel-Erkennung und hat einstellbare Aktivierungszeiten. Akku dazu und Sie haben eine funktionale Nachtlampe. Allerdings bietet der HC-SR501 keinen Dimm-Effekt und kann ohne zusätzliche Elektronik nicht als Alarmsystem genutzt werden.

Wenn Sie weitere Fragen haben oder Hilfe benötigen, fragen Sie gerne im Kommentarbereich unten.

Links