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.
- Raspberry Pi Pico: Bewegungserkennung mit PIR Motion Detector HC-SR501
- Raspberry Pi Pico: WS2812-RGB-LEDs programmieren
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 | 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 |
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 utime 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:
- Raspberry Pi Pico: WS2812-RGB-LEDs programmieren
- Raspberry Pi Pico: Lichtsteuerung für WS2812-RGB-LED-Modul programmieren
- Raspberry Pi Pico: Bewegungsmelder mit PIR Motion Detector HC-SR501
- Raspberry Pi Pico: Bewegung erkennen und anzeigen mit PIR Motion Detector HC-SR501
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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
Online-Workshop
Hardware-nahes 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.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)
Elektronik-Set Pico Edition
Raspberry Pi Pico: Hardware-nahes Programmieren mit MicroPython
Leichter Einstieg mit All-in-one-Set zum sofort Loslegen, um eigene Steuerungen programmieren.
Elektronik-Set Pico WLAN Edition
Raspberry Pi Pico W: IoT und Smart Home mit WLAN und MQTT
Betreibe Deinen Raspberry Pi Pico W als drahtloser Sensor in Deinem WLAN, versende E-Mails mit Daten und kommuniziere per MQTT im Internet of Things oder Smart Home.
Elektronik-Set Sensor Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Elektronik-Set mit den beliebtesten Sensoren zum Messen von Temperatur, Helligkeit, Bewegung, Lautstärke und Entfernung.
Elektronik-Set Eingabe Ausgabe Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Damit kannst Du MP3-Dateien abspielen, eine Stoppuhr bauen, einen Servo-Motor mit Drehschalter oder Joystick steuern, Lichteffekte mit einem WS2812-LED-Lichtstreifen erzeugen, Schalten mit einem Relais und Signalisieren mit einem Vibrationsmotor.