Schalter, Taster und (Reed-)Kontakte am Raspberry Pi

power-button-mdDer wohl häufigste Anwendungsfall bei der Nutzung der GPIO-Ports eines Raspberry Pi ist der Anschluss eines Tasters bzw. Schalters. Dies kann zum Einen tatsächlich nur ein Taster bzw. (Kipp-)Schalter sein, zum Anderen wären sog. Reed-Kontakte (Magnetschalter) oder Schwimmer denkbar, um einen Wasserstand zu kontrollieren.

 

Beispiele für Schaltelemente in diesem Beitrag
taster Taster Druck auf Taster schließt Schaltkreis
für den Zeitraum der Betätigung.
reed Reedschalter Magnetkontakt, schließt wenn Magnet
(rechts im Bild)  in unmittelbarer Nähe.
Zumeist findet dieser Kontakt
Anwendung an Fenster oder Türen.
schwimmer Schwimmschalter Schaumstoff treibt mit Wasser nach oben
und schließt Schaltkreis. Fällt das Wasser-
niveau, sinkt auch der Schaumstoff und
der Schaltkreis öffnet sich.
schalter Schalter Je nach Anschluss öffnet oder schließt sich
der Schaltkreis abhängig von der
Kippstellung des Hebels.

 

 

Nun sollte man meinen, das Anschließen wäre ein Leichtes, einfach einen Draht an einen freien 3,3V-PIN und den anderen an einen freien GPIO-PIN. Das könnte durchaus funktionieren, jedoch entsteht bei dieser Art und Weise das Problem, dass sich der entsprechende GPIO-Port, sofern der Stromkreis nicht geschlossen ist, in einem “schwebenden” Zustand befindet und die Ausgabe weder “high” (1) noch “low” (0) definierbar ist.

Daher empfiehlt sich bei solchen Schaltungen der Einsatz eines sogenannten Pullup-Widerstandes. Dazu wird der gewünschte GPIO-Port mit einem zwischengeschalteten 10kΩ-Widerstand mit einem 3,3V-PIN des Raspberrys verbunden. So liegt am GPIO-Port, unabhängig von irgendeinem Schaltzustand, immer ein “high-“Signal an. Wird nun der GPIO-Port (diesmal ohne Widerstand) mit einem Ground-Port des Raspberrys verbunden, zieht dieser auf “low“; der Zustand “0” wird ausgegeben. Veranschaulicht wird dies im folgenden Schaltplan:

 

Taster_GPIO

 

Dabei spielt es keine Rolle, ob der Taster/Schalter/Reed-Kontakt/Schwimmer nun zwischen +3,3V und dem Widerstand oder zwischen GND und dem GPIO-PIN gesetzt wird. Im oberen Bild wurde die 2. Option gewählt.

Sind alle Verbindungen hergestellt, kann nach der Wiederinbetriebnahme der Himbeere der Zustand eines GPIO-PINs beispielsweise mit der wiringPi-Bibliothek ausgelesen werden, was in diesem Beitrag ausführlich beschrieben wird. Ein weiterer Anwendungsfall wäre die Integration in ein Hausautomatisierungssystem wie openHAB, welche in diesem Beitrag dokumentiert ist.