Raspberry Pi Pico: Automatisches Nachtlicht mit PIR Motion Detector HC-SR501 und RGB-LED WS2812

Wer Nachts aufwacht, um seinen Durst zu löschen, der darf wahlweise im Dunklen den Lichtschalter suchen oder sich von der grell aufleuchtenden Nachttischlampe blenden lassen. In Zeiten von Smart Home wäre es angebracht, dass ein Nachtlicht automatisch leuchtet, wenn wir uns vom Bett aus auf den Weg machen. Das kann eine Lampe sein, die angeht. Oder ein Lichtstreifen vom Typ Neopixel/WS2812. Hier lässt sich per Software die Helligkeit und Farbe steuern. Für die Bewegungserkennung nehmen wir einen PIR Motion Sensor vom Typ HC-SR501.

Den Lichtstreifen kann man zum Beispiel unterm Bett anbringen. Den Bewegungsmelder ebenso. So gibt es kein blendendes Licht. Nur der Bewegungsmelder muss passend ausgerichtet werden. Bedarfsweise lassen sich auch mehrere Bewegungsmelder integrieren, wenn Bedarf besteht.

Wenn man mit den Füßen aus dem Bett steigt, so die Idee, soll das Licht langsam angehen. Nach ein paar Minuten soll das Licht langsam wieder ausgehen.

Aufbau und Bauteile

Raspberry Pi Pico: Automatisches Nachtlicht mit PIR Motion Detector HC-SR501 und RGB-LED WS2812

Raspberry Pi Pico HC-SR501
Pin 36 3V3_OUT, +3,3V VCC
Pin 38 GND GND
Pin 29 GPIO 22 OUT
Raspberry Pi Pico WS2812
Pin 40 VCC +5V VCC
Pin 38 GND GND
Pin 34 GPIO 28 DI / DIN
Pin 33 GND GND

Schnell und einfach alle Bauteile zusammen bestellen

Programmcode

Der Programmcode enthält ein paar Konfigurationsoptionen.

  • leds: Anzahl der LEDs im Lichtsstreifen
  • brightness_max: Maximale Helligkeit der LEDs im Lichtstreifen. Reicht von 0 bis 255. 255 wäre die volle Helligkeit, was für ein Nachtlicht nicht notwendig ist.
  • speed_on: Dauer der Aufblend-Schritte in Millisekunden des Lichtstreifens.
  • speed_off: Dauer der Ausblend-Schritte in Millisekunden des Lichtstreifens.
  • wait_on: Dauer in Sekunden, bis das Licht wieder ausgeht.

Nach dem Start des Programmcodes funktioniert der Aufbau wie ein gewöhnlicher Bewegungsmelder. Bei Bewegung geht der Lichtstreifen langsam an. Für eine Dauer von 7 Sekunden bleibt das Licht an und geht dann langsam wieder aus.

# Bibliotheken laden
from machine import Pin
from neopixel import NeoPixel
from time import sleep_ms, sleep

# GPIO-Pin für PIR-Motion-Sensor
pin_pir = 22

# GPIO-Pin für WS2812/Neopixel
pin_np = 28

# Anzahl der LEDs
leds = 8

# Maximale Helligkeit: 0 bis 255
brightness_max = 30

# Geschwindigkeit (Millisekunden)
speed_on = 50
speed_off = 200

# Dauer in Sekunden
wait_on = 7

# Initialisierung des PIR-Moduls
pir = Pin(pin_pir, Pin.IN, Pin.PULL_DOWN)

# Initialisierung WS2812/NeoPixel
np = NeoPixel(Pin(pin_np, Pin.OUT), leds)

# Wiederholung (Endlos-Schleife)
def lightOn():
    for brightness in range(0, brightness_max+1, 1):
        for led in range(leds):
            np[led] = (brightness, brightness, brightness)          
        np.write()
        sleep_ms(speed_on)

def lightOff():
    for brightness in range(brightness_max, -1, -1):
        for led in range(leds):
            np[led] = (brightness, brightness, brightness)          
        np.write()
        sleep_ms(speed_off)

# Wiederholung (Endlos-Schleife)
while True:
    # 1 Sekunde warten
    sleep(1)
    # PIR-Sensor-Zustand lesen
    pir_value = pir.value()
    # PIR-Sensor-Zustand auswerten
    if pir_value == 1:
        #print('Licht EIN')
        lightOn()
        # Warten
        sleep(wait_on)
        #print('Licht AUS')
        lightOff()

Der Programmcode sieht vor, dass ein Lichtstreifen vom Typ Neopixel/WS2812 angesteuert wird. Selbstverständlich kann auch einfach nur eine Lampe ein- und ausgeschaltet werden. Die Funktionen „lightOn“ und „lightOff“ müssen dann entsprechend angepasst werden.

Erweiterung

Nachtlicht bedeutet eigentlich, dass es nur in der Nacht leuchten soll bzw. wenn es dunkel ist. Dieses Nachtlicht leuchtet aber bei jeder Bewegung. Egal ob es Tag oder Nacht ist. Die Überlegung ist, das Nachtlicht um eine Erkennung von Tag und Nacht zu erweitern. Dazu kann ein Fotowiderstand vom Typ LDR verwendet werden.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren