Elektronik Guide Raspberry Pi Edition
Elektronik Guide Raspberry Pi Edition
Version: 2022-12-16
Herausgeber:
Patrick Schnabel
Droste-Hülsho -Str. 22/4
Dieses Elektronik-Set wurde nach den geltenden europäischen
71642 Ludwigsburg Richtlinien entwickelt und hergestellt. Der bestimmungsgemäße
Deutschland Gebrauch aller Bauteile ist in dieser Anleitung beschrieben. Der Nutzer
ist für den bestimmungsgemäßen Gebrauch und Einhaltung der
geltenden Regeln verantwortlich. Bauen Sie die Schaltungen deshalb
USt-ID-Nr.: DE207734730 nur so auf, wie es in dieser Anleitung beschrieben ist. Das Elektronik-
Set darf nur zusammen mit dieser Anleitung weitergegeben werden.
WEEE-Reg.-Nr.: DE80632679
[Link]
2

ff
Vorwort (1)
Elektronik, einfach und leicht verständlich. Das ist GPIO Zero ist eine Python-Bibliothek zum
mein Motto. Auch zusammen mit dem Raspberry Pi. Programmieren von elektronischen Bauteilen. Oder,
Aber, Elektronik und Raspberry Pi ist eine schwierige wie es heute genannt wird, Physical Computing oder
Ehe. So dachte ich am Anfang. Die Schwierigkeit liegt auch Hardware-nahes Programmieren. GPIO Zero
nicht in der Elektronik, die am Raspberry Pi in ein reduziert die Komplexität auf wenige Zeilen
enges Korsett gezwängt wird. Nein, es ist die Programmcode.
Kombination aus Elektronik und Software-
Programmierung. Denn wenn etwas nicht funktioniert, Auf der Programmierseite ist GPIO Zero zusammen
wo liegt dann der Fehler? In der Verschaltung der mit Python die ultimative Lösung für Einsteiger in die
Bauteile oder im Programmcode? Bei dieser Hardware-nahe Programmierung. Aber auch
doppelten Komplexität wird aus Lust schnell Frust. Fortgeschrittene, die bisher alles mit „[Link]“
Das weiß ich aus Erfahrung. gemacht haben, lohnt sich ein Blick darauf. Ich nde,
das Programmieren von GPIOs ist dadurch viel
Wir brauchen also möglichst einfache Schaltungen einfacher. Du kannst Dich mehr auf die eigentliche
und ganz kurze und leicht lesbare Quelltexte. Nach Funktionalität Deines Programms konzentrieren.
Möglichkeit solltest Du nicht zu viel falsch machen
können. Außer die üblichen Bedienungsfehler. Die Jetzt brauchst Du nur noch ein dazu passendes
Raspberry-Pi-Community hat gegen die Komplexität Bauteile-Sortiment zum Experimentieren. Das gibt es
eine Lösung gefunden: GPIO Zero. natürlich auch. Allerdings muss man die im Ausland
bestellen. Wenn sie denn mal verfügbar wären. Mir ist
schon klar, dass diese billigen Elektronik-Sets mit
3

fi
Vorwort (2)
einer handvoll Bauteile kein großes Geschäft ausprobieren kann, ohne Änderungen am Aufbau
bedeuten. Das ist für die großen und bekannten vornehmen zu müssen.
Raspberry-Pi-Shops eher so ein Mitnahme-Produkt.
Entsprechend stiefmütterlich sind diese Sets Herausgekommen ist das „Elektronik-Set Raspberry
ausgestattet und nur gelegentlich verfügbar. Pi Edition“ mit Anleitung und Bauteilen zum
Experimentieren und Programmieren mit Python und
Das ist wirklich schade. Der Python-Bibliothek GPIO GPIO Zero. Dieser Elektronik-Guide soll dabei kein
Zero wird das nicht gerecht. Aus meiner Sicht muss Ersatz für die o zielle Dokumentation sein, sondern
das nicht sein. Deshalb garantiere ich die dauerhafte die Schwelle zum Einstieg noch ein wenig tiefer
Verfügbarkeit des Elektronik-Sets „Raspberry Pi legen.
Edition“.
Ich nde, so macht Experimentieren mit dem
Für diesen Elektronik-Guide „Raspberry Pi Edition“ Raspberry Pi und Elektronik viel mehr Spaß.
habe ich mir die o zielle englischsprachige
Dokumentation von GPIO Zero zur Brust genommen
und alle Beispiele ausprobiert. Ich habe mir dann
überlegt, welche Bauteile wirklich notwendig sind, um
nicht alle, aber möglichst viele sinnvolle Experimente
durchzuführen. Die meisten Aufbauten und
Programmcodes weichen deshalb vom Original ab,
damit man mehrere Programmcodes nacheinander
4

fi
ffi
ffi
Elektronik-Set Raspberry Pi Edition
[Link]
5

Inhaltsverzeichnis
6

Einführung und Grundlagen
Raspberry Pi: Was ist das?
Modelle
Den Raspberry Pi gibt es in drei verschiedenen
Größen. Als kleinen und sparsamen Raspberry Pi
Zero. Als ebenfalls sparsam und leistungsfähigeren
Raspberry Pi 3 A+. Und das Topmodell Raspberry Pi
4 B mit vier schnellen Rechenkernen und wahlweise
1, 2 oder 4 GByte Arbeitsspeicher.
Typische Anwendungen
Die Rechenleistung des System-on-Chip (Prozessor)
ist nicht besonders groß, weshalb man mit dem
Raspberry Pi beim Experimentieren immer wieder an
dessen Leistungsgrenzen stößt. Für viele
Anwendungen reicht die Leistungsfähigkeit
vollkommen aus.
Der Raspberry Pi ist ein Mini-Computer, der
ursprünglich für Schüler und Studenten gedacht war.
Grundsätzlich ist er auch für Bastler, Maker und • Mini-PC
Hobby-Elektroniker interessant. Ganz nebenbei kann • Steuerungs-Computer
man damit viel über die grundsätzliche • Multimedia-Center
Funktionsweise von Computern, Programmieren und • Netzwerk-Speicher
auch Elektronik lernen.
8

Spannung und Strom
Was ist der elektrische Strom?
9

Elektronik mit dem Raspberry Pi
Einschränkungen
10

GPIO - General Purpose Input Output
General Purpose Input Output, kurz GPIO, bezeichnet
programmierbare Ein- und Ausgänge, die man für
unterschiedliche Zwecke nutzen kann. GPIOs werden
auf Platinen als Lötpunkte oder Pins in Form einer
Stiftleiste herausgeführt und dienen als Schnittstelle zu
anderen Systemen, Schaltungen oder Bauteilen, um
diese über einen Raspberry Pi zu steuern. Dabei kann
der Raspberry Pi bei entsprechender Programmierung
digitale Signale von außen annehmen (Input) oder
Signale nach außen abgeben (Output).
Viele der GPIOs erfüllen je nach Einstellung und
Programmierung unterschiedliche Funktionen. Neben
Grundsätzlich, ein Raspberry Pi wird mit 5 Volt per USB- den typischen GPIO-Ein- und Ausgängen nden sich
Netzteil gespeist. Allerdings arbeitet der System-on-Chip aber auch Pins mit der Doppelfunktion für I2C, SPI und
auf Basis von 3,3 Volt. Das bedeutet, an einem GPIO muss eine serielle Schnittstelle.
das Signal eingangsseitig auf 3,3 Volt begrenzt werden
und ausgangsseitig ist das Signal auf 3,3 Volt begrenzt.
Die GPIOs sind oftmals nur als Lötpunkte oder, beim
Desweiteren verträgt ein GPIO nur ein paar Milliampere
Raspberry Pi vom Modell abhängig, als zweireihige
(mA) Strom. Das bedeutet, über einen GPIO-Pin kann man
Stiftleiste herausgeführt. Je nach Modell weist ein
keine externen Schaltungen und Bauteile betreiben. Die
müssen eine eigene Stromversorgung haben.
Raspberry Pi eine Stiftleiste mit 26 oder 40 Pins auf,
wovon allerdings nicht alle zur Ein- oder Ausgabe
Insbesondere bei Relais und Motoren muss man sich um
eine sichere Ansteuerung kümmern. dienen. Einige Pins führen ein festgelegtes +5V-,
+3,3V- oder 0V-Potential.
11

fi
GPIO-Belegung
12

GPIOs mit Python und GPIO Zero programmieren
GPIO Zero ist eine Python-Bibliothek. Sie stellt eine
Software-Schnittstelle für Physical Computing bereit, um
LEDs, Taster, LED-Reihen, 7-Segment-Anzeigen,
Analog-Digital-Wandler und vieles mehr über die GPIOs
in Python zu programmieren und zu steuern.
13

fi
fi
Entwicklungsumgebung zum Programmieren
Was ist eine Entwicklungsumgebung?
Mit Entwicklungsumgebung ist meist ein Programm • Hardware: Raspberry Pi mit Zubehör (Maus, Tastatur,
gemeint, in dem der Programmcode oder Quelltext für ein Bildschirm)
anderes Programm geschrieben wird. Also das Programm,
mit dem programmiert wird. Im einfachsten Fall ist das ein
• Elektronik: verschiedene Bauteile, Steckbrett und
einfacher Text-Editor. Programmierer verwenden gerne Verbindungskabel
spezielle Text-Editoren die über Syntax-Highlightning
verfügen. Das heißt, die Grammatik der
Programmiersprache erkennen und zur besseren • Betriebssystem: Raspberry Pi OS Desktop auf SD-
Lesbarkeit bestimmte Befehle, Kommandos, Optionen, Speicherkarte
Parameter usw. farblich unterschiedlich darstellen. Hilfreich
sind Editoren, die auch noch Eingabefehler erkennen und • Programmiersprache: Python Version 3 mit GPIO Zero
kennzeichnen können. Desweiteren vereinfacht es die (in der Regel vorinstalliert)
Software-Entwicklung, wenn man direkt im Editor das
geschriebene Programm starten und stoppen kann. • Editor: Thonny Python IDE (in der Regel vorinstalliert)
Zu einer vollständigen Entwicklungsumgebung gehört • Internet: von Vorteil, aber nicht zwingend erforderlich
meist eine bestimmte Hardware und zusätzliche Software,
was aber davon abhängig ist, in welcher
Programmiersprache geschrieben werden soll und was
genau programmiert wird. Beispielsweise, ob eine
bestimmte Hardware berücksichtigt werden muss.
14

Programmieren mit der Thonny Python IDE
Die Thonny Python IDE verfügt über alle erforderlichen
Funktionen und Bedienelemente, um e ektiv mit Python
und GPIO Zero programmieren zu können
15

ff
fi
ff
Bauteile
Steckbrett
• lötfreies Experimentieren
• einfach zu verwenden und miteinander
kombinierbar
• verschiedene Größen erhältlich
17

fi
Steckverbindungskabel
• elektrische Verbindungen zwischen Bauelementen,
Schaltungen und Geräten
18

fi
ff
fi
Taster
• Stromkreis schließen
• Stromkreis unterbrechen
• manuelles Ein- und Ausschalten
19

fi
fl
ff
ff
Widerstand
• Begrenzen des elektrischen Stroms
• Begrenzen der elektrischen Spannung
• Einstellen von Strom und Spannung
20

fi
fi
Kennzeichnung von Widerständen (1)
Widerstände werden in der Regel durch Farbringe
gekennzeichnet. Je nach Art des Widerstandsmaterials,
werden 4 oder 5 Ringe verwendet.
21

fi
Kennzeichnung von Widerständen (2)
Widerstand mit 470 Ohm Widerstand mit 10 kOhm
22

Leuchtdiode (LED)
• optischer Signalgeber
• optischer Sensor
Leuchtdioden werden typischerweise mit einem Leuchtdioden gibt es in vielen verschiedenen Farben.
Vorwiderstand in Reihe betrieben, der eine spannungs- Am häu gsten kommen Rot, Grün, Gelb, Blau und
und strombegrenzende Wirkung hat. Die Weiß vor. Die Farbe wird durch das Halbleitermaterial
Strombegrenzung ist deshalb notwendig, weil der LED- vorgegeben und zusätzlich ein entsprechend gefärbtes
Halbleiter bei zu viel Strom kaputt gehen kann. und lichtdurchlässiges Gehäuse verwendet.
23

fi
fl
fl
Kennzeichnung und Anschlussbelegung von Leuchtdioden
Weil sich eine LED wie jede andere Halbleiterdiode
verhält, gibt es eine Sperrrichtung und eine
Durchlassrichtung. Soll eine LED leuchten, muss sie in
Durchlassrichtung angeschlossen sein. Also die
Kathode (K) an Minus (-) und die Anode (A) an Plus (+).
Je nach Hersteller, Farbe und Typ können
Leuchtdioden sehr unterschiedliche elektrische Werte Einfach zu merken: Das Pluszeichen hat einen Strich
aufweisen. Gemeint sind die Durchlassspannung und mehr als das Minuszeichen und deshalb ist der
der Durchlassstrom. Beide Werte sind wichtig zur Anschlussdraht der Anode etwas länger. Außerdem
Berechnung des strombegrenzenden Vorwiderstands. sind die meisten LEDs auf der Minusseite abge acht,
wie eben ein Minus, oder das "K" der Kathode.
Ein Vorwiderstand begrenzt den Strom in
Durchlassrichtung typischerweise auf etwa 10 mA. Die Beim Schaltzeichen kann man sich das so merken:
Spannung je nach LED-Typ auf 1,8 bis 2,2 Volt, oder Das Schaltzeichen hat wegen dem Querbalken die
höher. Manche LEDs haben eine Durchlassspannung Form des Buchstabens "K". Das Dreieck hat eine
von 3 oder sogar 4 Volt. Ähnlichkeit mit dem Buchstaben "A". Beim Querbalken
An 9 Volt emp ehlt sich ein Widerstandswert zwischen ist der Anschluss die Kathode und auf der anderen
1 kOhm bis 20 kOhm. Seite die Anode. Die Anode zeigt vom Pluspol weg
Bei einem deutlich kleineren Widerstand als 1 kOhm und zum Minuspol hin, was der technischen
kann die LED kaputt gehen. Bei einem deutlich zu Stromrichtung entspricht. Und somit wird die Anode
großen Widerstand als 20 kOhm leuchtet die LED zu am Pluspol und die Kathode am Minuspol
schwach oder gar nicht. angeschlossen.
24

