Raspberry Pi Lichtsensor mit Logging & Alert – Kostengünstiger Fotowiderstand mit Python
Überblick
Diese Anleitung führt Sie durch den Bau eines Raspberry Pi-basierten Fotosensors, der Lichtpegel protokolliert und Alarme auslöst. Ideal zur Überwachung dunkler Räume wie Abstellkammern oder Geräteschränke oder einfach zur Erfassung der Umgebungsbeleuchtung.
Wir nutzen LEDs als Ausgabestatusanzeigen, doch die Schaltung lässt sich für Relais, Summer oder Benachrichtigungsdienste anpassen. Alles, was Sie brauchen, ist ein Adafruit RPi Starter Kit – ein kosteneffizientes Bundle mit allen benötigten Teilen – oder Sie beschaffen die Komponenten einzeln gemäß der Stückliste unten.
Stückliste
- 3 × 10 mm Diffus-LEDs (rot, blau, grün)
- 1 × 1 µF Kondensator
- 1 × Fotowiderstand (Photoresistor)
- 3 × 560 Ω Widerstände
- 1 × Pi Cobbler Breakout
- 10 × Breadboard-Jumperkabel
- 1 × Vollformat-Lötfreies Breadboard
Anders als typische Mikrocontroller besitzt der Raspberry Pi keinen onboard Analog-Digital-Wandler. Wir umgehen dies, indem wir die Ladezeit eines Kondensators durch den Fotowiderstand messen – eine günstige RC-Timing-Technik, die zuverlässige Messwerte liefert.
Voraussetzungen
Programmierung erfolgt in Python. Wir empfehlen Adfruits Occidentalis-Distribution, die die RPi.GPIO-Bibliothek und vorkompilierte Module für den Pi enthält. Für ein minimales Setup genügt die Installation von RPi.GPIO via pip.
Da der Stromverbrauch der Schaltung sehr gering ist, reicht ein Standard-Pi-Netzteil. Zur Kalibrierung hilft eine variable Lichtquelle (z. B. Schreibtischlampe mit dimmbarem Licht), um die Sensorreaktion bei unterschiedlichen Beleuchtungsstärken zu beobachten.
Schritt 1 – RC-Schaltung verdrahten
- Cobbler in das Breadboard stecken, dabei sicherstellen, dass keine Pins dieselbe Stromschiene berühren – sonst droht Kurzschluss am Pi.
- 3,3 V Pin an die positive Breadboard-Schiene, GND-Pin an die negative Schiene anschließen.
- Fotowiderstand in die Mitte des Breadboards (zwischen die beiden Hälften) platzieren.
- Eine Seite des Fotowiderstands an die 3,3 V-Schiene, die andere an Pin 18 des Pi anschließen.
- 1 µF Kondensator von Pin 18 nach GND verbinden. Damit ist das RC-Netzwerk komplett.
An diesem Punkt können Sie mit der Kalibrierung fortfahren.
Schritt 2 – Kalibrierung & Test
Führen Sie folgendes Python-Skript aus. Es misst kontinuierlich, wie lange der Kondensator braucht, um sich durch den Fotowiderstand aufzuladen. Der Rückgabewert sinkt mit steigender Lichtintensität.
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
RC_PIN = 18
def rc_time(pin):
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.LOW)
time.sleep(0.1) # Kondensator vollständig entladen
GPIO.setup(pin, GPIO.IN)
count = 0
while GPIO.input(pin) == GPIO.LOW:
count += 1
return count
while True:
print(rc_time(RC_PIN))
time.sleep(0.5)
Wenn Sie die Lichtquelle variieren, beobachten Sie einen klaren numerischen Trend: Höhere Lichtpegel erzeugen niedrigere Messwerte. Nehmen Sie einige Proben im Dunkeln und bei typischer Beleuchtung auf, um einen Schwellwert für Alarme festzulegen.
Schritt 3 – Alarme implementieren
Mit dem definierten Schwellwert modifizieren Sie das Skript, um LEDs ein-/auszuschalten, Daten in eine Datei zu loggen oder Benachrichtigungen via E-Mail oder MQTT zu senden. Beispiel: Rote LED blinken lassen, wenn der Raum hell wird:
RED_LED = 17
GPIO.setup(RED_LED, GPIO.OUT)
while True:
level = rc_time(RC_PIN)
if level < THRESHOLD:
GPIO.output(RED_LED, GPIO.HIGH)
else:
GPIO.output(RED_LED, GPIO.LOW)
time.sleep(1)
Für komplexere Workflows erwägen Sie die Integration mit Home Assistant, Node-RED oder einem eigenen Flask-Webservice.
Sicherheit & Best Practices
- Pin-Verbindungen vor dem Einschalten des Pi immer doppelt prüfen.
- 3,3 V Versorgung für das RC-Netzwerk nutzen; 5 V vermeiden, da dies die GPIO-Pins beschädigen könnte.
- Kondensatorwert niedrig halten (1 µF), um lange Ladezeiten zu vermeiden, die das Skript verlangsamen.
- Kalibrierdaten dokumentieren; erleichtert Fehlersuche und spätere Anpassungen.
Fazit
Mit diesem Setup verfügen Sie über einen zuverlässigen, stromsparenden Lichtsensor, der Beleuchtungsänderungen protokolliert und darauf reagiert. Erweitern Sie das Projekt gerne um weitere Sensoren, Datenbank-Logging oder Visualisierung auf einem Web-Dashboard.
Herstellungsprozess
- Nahtlose MQTT-Integration: NodeMCU DHT22 Sensoren mit Raspberry Pi 3 B+ als Broker
- Raspberry Pi-gesteuertes Aquaponik-System: Bauanleitung & Code
- 24-V Thermostat-Ereignisse mit Optokoppler & Raspberry Pi loggen & grafisch darstellen
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Nahtlose Temperatur- & Feuchtigkeitsüberwachung am Raspberry Pi mit EzTemp
- Raspberry Pi Raumtemperatur-Überwachung mit Gnuplot-Graphen & E-Mail-Alerts
- DS1820 One-Wire Temperatursensor an Raspberry Pi GPIO anschließen
- HC-SR04 Ultraschallsensor an Raspberry Pi 3 anschließen – Komplettanleitung
- Analoge Sensoren am Raspberry Pi ohne nativen ADC auslesen – Step-Response Methode
- Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20