Raspberry PI im Baugruppenträger

Sat 23 May 2020

Arduino, Elektronik, Raspi

Übersetzungen: EN

Auf dieser Seite wird ein modulares System zum (halbwegs) ordentlichen Aufbau von mehreren Raspberry PI-Computern samt Massenspeicher und Energieversorgung beschrieben.

Das System wird aus einem teilautarken PV-System gespeist.

System im Betrieb

Allgemeines

Beim Betrieb mehrerer Raspberry PI oder ähnlicher kleiner moderner Rechner kommt es schnell zu Kabelsalat. Normalerweise braucht man ein Netzteil pro Rechner, ein Netzwerkkabel, eventuell auch noch externe USB-Festplatten. Will man dann noch auf das Gerät lokal (ohne SSH) zugreifen, kommen dann noch HDMI-Kabel, Tastatur und ggf. eine Maus dazu.

Hat man nun mehrere in Betrieb, sei es als mini-Server, Testumgebung für Embedded-Systeme oder sonstige Einsatzzwecke, so ergibt sich ein nahezu undurchdringliches Gewirr von Kabeln. Gerade wenn ein Gerät getauscht oder umverkabelt wird, verschlechtert sich diese Situation noch extrem.

Nun möchte man also eine mechanische Organisation erreichen, die sowohl Ordnung schafft als auch Wartung erleichtert.

Mechanik

Das System basiert auf einem standardisierten Baugruppenträgersystem nach DIN IEC297-3. Diese erlaubt die Montage von Modulen im Eurokartenformat. Da der Formfaktor des Raspberry PI die Montage auf Eurokarte erlaubt und sogar manche kleinen Netzwerk-Switches (z.B. die GS105 Serie von Netgear).

Die einzelnen Karten werden in Schienen im Baugruppenträger eingeschoben und verbinden sich dann mittels einer 32-poligen Messerleiste nach DIN 41612 / IEC 60603-2 mit einem Bussystem welches Spannungsversorgung und Signaltransport ermöglicht.

Somit können verschiedene Komponenten wie Switches, Computer und Massenspeicher relativ flexibel angeordnet und erweitert werden.

Da 3,5"-Festplatten zwar gut in das Gehäuse passen aber nicht zwischen die Schienen, wurden Trägergestelle konstruiert und mit dem 3D-Drucker gefertigt.

Elektronik

Der Bus

Der Bus ist relativ einfach aufgebaut, hierzu wurden Federleisten mit langen Pins, wie sie z.B. für Wire-Wrap-Aufbau genutzt wurden, in den Träger eingeschraubt.

Die Bus-Verkabelung

Die Energieversorgung erfolgt mittels 1,5mm^2 Starrdraht aus der Hausinstallation der gereckt wurde und direkt zwischen den einzelnen Kontakten gespannt ist. Dieser wird einfach mit den Pins der Federleiste verlötet. So können die Federleisten mit nur vier Lötstellen und zwei Schrauben relativ leicht auf der gesamten Breite des Baugruppenträgers verschoben werden.

Pro Computer gibt es drei zusätzliche Signalleitungen, diese sind RXD/TXD für eine serielle Konsole und RESET. Somit ist es möglich, das System ohne mechanische Eingriffe schnell von der Softwareseite her warten zu können.

Die Module

Steuerung

Eine neue Komponente des Systems ist das Steuerungsmodul, es erlaubt den Zugriff auf die seriellen Konsolen der einzelnen Computer. Mittels eines USB-Seriell-Wandlers kann sowohl mit dem Mikroprozessor des Steuerungsmoduls (basierend auf der Arduino-Plattform) und jedem einzelnen Computer kommuniziert werden.

Der Schaltplan der Controller-Platine

Die seriellen Leitungen RXD und TXD werden durch Multiplexer zwischen den den Datenquellen umgeschaltet. Damit ist die Platine in der Kommunikation mit den Rechnern quasi transparent und beeinflusst das Timing der Verbindung im Gegensatz zum Puffer und Weitersenden von Daten durch den Mikroprozessor der Steuerung.

Der gesamte Baugruppenträger kann über das Controller-Modul versorgt werden, dabei wird über einen INA260 IC der Eingangsstrom und die Versorgungsspannung gemessen.

Strom- und Spannungssensor

Interessant ist die Art-und-Weise, wie das Arduino-Board über den selben USB-Serial-Wandler angesprochen und programmiert werden kann wie er auch zum Zugriff auf die einzelnen Rechner genutzt wird:

Beschaltung des Controllers

Die RXD-Leitung des Arduino ist permanent mit dem USB-Seriell-Wandler verbunden. Somit kann man der Prozessor jederzeit, auch während einer Verbindung mit dem einzelnen Rechner, angesprochen werden. Der Arduino ist fix auf 115200 bps eingestellt.

Hierzu wird die aus der Modemzeit bekannten Sequenz +++ genutzt. Konkret kann durch das Senden von drei aufeinander folgenden Plus-Zeichen mit einem zeitlichen Abstand von 10ms bis 3s der Arduino dazu gebracht werden, den Multiplexer auf den zum TXD des Arduino zu schwenken. Somit ist dieser über die Konsole erreichbar.

Wird ein Befehl zum Umschalten des Eingangs (z.B. c0 zum Verbinden mit dem ersten Rechner) gegeben, so werden RXD und TXD mit dem gewählten Rechner verbunden.

Zur Aktualisierung der Firmware des Controllers, dient das klassische STK500 Protokoll wie es auch auf anderen Arduino-Boards verwendet wird.

Durch die, low-aktive, DTR-Leitung des USB-Seriell-Wandlers wird ein Reset des Prozessors ausgelöst. Dieser startet eine Bootloader-Routine welche dann die Aktualisierung, wenn vom angeschlossenen Rechner angefordert, durchführt. Wird kein Upload angestoßen, startet der Controller das bestehende Programm.

Nun kommt allerdings die Multiplexer-Schaltung zum Zuge: Da der Bootloader nahezu sämtliche Pins des Prozessors auf hohe Impedanz gestellt. Durch die Widerstände R8..R11 werden die Adressleitungen der Multiplexer auf logisch 1 gezogen, somit wird automatisch der Arduino mit dem USB-Seriell-Wandler verbunden.

Allerdings wird das Signal durch die 10k-Längswiderstände, die zum Schutz von Geräten im “Hotplug-Betrieb” gedacht sind, derart schwach, dass es gegen die internen Pull-Up-Widerstände des USB-Seriell-Wandlers nicht ankommt. Hiergegen hilft der klassische HC14 Puffer, bei dem zwei 74HC14-Schmitt-Trigger-Inverter hintereinander geschaltet das Signal aufbessern. Da der UART-Chip zum Host mit 3,3V-Signalen arbeitet wird der HC14 entsprechend auch schon auf 3V3 betrieben.

Busschnittstelle und Multiplexer

Computer

Die einzelnen Computermodule basieren auf Streifenrasterplatinen mit Messerleisten-Verbindern.

Einplatinencomputer auf Steckkarte

Die Einplatinencomputer sind mittels M2.5 Abstandsbolzen fixiert und werden mit einem Huckepackmodul (HAT) mit einem Spannungswandler versehen. So kann der 24V-Bus den Computer versorgen.

Die Reset-Leitung, RXD und TXD des Rechners werden mittels Steckbrücken und der Streifenrasterkarte auf den Bus geführt.

Zusätzlich ist ein Schaltregler, basierend auf dem traditionsreichen LM2596, für externe Massenspeicher (meist +12V) vorhanden. Dieser wird auf Zugfederklemmen geführt, woran dann die Hohlstecker für den Massenspeicher-USB-Adapter angeschlossen werden können.

Massenspeicher

Hier können sowohl klassische drehende Festplatten in speziellen Trägern als auch SSD-Systeme, einfach auf Lochrasterplatinen befestigt, eingesetzt werden.

Festplattenträger

Switches

Die Netgear GS105x-Serie passt exakt auf Lochrasterplatinen mit Messerleisten. Auch ein LM2596 samt Beschaltung passt problemlos auf die Karte, sodass sich eine modulare Netzwerkinfrastruktur aufbauen lässt.

Switch auf Steckkarte montiert

Software

Die Software der Controllerplatine ermöglicht die Kontrolle der einzelnen Rechner sowohl über die serielle Schnittstelle als auch über den externen Reset. Somit können einige Probleme direkt und ohne herausziehen der Baugruppen diagnostiziert werden. Auch der aktuelle Energieverbrauch kann abgefragt werden.

Es sind gegenwärtig folgende Befehle implementiert:

Befehl Bedeutung Beispielausgabe
c[0..3] Verbinde zu Rechner x. Will connect you to 0
r[0..3] Sendet ein Reset-Signal an den Rechner Sending reset to 0…done
p Aktuelle Leistungsaufnahme ausgeben Current: 1390.00 mA
Bus Voltage: 23923.75 mV
Power: 33260.00 mW

Downloads

Es gibt