Der im November 2020 in den Markt eingeführte Raspberry Pi 400 ist eigentlich ein Raspberry Pi 4, der in einer Tastatur eingebaut ist. Der GPIO-Erweiterungsanschluss befindet sich auf der Rückseite des Gehäuses. Der Anschluss von zusätzlicher Hardware birgt immer Risiken, vor allem beim Prototyping. Das Pufferboard, das wir hier vorstellen, wurde speziell für den Raspberry Pi 400 entwickelt. Es ermöglicht den Anschluss externer Logik für alle 26 GPIOs, sowohl mit 3,3-V- als auch mit 5-V-Versorgung. Die dafür eingesetzten Puffer/Pegelwandler bieten zusätzlich auch ESD-Schutz.
 

Der 400

Raspberry-Pi-Boards müssen hier kaum vorgestellt werden. Seit der Einführung der ersten Version im Jahr◦2012 sind sie Gegenstand (oder Teil) vieler Projekte in Elektor gewesen. Wir haben eine ganze Reihe unterschiedlichster Hardware-Projekte und Erweiterungsplatinen für diese Prozessorboards vorgestellt. Die jetzt hier gezeigte Schaltung ist nicht neu; die erste Version wurde bereits◦2015 auf Elektor Labs besprochen. Im Jahr◦2018 wurde dieser Entwurf an den erweiterten 40-poligen I/O-Anschluss angepasst, der seit der Einführung des Raspberry Pi◦B+ [2] Standard für den Anschluss zusätzlicher Hardware an den Raspberry Pi ist. Und nun wird die letztere Version an eines der neueren Mitglieder der Raspberry-Pi-Produktfamilie angepasst - den Raspberry Pi 400.

Ganz einfach gesagt, ist der 400er ein Raspberry◦4, der in eine Tastatur eingebaut ist. Er ähnelt damit den einst berühmten Computern der 1980er Jahre wie dem Commodore◦64, Sinclair Spectrum, Acorn◦BBC und ähnlichen. Von den Spezifikationen her ist der Raspberry Pi natürlich um ein Vielfaches leistungsfähiger als seine mittlerweile antiken Vorgänger, aber es gibt auch eine auffällige Ähnlichkeit, nämlich einen GPIO-Erweiterungsanschluss auf der Rückseite des Gehäuses, an den der Benutzer externe (zugekaufte oder selbst entworfene) Hardware anschließen kann. Der Anschluss von zusätzlicher Hardware birgt aber immer Risiken, vor allem in der Entwicklungsphase. Die hier vorgestellte Pufferplatine vermindert das Risiko, dass der Raspberry Pi dabei beschädigt wird. An die Pufferplatine kann externe Logik mit einer Versorgungsspannung von 3,3◦V oder 5◦V angeschlossen werden, und die dafür verwendeten Puffer/Pegelwandler bieten einen eingebauten ESD-Schutz.

Die Hardware

Der Schaltplan des Projekts (Bild◦1 und angefügt als Download) ist exakt derselbe wie im Artikel aus dem Jahr◦2018. Die verwendeten 8-Bit-Puffer/Spannungswandler TXS0108E sind bidirektional, und jeder A-Port- und B-Port-Pin verfügt über einen Pull-up-Widerstand. Der Pull-Down-Widerstand eines GPIOs des Raspberry Pi liegt typischerweise in der Größenordnung von 40...60◦kΩ, was zu hoch ist, um den I/O richtig „herunterzuziehen“, wenn die Pufferplatine eingesteckt ist. Bei dieser Eingangskonfiguration ist also der logische Pegel nicht richtig low; der Pull-down funktioniert nicht wie vorgesehen.
 

Bild 1. Déjà vu. Die Schaltung der Pufferplatine.

Die I/Os haben separate Versorgungspins zur Raspberry-Pi-Seite (VCCA) und zur Außenwelt (VCCB). Jeder A-Port-I/O des TXS0108E verfügt über einen Pull-up-Widerstand zu VCCA, der mit der +3,3-V-Spannungsversorgung des Raspberry Pi◦400 verbunden ist, und jeder B-Port-I/O besitzt einen Pull-up-Widerstand zu VCCB. VCCB für den Pegel der I/Os auf K2 kann am Jumper JP3 entweder auf +3,3-V- oder auf +5-V-Logik eingestellt werden. Die Pull-ups der Puffer haben einen Wert von 40◦kΩ, wenn der Ausgang auf Low steht, und einen Wert von 4◦kΩ, wenn der Ausgang auf High steht. Es handelt sich also faktisch um Open-Drain-Ausgänge. Wenn zum Beispiel eine LED vom Ausgang des Puffers nach Masse angeschlossen wird, entsteht ein Spannungsteiler, wenn ein zusätzlicher Vorwiderstand verwendet wird. Eine ohmsche Last am Ausgang führt zu einer Verringerung des logischen High-Pegels, etwas, das Sie beachten sollten!