fi
fl
Integrierte Schaltkreise / Integrated Circuits (IC)
• komplexe Standard-Schaltung als ein Bauteil
• Platz und Kosten sparen durch mehrfach
integrierte Funktionen
• geringerer Schaltungsaufwand
25

fi
ULN2003A - Darlington Transistor Array (IC)
• Eingänge für TTL-Signale (5 Volt)
• Ausgänge für bis 50 Volt
• Ausgänge mit Freilaufdiode für induktive Lasten (z.
B. Motor und Relais)
26

ff
ULN2003A: Beschaltung
Eingänge beschalten COM-Anschluss (Pin 9): Freilaufdiode aktivieren
Die Eingänge arbeiten mit Standard-TTL-Signalen. Also Der Anschluss Pin 9 (COM) ist der gemeinsame
bei High-Pegel mit 5 Volt und bei Low-Pegel mit 0 Volt. Anschluss der integrierten Freilaufdioden. Dieser
Typischerweise wird ein TTL-Eingang eine anliegende Anschluss muss nur dann beschaltet werden, wenn an
Spannung bis 2 Volt runter als High-Pegel erkennen. Das den Ausgängen induktive Lasten angeschlossen sind.
bedeutet, dass ein High-Pegel eines GPIO-Ausgangs mit Zum Beispiel Relais oder Motoren. Sollte das der Fall
3,3 Volt vom ULN2003A-Eingang als High-Pegel erkannt sein, dann wird Pin 9 typischerweise mit der
wird. Versorgungsspannung der angeschlossenen
Verbraucher verbunden.
Ausgänge beschalten
Welche Spannung geschaltet werden soll hängt von den Masse bzw. Ground (GND)
angeschlossenen Verbrauchern ab. Diese Spannung Der Anschluss Pin 8 ist der gemeinsame Masse-
muss in der Regel aus einer eigenen Anschluss bzw. Ground (GND) für die sieben Eingänge
Spannungsversorgung bereitgestellt werden. und die sieben Schaltstufen. In der Regel muss auch der
Aufgrund der integrierten Darlington-Stufe haben die Ground einer separaten Versorgungsspannung damit
Ausgänge bei einen Low-Pegel nie ganz 0 Volt, sondern verbunden werden.
etwa 0,9 Volt. Unter Umständen ist das beim
Dimensionieren nachfolgender Schaltungsteile zu Hinweis
berücksichtigen. Es emp ehlt sich einen Blick ins Datenblatt zu werfen.
Werden alle 7 Transistorstufen dauerhaft
durchgeschaltet (Tastverhältnis 100%), darf jede Stufe
nur mit max. 160 mA belastet werden.
27

fi
Motor für Gleichstrom (DC)
• Umwandlung von elektrischer Energie in
Bewegungsenergie oder mechanische Energie
• typischerweise Bewegen von Fahrzeugen und
Antrieben
28

fi
ff
Relais-Board (KY-019)
• potentialfreies Schalten
• integrierte Freilaufdiode
• schraubbare Anschlüsse für Leitungen zum
schaltenden Gerät
29

fi
fi
Relais-Board beschalten (1)
Beschaltung der Eingangsseite vom GPIO
30

Relais-Board beschalten (2)
Beschaltung der Ausgangsseite zum schaltenden
Gerät
31

ff
fl
ff
fl
ff
ff
Relais-Board beschalten (3)
Wie sind die drei Anschlüsse funktional
miteinander verbunden?
32

ff
ff
Experimente und Anwendungen
Experimente und Anwendungen mit Python und GPIO Zero
• LED einschalten und ausschalten Python ist eine universelle Programmiersprache. Sie gilt als
einfach zu erlernende Sprache, da sie über eine klare und
• LED blinken lassen
übersichtliche Syntax und eine gute Lesbarkeit verfügt. Des
• LED-Helligkeit steuern
Weiteren ist Python in der Informatik weit verbreitet, so dass
• Taster-Zustand anzeigen man sie in Technik-nahen Ausbildungen und Berufen immer
• LED mit Taster einschalten und ausschalten wieder ndet.
• LED über ULN2003A steuern
• Motor über ULN2003A steuern GPIO Zero ist eine Python-Bibliothek. Sie stellt eine Software-
Schnittstelle für Physical Computing bereit, um LEDs, Taster,
• Relais-Board über ULN2003A steuern
LED-Reihen, 7-Segment-Anzeigen, Analog-Digital-Wandler
• Relais-Board ohne ULN2003A Steuern und vieles mehr über die GPIOs in Python zu programmieren
• LED-Ampel-Steuerung und zu steuern.
• LED-Lau icht
• Raspberry Pi per Taster herunterfahren Die folgenden Experimente bauen auf der o zielle
Dokumentation von GPIO Zero auf. Auf den folgenden Seiten
• Einfaches Reaktionsspiel für zwei Personen
ndest Du einige Beispiele aus der Dokumentation mit ein
paar zusätzlichen Erklärungen und wie sie sinnvoll
einzusetzen sind.
34

fi
fi
fi
fl
ffi
Vorgehensweise
1. Zuerst die Schaltung aufbauen
[Link]()
sleep(5)
4. Funktion von Aufbau und Programm prüfen
[Link]()
35

LED einschalten und ausschalten
In diesem Aufbau geht es darum, an einem Raspberry Pi
eine LED richtig anzuschließen und mit einem Programm
die LED einzuschalten und wieder auszuschalten. Das
ist nicht weiter schwer. Wir brauchen dazu eine LED
(egal welche Farbe) und einen Widerstand. Auf einem
Steckbrett werden die Raspberry-Pi-GPIO-Pins und die
Bauteile mit den Verbindungskabeln verbunden.
36

ff
LED blinken lassen (1)
Am Besten ist Elektronik immer dann, wenn es blinkt
und blitzt. Aber bitte nicht zu viel davon. Wenn es zu
sehr blitzt, ist danach meistens etwas kaputt. Deshalb
beschränken wir uns sicherheitshalber auf das Blinken
einer Leuchtdiode.
Mit Python und GPIO Zero lässt sich das Blinken einer
Leuchtdiode mit wenigen Zeilen erledigen.
37

LED blinken lassen (2)
In der zweiten Variante erfolgt das Blinken durch from gpiozero import PWMLED
weiches Ein- und Ausblenden, in dem die Helligkeit über
ein PWM-Signal gesteuert wird. # Initialisierung von GPIO17 als PWM-Signal (LED)
led = PWMLED(17)
# PWM-Signal ausgeben
[Link]()
In der dritten Variante wird das Blinken mit from gpiozero import LED
unterschiedlicher Leuchtdauer und Pausedauer from time import sleep
realisiert. Die Werte von „sleep“ sind die Dauer in
Sekunden. # Initialisierung von GPIO17 als LED (Ausgang)
led = LED(17)
# Wiederholung einleiten
while True:
# LED einschalten
[Link]()
# 0,17 Sekunden warten
sleep(0.17)
# LED ausschalten
[Link]()
# 1 Sekunde warten
sleep(1)
38

LED blinken lassen (3)
In der vierten Variante wird das Blinken mit from gpiozero import LED
unterschiedlicher Leuchtdauer und Pausedauer
realisiert. Die Werte von „blink“ sind die Dauer in # Initialisierung von GPIO17 als LED (Ausgang)
Sekunden. led = LED(17)
39

LED-Helligkeit steuern
Im Prinzip kennt ein GPIO nur zwei Zustände: „High“
und „Low“. Also „An“ und „Aus“ oder „1“ und „0“. Es
handelt sich dabei um die binäre Logik. Werte
dazwischen gibt es nicht. Logisch wäre es, dass man
mit der Steuerung per GPIO eine LED auch nur ein- und
ausschalten kann. Die Helligkeit kann man also nicht
einstellen.
40

fl
LED-Helligkeit steuern (2)
Mit Python und GPIO Zero lässt sich ein PWM-Signal
from gpiozero import PWMLED
mit wenigen Zeilen erzeugen. Auf diese Weise kann man from time import sleep
die Helligkeit einer Leuchtdiode einstellen.
# Initialisierung von GPIO17 als PWM-Signal (LED)
led = PWMLED(17)
Nach dem Start des Programms wird die Leuchtdiode in
10 Stufen (von 0 bis 1) von „aus“ nach „ganz hell“
# Wiederholung einleiten
geändert. Das Programm endet im Prinzip nie. Es muss while True:
manuell beendet bzw. gestoppt werden. # LED ausschalten
[Link] = 0
sleep(1)
[Link] = 0.1
sleep(1)
[Link] = 0.25
sleep(1)
# LED mit halber Helligkeit
[Link] = 0.5
sleep(1)
[Link] = 0.75
sleep(1)
[Link] = 0.9
sleep(1)
# LED mit voller Helligkeit
[Link] = 1
sleep(1)
41

Taster-Zustand auswerten und anzeigen (1)
Ein Taster kann zwei Zustände haben: „gedrückt“ und
„nicht gedrückt“. Entsprechend für „Ein“ und „Aus“. Die
folgenden Programmbeispiele berücksichtigen
verschiedene Szenarien in denen ein Taster gedrückt
oder auch wieder losgelassen wird.
GPIO Zero kennt mehrere Möglichkeiten die Betätigung # Initialisierung von GPIO27 als Button (Eingang)
eines Tasters auszuwerten, der nach Ground (GND) button = Button(27)
geschaltet wird.
# Warten auf Druck auf Button
Das folgende Programm wird angehalten und läuft erst button.wait_for_press()
dann weiter, wenn der Taster gedrückt wird. Nachdem
der Text ausgegeben wurde, wird das Programm # Text-Ausgabe
beendet. print("Taster wurde gedrückt")
42

fl
Taster-Zustand auswerten und anzeigen (2)
Im folgenden Programm wird der Druck auf den Taster from gpiozero import Button
immer wieder erneut geprüft. Der Nachteil davon ist,
dass die Betätigung mehrmals erkannt wird, auch wenn # Initialisierung von GPIO27 als Button (Eingang)
man nur einmal drückt. Das macht natürlich nur Sinn, button = Button(27)
wenn man wissen will, wenn der Taster nicht nur
# Wiederholung einleiten
gedrückt wurde, sondern auch gehalten wird.
while True:
# Wenn Button gedrückt wurde
if button.is_pressed:
# Text-Ausgabe
print("Taster wurde gedrückt")
Im folgenden Programm wird die Auswertung des from gpiozero import Button
Tasters im Programmablauf global de niert. Das heißt,
immer dann, wenn der Taster gedrückt wird, wird der # Definition einer Funktion
Text ausgegeben. Das Programm wird nicht automatisch def pressed():
# Text-Ausgabe
beendet.
print("Taster wurde gedrückt")
43

fi
Taster-Zustand auswerten und anzeigen (3)
Im folgenden Programm wird die Auswertung des from gpiozero import Button
Tasters zusätzlich um das Loslassen im Programmablauf
global de niert. Das heißt, immer dann, wenn der Taster # Definition einer Funktion
gedrückt und losgelassen wird, wird ein Text def pressed():
ausgegeben. Das Programm wird nicht automatisch # Text-Ausgabe
print("Gedrückt")
beendet.
# Definition einer Funktion
def released():
# Textausgabe
print("Losgelassen")
44

fi
LED mit Taster einschalten und ausschalten (1)
Damit eine Leuchtdiode (LED) beim Drücken eines
Tasters ein- und ausgeht braucht man eigentlich keine
Softwaresteuerung. Diese Funktion kann man natürlich
auch ohne Software realisieren. Einfach nur dadurch,
dass der Taster mit der Leuchtdiode und einem
Vorwiderstand in Reihe geschaltet wird.
45

Taster-Zustand auswerten und anzeigen (2)
Das folgende Programm schaltet die LED immer dann from gpiozero import Button, LED
ein, wenn der Taster gedrückt wird und aus, wenn der
Taster losgelassen wird. Das Programm wird nicht # Initialisierung von GPIO27 als Button (Eingang)
automatisch beendet. button = Button(27)
46

LED über ULN2003A steuern
Ein ULN2003A ist ein integrierter Schaltkreis mit 7
bipolaren NPN-Darlington-Transistoren. Damit kann man
eine Spannung bis 50 Volt (V) und einen Strom bis 500
Milliampere (mA) pro Ausgang schalten. Eine
Besonderheit ist die bereits integrierte Freilaufdiode an
den Ausgängen. Dadurch kann man problemlos Relais,
Motoren und andere induktive Lasten schalten.
Hinweis: Beachte bitte, dass der ULN2003A gegen # 1 Sekunde warten / Blinken im Verhältnis 2 zu 3
Ground (GND) schaltet. Beim Verschalten von Bauteile, sleep(1)
die hiervon abweichen kann das Verwirrung stiften. [Link](2,3)
47

