Als pHat-Basis verwendet das Projekt Adafruits Perma-Proto-Bonnet [2]. Die Bezeichnung Bonnet (Kappe) spielt darauf an, dass es sich hier nicht um einen vollwertigen µHAT handelt: Der Platine fehlt das EEPROM, das echte HATs zum Speichern von Konfigurationsdaten verwenden.
Eine Motivation für das Projekt war, an einem echten Beispiel die Eignung des Bonnets zu testen. Es bricht die zwei parallel angeordneten GPIO-Reihen des RasPi in eine einzelne lange Reihe auf, was das Löten vereinfacht. Außerdem verfügt es über die von Breadboards bekannten verbundenen Löcher sowie je eine Reihe von verbundenen Masse- und Spannungspins mit 3,3 und 5 Volt.
Die Montage
Vor der Montage der Schaltung auf der Platine steht das Prototyping auf dem Breadboard an (Abbildung 4). Das Ganze sieht zwar wegen der vielen Verbindungen fast zu komplex aus, stellt aber trotzdem sicher, dass die Bauteile tatsächlich funktionieren.

Abbildung 4: Um alle Komponenten auf ihre Funktion zu prüfen, gilt es zunächst, die Schaltung auf einem Breadboard nachzubauen.
Für das endgültige Layout gibt es zwei Möglichkeiten. Auf ein DIN-A4-Blatt passen ohne Probleme drei vergrößerte Screenshots der Platine; hier lassen sich mit einem Stift die möglichen Layouts durchprobieren. Mit der Platinenlayout-Software Fritzing [3] haben Sie es noch einfacher: Adafruit bietet eine Bibliothek von Bauteilen an [4], in der Sie unter anderem das Bonnet und das Display finden. Ein weiterer Vorteil von Fritzing liegt darin, dass fast alle Bauteile die korrekten Größen aufweisen, was das Layout sehr vereinfacht (Abbildung 5).
Im Unterschied zu selbst erstellten Platinen müssen Sie allerdings mit der vorgegebenen Anordnung der Pins leben, und frei nach Murphy’s Law passt diese nie zu den verwendeten Bauteilen. Das Problem tritt insbesondere beim Anschluss des MCP3002 an die SPI-Pins zutage. Zum Glück lässt sich mit dem Bonnet zweilagig arbeiten, sodass sich ein Teil der Verbindungen auf die Unterseite der Platine verlegen lässt. Achten Sie aber beim Einlöten akribisch auf die richtige Reihenfolge.
In unserem Projekt fanden aber zum Glück alle Komponenten ihren Platz. Zur Not gibt es noch eine größere Variante des Bonnets, die aber größer ausfällt als der Pi Zero. Eine weitere Alternative für etwas größere Projekte bietet eine aufgesteckte Zusatzplatine.
Die Software
Im Github-Projekt des Autors [5] finden Sie die passende Software für den ADC-pHat. Vorbereitend installieren Sie ein Raspbian Lite (“Stretch” oder “Buster”) auf dem Pi Zero. Danach führen Sie die Befehle aus Listing 1 aus. Das letzte Kommando installiert alle notwendigen Pakete sowie das Skript /usr/local/sbin/adc_read.py.
Listing 1
$ git clone https://github.com/bablokb/pi-adc-phat.git $ cd pi-adc-phat $ sudo tools/install
Bauen Sie den pHat exakt wie beschrieben nach, müssen Sie am Skript nichts ändern. Andernfalls gilt es, dort die verwendeten GPIOs für Taster und LED sowie den ADC zu konfigurieren. Das Installationskommando ändert zudem die /boot/config.txt für I2C und SPI und aktiviert den Systemd-Service pi-adc-phat.service, der das oben genannte Skript ausführt. Nach einem Neustart sollte die grüne LED leuchten und damit die Betriebsbereitschaft anzeigen.
Ein Druck auf den Taster startet oder stoppt einen Thread, in dem die Methode collect_data() läuft. Dabei handelt es sich um eine Endlosschleife, in der das Programm dann den ADC per SPI ausliest, die Daten aufbereitet und sie anzeigt. Jeder Durchlauf dauert ungefähr 0,2 Sekunden, was hauptsächlich an der Ansteuerung der Anzeige liegt. Das ließe sich zwar optimieren, aber für den geplanten Einsatzzweck genügen fünf Werte je Sekunde. Das Skript baut sogar eine zusätzliche Verzögerung von 0,3 Sekunden ein, damit die Anzeige nicht zu sehr flackert.
Um die eigentlichen Messwerte einzusehen, melden Sie sich am RasPi an, stoppen den Service (Listing 2, Zeile 1) und starten das Programm adc_read.py manuell unter Angabe eines Dateinamens (Zeile 2). Die entsprechende Datei enthält die Messwerte samt Zeitstempel im CSV-Format. Sie laden sie nach Vergabe passender Zugriffsrechte (Zeile 3) beispielsweise in ein Tabellenkalkulationsprogramm und bereiten darin die Daten auf. Übergeben Sie adc_read.py statt des Dateinamens ein -, erscheinen die Werte direkt im Terminal (Zeile 4).
Listing 2
$ sudo systemctl stop pi-adc-hat.service $ sudo /usr/local/sbin/adc_read.py Datei.csv $ sudo chown pi:pi Datei.csv $ sudo /usr/local/sbin/adc_read.py -
Um das System sauber herunterzufahren, drücken Sie den Taster länger als zwei Sekunden, was einen sofortigen Shutdown auslöst.
Fazit
Der Mini-Bonnet bietet eine gute Grundlage für eigene kleine Schaltungen, solange das Layout auf der Platine Platz findet. Perfekt passt das selten, Perfektionisten sollten stattdessen eine eigene Platine entwerfen. Hakt es aber beim Platz nur ein bisschen, helfen Tricks, etwa das Ausweichen in die dritte Dimension oder das Durchtrennen von Leiterbahnen. Wie beim RasPi gilt auch hier das Motto, dass knappe Ressourcen die Basis für kreative Lösungen bieten.