Es gibt zwei rücksetzbare 0,5-A-PPTC-Sicherungen (F1 und F2) in den Versorgungsleitungen zwischen K1 und K2 auf der Pufferplatine, um die +5-V- und +3,3-V-Stromversorgung des Raspberry Pi◦400 zu schützen. Für die Implementierung eines I2C-Busses zur Kommunikation mit externer Hardware (GPIO2 ist SDA und GPIO3 ist SCL) können die zusätzlichen Pull-up-Widerstände R1 und R2 durch die Jumper JP1 und JP2 aktiviert werden.

Während des Hochfahrens des Raspberry Pi werden GPIO0 (ID_SD) und GPIO1 (ID_SC) verwendet, um das EEPROM eines I2C-HAT (Hardware Attached on Top) zu lesen. Nach dem Booten können diese GPIOs wie die 26 anderen verwendet werden, aber es muss darauf geachtet werden, dass das System nicht beim Booten beeinträchtigt wird, wenn ein I2C-HAT montiert ist. Um das Lesen von GPIO0 und GPIO1 während des Bootens zu verhindern, fügen Sie den folgenden Eintrag in die Konfigurationsdatei /boot/config.txt ein:

force_eeprom_read=0

Weitere Informationen über die Datei config.txt file finden Sie in der Raspberry-Pi-Dokumentation.

Das Platinenlayout

Der Schaltplan mag alt sein, aber die Platine (Bild◦2) wurde speziell für den Raspberry Pi◦400 angepasst. Die Gerber-Dateien für diese neue Platine stehen zum Download bereit, so dass Sie sie beim Platinenhersteller Ihrer Wahl bestellen können. Viel bequemer ist es natürlich, die komplett bestückte Pufferplatine im Elektor-Store zu kaufen.

Bild 2. Das Layout der neuen Pufferplatine.

Für den Stecker auf der Raspberry-Pi-400-Seite (K1) wird eine rechtwinklige Buchse verwendet, so dass die Pufferplatine in den GPIO-Header auf der Rückseite des Gehäuses eingesteckt werden kann (Bild◦3). Beim Anschluss K2, der die gepufferten I/Os bereitstellt, handelt es sich um einen vertikalen 40-poligen Standardheader (K2). Das Board ist mit 55◦x 44◦mm einschließlich der Buchse K1, die über die Kante der Platine herausragt, etwas kleiner als die ursprüngliche Pufferplatine aus dem Jahr◦2018. Im Vergleich zur Originalplatine 150719-1 sind die beiden Stiftreihen von K1 vertauscht, da hier eine Buchse verwendet wird. Das Anbringen einer vertikalen 40-poligen Stiftleiste für K1, um diese Pufferplatine wie bei der älteren Version des Puffers über ein Flachkabel mit einem „normalen“ Raspberry Pi zu verbinden, funktioniert hier zwar nicht,

Bild 3. Die Pufferplatine, eingesteckt in den Raspberry Pi 400.

man kann, wie Bild◦4 zeigt, dieses Modul aber einfach sekrecht direkt auf den GPIO-Header eines Raspberry Pi◦2...4 aufstecken.

Bild 4. Die Platine kann auch mit „klassischen“ Raspberry-Pi-Boards verwendet werden.

Der Ausgangsanschluss K2 kann über ein kurzes 40-poliges Flachbandkabel mit zwei 2x20-Buchsen mit externen Schaltungen verbunden werden, oder nur eine einzelne Buchse verwenden, die mit angelöteten kurzen Käbelchen angeschlossen wird, oder gar nur über einzelne Buchsen mit Drähten. Seien Sie jedoch vorsichtig, wenn Sie eine 40-polige Buchse auf K2 drücken oder sie von der Platine abziehen. Tun Sie dies nicht, solange die Pufferplatine noch im Raspberry Pi◦400 steckt, da dies einen gewissen Kraftaufwand erfordert und beim Herumwerkeln der GPIO-Header des Raspberry Pi 400 beschädigt werden könnte.

Testen der Pufferplatine

Zwei sehr einfache Python-Programme zum Testen der Pufferplatine - entlehnt aus dem älteren Projekt - stehen auf der Elektor-Labs-Seite dieses Projekts als Download 210320-11.zip bereit. Eines testet alle GPIOs als Output (Check_all_GPIOs_as_output.py), das andere testet alle GPIOs als Input (Check_all_GPIOs_as_input.py). Im Raspberry Pi OS (aka Raspbian) genügt ein Doppelklick auf eine der Dateien, um die Standard-IDE für Python zu öffnen. Dann wählen Sie RUN, um den Test zu starten.