Motor über ULN2003A steuern (1)
Motoren ndet man überall, wo etwas bewegt werden
muss. Zum Beispiel Fahrzeuge, Ventilatoren oder
Antriebe zum Ö nen und Schließen.
Diese Motoren und Antriebe laufen nicht dauerhaft,
sondern nur wenn etwas bewegt werden soll. Zum
manuell Bedienen, also zum Einschalten und
Ausschalten, eignen sich meist Taster oder Schalter. Zur
elektrischen Steuerung gibt es oft Relais,
Halteschaltungen, mit und ohne Zeitgeberschaltung.
48

fi
ff
Motor über ULN2003A steuern (2)
• Zur Steuerung eines Motors mit dem Raspberry Pi • Motoren sind Verbraucher, die einen vergleichsweise
kann ein GPIO genutzt werden, der als Ausgang hohen Strom verbrauchen. Insbesondere beim
programmiert wird. Allerdings darf ein Motor nicht Anlaufen. Also im Einschaltmoment. In der
direkt mit dem GPIO-Ausgang verbunden werden. aufgebauten Schaltung wird der Motor über die 5-
Denn ein GPIO-Ausgang eignet sich nicht zur Volt-Leitung vom Raspberry Pi mit Strom versorgt.
Stromversorgung des Motors. Ein Verbraucher, wie ein • Was wichtig ist, dass man weiß, dass abhängig vom
Motor, braucht immer eine eigene Stromversorgung. Raspberry-Pi-Model und vom verwendeten Netzteil,
Zum Beispiel ein Netzteil. Unabhängig davon muss der Aufbau funktionieren kann, oder auch nicht. Im
zwischen GPIO-Pin und Verbraucher eine Treiber- günstigsten Fall wird im Desktop rechts oben die
Schaltung oder ein potentialfreier Kontakt geschaltet Meldung „Low voltage warning. Please check your
werden, damit der Verbraucher, in dem Fall der Motor, power supply.“ erscheinen. Das heißt nichts anderes,
unabhängig vom Raspberry Pi geschaltet werden als dass die Belastung durch den Motor die
kann. Wenn der Motor mit 12 Volt läuft, dann Versorgung im Raspberry Pi zur Unterspannung führt.
funktioniert das mit den 3,3 oder 5 Volt vom Wenn man das nicht abstellt, wird der Raspberry Pi
Raspberry Pi nicht. einfach abstürzen. Im schlimmsten Fall wird der
• Beachte bitte, dass der ULN2003A gegen Ground Raspberry Pi sofort ausgehen, weil das Netzteil nicht
(GND) schaltet. Beim Verschalten von Bauteile, die genug Strom liefert.
hiervon abweichen kann das Verwirrung stiften. • Stelle für den Dauerbetrieb von externer Beschaltung
eine eigene Stromversorgung bereit (Netzteil). Nur so
ist ein problemloser Betrieb möglich.
49

Relais-Board ohne ULN2003A steuern
Um ein Relais mit einem Raspberry Pi zu schalten
benötigt man in der Regel ein eigenes Netzteil für das
Relais und zusätzliche Beschaltung in Form eines
Transistors, zwei Widerstände und einer Diode. Und
dann muss das noch korrekt dimensioniert sein.
Der Vorteil eines Relais-Boards ist, dass die
notwendigen Bauteile korrekt dimensioniert und auf der
Platine mit dem Relais richtig verschaltet sind.
Außerdem hat ein Relais-Board auch noch schraubbare
Anschlüsse zum Verbinden nachfolgender Schaltungen
oder Geräte.
50

Relais-Board über ULN2003A steuern
Die typischen Relais-Boards sind für Mikrocontroller, wie
dem Arduino, konzipiert und arbeiten eingangsseitig mit
TTL-Steuersignalen (5 Volt und 0 Volt). Der Raspberry Pi
gibt an seinen GPIO-Ausgängen aber nur eine
Spannung von 3,3 Volt aus. Das reicht normalerweise
aus, um ein TTL-High-Signal zu erkennen und zu
schalten. Die Frage ist, ob das in der Praxis immer so
funktionieren wird und betriebssicher ist.
51

fi
LED-Ampel-Steuerung
Eine LED-Ampel-Steuerung lässt mit einigen Zeilen
from gpiozero import TrafficLights
Code in Python mit der Bibliothek GPIO Zero schnell from time import sleep
schreiben. GPIO Zero kennt dazu ein eigenes
Initialisierungs-Device für eine Ampel-Steuerung. Damit # Initialisierung: GPIO25/GPIO8/GPIO7 als Ampel
lassen sich drei LEDs zu einer Ampel zusammenfassen lights = TrafficLights(25, 8, 7)
und gemeinsam steuern.
# Definition einer Funktion für die Ampelphasen
def traffic_light_sequence():
# Wiederholung einleiten
while True:
# Rot-Phase
yield (1, 0, 0)
sleep(7)
# Rot-Gelb-Phase
yield (1, 1, 0) # rot+gelb
sleep(2)
# Grün-Phase
yield (0, 0, 1) # grün
sleep(5)
# Gelb-Phase
yield (0, 1, 0) # gelb
sleep(2)
52

