Was ist ein Evaluation Board?
Häufig stellen Hersteller von ICs auch sogenannte Evaluation Boards her. Es ist im Endeffekt nichts anderes als der IC auf einer Platine die das "herum experimentieren" damit erleichtert. So wird z. B. schon für eine saubere Spannungsversorgung gesorgt, an den UART Anschlüssen sitzt der benötigte Pegelwandler dran um eine echte RS232 Schnittstelle offen zu legen, … alles was man als Bastler oder Hardwareentwickler so braucht um schnell mit dem IC klar zu kommen und dessen Funktionen zu testen.
Schön und gut. Warum jetzt mit Raspberry Pi?
Der Raspberry Pi hat ja eigentlich schon alles "on board" was er braucht, von daher ist sowas doch eigentlich nicht benötigt? Nun ja, es geht mir hier nicht um den Raspberry ansich, sondern ausschließlich um dessen GPIO Pins.
Er hat ja einen 26(+8) bzw. 40 Pin Header, je nach Version, wo noch diverse Steuersignale ausgegeben und eingelesen werden können. Genau um diesen geht es mir. In den neueren Versionen (in meinem Fall musste einer meiner Zero's herhalten) sind es immerhin 28 I/O Pins (-2 auf die man selber nicht zugreifen kann). Ein paar dieser Pins können umkonfiguriert werden und als serielle Schnittstelle (UART), SPI und I²C/TWI genutzt werden.
Der Aufbau
Früher gab es doch immer diese COM Port Tester mit einer LED pro Signalleitung. Etwas Ähnliches wollte ich haben, eine LED für jedes Signal die dessen Pegel anzeigt. Ein kleines Breadboard soll es ermöglichen, kleine ICs und Schaltungen direkt aufzubauen, ohne dass man das Große Board auspacken muss. Reicht häufig eh schon aus. Eine Buchsenleiste stellt die Versorgungsspannungen (5V, 3,3V, GND) bereit.
Jetzt braucht so eine LED zwar nicht viel Strom, aber LED und dazu noch ggf. angeschlossene Bauteile, das könnte ja vielleicht zu viel werden. Daher habe ich mich dazu entschieden die LEDs mittels Bustreibern zu versorgen statt von dem GPIO selbst. Somit ist der Stromverbrauch auf den Signalleitungen nahezu gleich 0.
Elektrisch gesehen ist die Schaltung sehr simpel. Eigentlich zu simpel um einen Schaltplan zu zeichnen. Es ist für jedes Signal nur:
- +5V –– Vorwiderstand –– LED –– Bustreiber Ausgang (zieht auf Masse)
- Bustreiber Eingang –– Raspberry GPIO Pin
Mehr nicht. Die Versorgungsspannung für die Treiber sind die 3,3V vom Raspberry. Als Bustreiber nutze ich 1x 74HC244 (inventierend) und 3x 74HC240 (nicht inventierend). Der inventierende ist deswegen da weil Signale wie UART, SPI CS und I2C/TWI active low sind, also würde die LED im Leerlauf die ganze Zeit über leuchten, ich wollte es aber lieber so haben dass sie bei Aktivität leuchtet. Geschmackssache.
Der Aufbau war dann doch etwas komplexer als ursprünglich gedacht. Ich wollte es unbedingt klein halten. Außerdem hatte ich noch Gehäuse zu liegen wo der Pi Zero perfekt rein passte, und laut Augenmaß auch der Rest meines Vorhabens. … Tja, was soll ich sagen. Passt, wurde aber verdammt eng und eine verfluchte Fummelei. Ich kann jetzt erstmal keinen Kupferlackdraht mehr sehen. Warum? Seht ihr später auf den Bildern.
Ach ja, 104 x 73 x 10,3mm ist das Gehäuse klein. Wobei Gehäuse ist es im Sinne des Erfinders auch nicht gewesen. Es war eine Schutzverpackung für den Transport. Da drin wurden die Color OLED Displays verschickt die ich mir geordert hatte (für ein anderes Projekt).
Fragt nicht wie lange ich dran gesessen habe. Ich weiß es selber nicht. Ist auch ganz gut so.
Das Ergebnis
Zumindest die Bustreiber, da musste ich 2 von übereinander löten, sonst hätte es vom Platz her nicht gereicht. Alle Signale (außer Betriebsspannung) sind per Kupferlackdraht verdrillt und verlegt. Auf den Bildern nicht mehr so gut zu sehen. Macht nix ^^
Links klar der Raspberry Pi Zero, Mitte die Bustreiber (oben) und LEDs (unten), Rechts die Buchsenleisten für die Spannungen und darunter das kleine Breadboard.
Nicht hübsch aber selten. Und es funktioniert. Für meine Zwecke reicht es vollkommen aus. Klar könnte man es noch professioneller gestalten, aber … Ach wozu.
Das Ganze funktioniert natürlich mit jedem Raspberry Pi genau so. Ich habe mich primär wegen der Größe für den Zero entschieden.
Wie man jetzt mit den GPIO's vernünftig umgeht erfahrt ihr in einem späteren Post.