Wenn man die GPIOs als Ausgang testet, braucht man nur eine einzelne Low-Current-LED zwischen einem Pin und GND, um zu sehen, ob ein Ausgang funktioniert oder nicht. Als Vorwiderstand für die LED kann ein 1,8-kΩ-Widerstand verwendet werden, wobei der Wert nicht wirklich kritisch ist. Er begrenzt den Strom durch die LED, wenn diese direkt an die positive Versorgungsspannung angeschlossen ist. Die Ausgänge werden nacheinander in vier Gruppen IOA bis IOD von jeweils maximal acht Pins getestet. Aufgrund des Open-Drain-Ausgangs beträgt die Spannung über einer (roten) LED plus Widerstand etwa 2,6 V, wenn 5 V als Versorgungsspannung für die Ausgänge gewählt ist (JP3). Schließen Sie den Widerstand plus LED an einen der gewählten Ausgänge an, und er wird für 0,2 s eingeschaltet. Die Wiederholrate dieses Impulses hängt von der Größe der Gruppe ab: 1,6 s für die Gruppen A...C mit jeweils acht Ausgängen und nur 0,4 s für Gruppe◦D, die nur zwei Ausgänge besitzt. In der Zeile

for i in IOA:            # leds blink 0.2 s in IOx group

ist „IOA“ für den Test der anderen Gruppen entsprechend zu ändern. Natürlich können auch GPIO0 und GPIO1 (ID_SD und ID_SC) zu einer der Gruppen hinzugefügt werden.

Das Programm zum Testen der GPIOs als Eingang verwendet als Anzeige des Testprogramms einen I/O als Ausgang, und zwar standardmäßig GPIO3. Schließen Sie dazu einen 1,8-kΩ-Widerstand und eine LED zwischen diesem Pin 5 von K2 und GND an. Vom Quellcode wird jeweils nur ein Eingang getestet, um sicherzustellen, dass auch nur dieser als Eingang funktioniert. Ändern Sie die Zahl in der folgenden Zeile, um einen anderen GPIO als Eingang zu testen:

IN1 = 2  #selected GPIO to test as input

Das Programm gibt den ausgewählten GPIO und seinen Eingangspegel aus. Die Pull-ups der Eingänge sind aktiviert, sodass der aktuelle Eingangspin mit Masse verbunden werden muss, damit die angeschlossene LED leuchten kann. Wählen Sie am Ende der Prüfungen einen anderen als GPIO3 für den Ausgang, damit Sie auch diesen IO3 als Eingang testen können. Natürlich gibt es auch zahlreiche andere Möglichkeiten, die GPIOs zu testen. Wenn jemand also einen effizienteren und/oder schnelleren Weg entdeckt: bitte mitteilen!

Mit diesem Puffer können Sie neue Hardware unbesorgter an den Raspberry Pi 400 anschließen, da die Gefahr, dass der Pi bei Experimenten beschädigt wird, deutlich geringer ist. Dass das Risiko geringer ist, heißt nicht, dass die Pufferplatine garantiert, dass gar nichts mehr schief gehen kann. In vielen Fällen könnte es nicht schaden, der Elektronik auch etwas logisches Denken hinzuzufügen!



Übersetzung: Rolf Gerstendorf


Haben Sie Fragen oder Kommentare?

Wenn Sie technische Fragen oder Kommentare zu diesem Artikel haben, können Sie sich per E-Mail an die Elektor-Redaktion wenden.

 

 

 

Stückliste
Widerstände:
R1,R2 = 10 k, 100 mW, 1 %, SMD 0603
 
Kondensatoren:
C1…C8 = 100 n, 50 V, 10 %, X7R, SMD 0603
 
Halbleiter:
IC1…IC4 = TXS0108EPWR, SMD TSSOP-20
 
Außerdem:
K1 = 2x20-polige Stiftleiste, rechtwinklig, Raster 2,54 mm
K2 = 2x20-polige Stiftleiste, gerade, Raster 2,54 mm
JP1,JP2 = 1x2-polige Stiftleiste, gerade, Raster 2,54 mm
JP3 = 1x3-polige Stiftleiste, gerade, Raster 2,54 mm
JP1,JP2,JP3 = Jumper, Raster 2,54 mm
F1,F2 = Zurücksetzbare PPTC-Sicherung, SMD (Polyfuse, 1210L050YR Littelfuse)
Platine 210320-1 v1.0