LED-Lau icht
Ein LED-Lau icht lässt mit einigen Zeilen Code in
from gpiozero import LEDBoard
Python mit der Bibliothek GPIO Zero schnell schreiben.
from time import sleep
GPIO Zero kennt für eine LED-Reihe ein eigenes
Initialisierungs-Device, mit dem sich mehrere LEDs mit # Initialisierung von GPIO25, GPIO8, GPIO7,
einem Kommando gemeinsam steuern und zu als GPIO20 und GPIO21 als LED-Reihe (Ausgang)
Lau icht nutzen lassen. leds = LEDBoard(25, 8, 7, 20, 21)
# Wiederholung einleiten
while True:
# LED-Status setzen
[Link] = (1, 0, 0, 0, 0)
# Warten (Sekunden)
sleep(0.2)
[Link] = (0, 1, 0, 0, 0)
sleep(0.2)
[Link] = (0, 0, 1, 0, 0)
sleep(0.2)
[Link] = (0, 0, 0, 1, 0)
sleep(0.2)
[Link] = (0, 0, 0, 0, 1)
sleep(0.2)
53

fl
fl
fl
Herunterfahren per Taster
Wie schaltest Du einen Raspberry Pi richtig aus? Genau,
Du fährst ihn softwareseitig herunter, auch Shutdown
genannt. Wie jeden anderen Computer auch. Dafür gibt
es in der Regel im Betriebssystem eine Menü-Funktion.
Durch das softwareseitige Herunterfahren wird
sichergestellt, dass alle Speicherinhalte auf den
Massenspeicher geschrieben und alle Prozesse
kontrolliert beendet werden. Auf diese Weise vermeidest
Du Datenverlust und Inkonsistenzen im Speicher, die
einen erneuten, erfolgreichen Bootvorgang verhindern
würden.
54

Reaktionsspiel mit Tastern und LEDs (1)
Experimentieren mit Tastern und LEDs ist ja ganz nett.
Aber soll es das schon gewesen sein? Taster drücken
und LED geht an. Voll langweilig. Es wird Zeit das wir
etwas wirklich sinnvolles mit Tastern und LEDs machen.
Ein Spiel gefällig? Du musst natürlich zu Zweit sein,
sonst macht das keinen Spaß.
55

fi
Reaktionsspiel mit Tastern und LEDs (2)
from gpiozero import Button, LED def pressed_btn_2():
from time import sleep if led_2.is_lit:
import random start_game()
return
# LEDs initialisieren if led_3.is_lit:
led_1 = LED(17) led_2.on()
led_2 = LED(10) led_3.off()
led_3 = LED(9)
def start_game():
# Taster initialisieren # Alle LEDs ausschalten
btn_1 = Button(27) led_1.off()
btn_2 = Button(22) led_2.off()
led_3.off()
# Definition einer Funktion # Zufällige Zeit zwischen 5 und 10 Sekunden
def pressed_btn_1(): time = [Link](5, 10)
if led_1.is_lit: sleep(time)
start_game() led_3.on()
return
if led_3.is_lit: # Wenn ein Button gedrückt wird
led_1.on() btn_1.when_pressed = pressed_btn_1
led_3.off() btn_2.when_pressed = pressed_btn_2
# Spiel starten
start_game()
56

Weitere Ideen für Dich
So, jetzt hast Du genug experimentiert. Du bist jetzt 1. Schalte den Motor durch Drücken eines Tasters
bereit eigene Anwendungen zu programmieren. Wenn jeweils ein und aus.
Du noch nicht weist, was Du jetzt selber bauen sollst,
hier noch ein paar Ideen, die natürlich komplexer
sind, als das, was du bisher gemacht hast. 2. Starte und Stoppe das Lau icht durch Drücken
eines Tasters.
Die Lösungen für folgende Ideen kannst Du teilweise
aus den vorgegangenen Experimenten ableiten und
um eigene Ideen erweitert. 3. Erweitere die einzelne Ampel um 3 weitere Ampeln
für eine Kreuzung und programmiere die
Viel Vergnügen. Steuerung dafür richtig.
57

fl
fl
Lust auf mehr?
Elektronik-Set Sensor Edition
[Link]
59

Elektronik-Set Eingabe Ausgabe Edition
[Link]
60

Elektronik-Set Starter Edition
Mit Elektronik ohne Löten experimentieren
[Link]
61

Elektronik-Fibel
Elektronik - einfach und leicht verständlich
[Link] bel
62

fi
fi
fi