Raspberry Pi Zero 2 W - LED Ansteuerung über Transistor
Meine Home Automation mit openHAB 5 soll mit einem Control Panel erweitert werden. LEDs zeigen dann auf einen Blick, ob Fenster und Türen geschlossen sind, die Garage geöffnet/geschlossen ist und weitere Funktionen. In den Grundlagen ist die Ansteuerung einer LED bereits mit technischen Details und ein paar Zeilen Python Code beschrieben. Das Problem: die GPIO Ports dürfen nicht überlastet werden! Jeder GPIO Port darf nur mit 16 mA betrieben werden, alle GPIO Ports in Summe mit 50 mA. Empfohlen wird eine Belastung mit 3 bis 5 mA pro Port. Um das zu realisieren, muss vor die LED ein Schalttransistor gesetzt werden.Für den Raspberry Pi Zero 2 W (bzw. 2 WH mit eingelöteter Stiftleiste) erstellt man mit dem Raspberry Pi Imager eine microSD Karte mit einem für den Zero 2 passenden Betriebssystem ohne Desktop Umgebung. Ich nutze noch Debian Bookworm, auch wenn aktuell (Mai 2026) Debian Trixie verfügbar ist. Bei der Konfiguration ist es sinnvoll, die WLAN Zugangsdaten vom Heimnetzwerk und einen Benutzer zu hinterlegen. Ist die microSD Karte erfolgreich beschrieben, wird diese in den Zero 2 eingesetzt und der Minicomputer über ein USB Kabel mit Spannung versorgt. Eine blinkende LED zeigt den Bootvorgang an. Ist dieser abgeschlossen, leuchtet die LED grün. Wenn man sich den Anschluss eines HDMI Monitors und einer USB Tastatur sparen möchte, greift man über das lokale WLAN Netzwerk und einem geeigneten SSH Tool (Empfehlung: PuTTY) auf den Zero 2 zu. Die IP Adresse liest man am einfachsten am Internet Router aus oder nutzt einen IP Scanner.
Es erfolgt die Anmeldung mit dem bei der Vorbereitung der microSD Karte angegebenen Benutzer. Eine erfolgreiche Anmeldung zeigt in der ersten Zeile die Betriebssystem Version an:
... gefolgt von ein paar Informationen. In meiner Umgebung besitzt der Mikrocontroller den Namen ZeroW.
Die Schaltung mit dem Transistor und der LED sieht folgendermaßen aus:

- Wie bereits beschrieben wird der Transistor benötigt, um den GPIO Port nicht zu stark zu belasten
- Ich nutze für diesen Zweck einen einfachen NPN Transistor BC 547 B im TO-92 Gehäuse
- Der GPIO Port liefert im eingeschalteten Zustand eine Spannung von 3,3 Volt
- Am Transistor fällt ca. 0,7 Volt ab
- Nutze ich einen Vorwiderstand R2 mit 1000 Ohm (1 kOhm) ergibt sich rechnerisch ein Schaltstrom von 3,3 V - 0,7 V / 1000 = 2,6 mA. Im Versuchsaufbau messe ich später 2,51 mA
- Auch die LED benötigt einen Vorwiderstand, um den Strom zu begrenzen. Ohne diese Vorwiderstand wird die LED zerstört.
- Zur Berechnung des Vorwiderstands R1 muss man wissen, wie viel Spannung an der LED abfällt. Das hängt u.a. von der LED Farbe ab: rot ca. 1,8 bis 2,2 Volt, grün ca. 2,0 bis 3,0 Volt, usw. Genaue Informationen erhält man über das Datenblatt, aber in vielen Fällen kommt man mit dem Ansatz 2 Volt gut hin.
- Die Spannungsversorgung für die LED beträgt bei mir 5 Volt. Nutzt man eine höhere Vorsrgungsspannung, muss der Vorwiderstand angepasst werden.
- Der Strom, der durch die LED fließt, ist abhängig von der LED (siehe Datenblatt). Mit einer Annahme von 20 mA liegt man oft richtig. Weniger Strom: die LED leuchtet nicht so hell, mehr Strom erhöht die Helligkeit.
- R1 = Versorgungsspannung - Spannungsabfall an der LED / Strom = 5 Volt - 2 Volt / 20 mA = 150 Ohm
- Die Messung wird bei der von mir genutzten LED später 22 mA ergeben.
Versuchsaufbau

Links der Zero 2 WH, der über ein Standard micro USB Kabel mit 5 Volt Spannung versorgt wird. Das schwarze Kabel führt von Pin 39 GND (Ground, Masse) zur gemeinsamen GND Leiste im Versuchsaufbau. Das rote Kabel führt vom GPIO Port 23 zum Vorwiderstand R2. Der Vorwiderstand R2 wird mit der Basis B des NPN Transistors verbunden. Im TO-92 Gehäuse ist das der mittlere Anschluss. Der Emitter E wird mit dem weißen Kabel zum gemeinsamen Ground geführt und der Kollektor C mit dem grünen Kabel an den Widerstand R1. Die rote LED wird zwischen dem Widerstand R1 und der Spannungsversorgung 5 Volt angeschlossen. Hinweis: der längere Anschluss bei einer LED geht an Plus!
Das T0-92 Transistor Gehäuse von unten gesehen:

Der GPIO Port 23 wurde beliebig gewählt!
Der Zero 2 WH zusammen mit der GPIO Leiste:

Jetzt fehlen noch ein paar Zeilen Python Code, um die LED ein- und wieder auszuschalten. Den folgenden Code kann mit einem Editor erstellen und auf dem Raspberry Pi abspeichern. Schneller und einfacher geht es mit der Eingabe der Programmzeilen direkt im Python Interpreter. Wie oben beschrieben stellt man mit dem SSH Client zum Zero 2 eine Verbindung her und gibt dann den Befehl python ein.

Anschließend gibt man jede der folgenden Zeilen ein und bestätigt diese jeweils mit der [Enter]-Taste:
GPIO.setmode(GPIO.BCM)
LED=23
GPIO.setup(LED,GPIO.OUT)
GPIO.output(LED,True)
LED wieder ausschalten:
Der folgende Befehl setzt alle Ports auf Input zurück:
Die GPIO Ports können auch über die Nummer der Leiste angesprochen werden. GPIO23 ist der Pin 16. Möchte ich die Pins ansprechen, müssen zwei Zeilen geändert werden:
LED=16
Um den Python Interpreter zu beenden [Ctrl]-D / [Strg]-D drücken.
Auch ein Raspberry Pi sollte nicht einfach spannungslos geschaltet, sondern korrekt heruntergefahren werden: