Beachten Sie, dass der INA219 an zwei Stromkreisen hängt. Dabei handelt es sich zum einen um die Versorgungsspannung des Chips selbst, also denselben Kreislauf, an dem alle Komponenten hängen. Zusätzlich ist das Breakout noch über die Anschlüsse V+ und V- in den Lastkreislauf eingeschleift. Verwenden Sie für V+ und V- unbedingt die Buchse mit den Schraubanschlüssen, denn ein Anschluss über die Pin-Reihe (hier gibt es ebenfalls die Pins V+ und V-) führt zu fehlerhaften Messungen.
Beim SPI-Display fällt die Verkabelung aufwendiger aus. Die Tabelle “Standard-Pins” zeigt die Pin-Belegung am RasPi und Pico. Letzterer erweist sich als sehr flexibel, was die Pins angeht, die Belegung gibt hier nur die Vorgaben aus der Software wieder. Der parallele Anschluss zweier Displays funktioniert übrigens nicht: Die Software versucht als Erstes, das I2C-Display anzusprechen, und wechselt erst dann zum TFT-Display, wenn das nicht klappt.
|
Pin |
Pico |
RasPi Name (phys. Nummer) |
|---|---|---|
|
SDA |
GP2 |
GPIO2 (3) |
|
SCL |
GP3 |
GPIO3 (5) |
|
SCLK |
GP14 |
GPIO11 (23) |
|
TX (MOSI) |
GP15 |
GPIO10 (19) |
|
CS |
GP9 |
GPIO8/CE0 (24) |
|
Data/Command |
GP10 |
GPIO25 (22) |
|
RST |
GP11 |
GPIO24 (18) |
Auf dem Pico
Die im Projekt [2] vom Autor entwickelte Software ist in Python implementiert und benötigt CircuitPython als Laufzeitumgebung. Für die Installation von CircuitPython finden sich im Netz diverse Tutorials, der Kasten “CircuitPython-Installation” beschreibt sie im Schnelldurchgang. Mehr als ein paar Minuten dauert der Vorgang nicht.
Nach der Installation von CircuitPython stecken Sie den Pico einmal ab und dann wieder an. Er meldet sich jetzt als Mini-USB-Stick mit einem Speicherplatz von 1 MByte. Falls das System das neue Laufwerk wieder nicht automatisch einhängt, erledigen Sie das manuell. Anschließend führen Sie die Befehle aus Listing 1 aus.
Listing 1
Installation (Pi Pico)
$ sudo apt-get -y install pip3 $ sudo pip3 install circup $ git clone https://github.com/bablokb/circuitpython-vameter $ cd circuitpython-vameter $ circup install --path /Pfad/zum/Pico -r requirements.txt $ rsync -av src/ /Pfad/zum/Pico
Der erste Befehl installiert den Python-Paketmanager Pip, der zweite Befehl dann das Tool Circup, das die Bibliotheksabhängigkeiten verwaltet. Die restlichen Zeilen klonen das Projekt, richten alle benötigten Bibliotheken direkt auf dem Pico ein und kopieren am Ende auch die Projektdateien (Fonts, Programme). Falls Sie nicht die Standard-Pins aus der gleichnamigen Tabelle nutzen, müssen Sie als letzte Nacharbeit noch die Pin-Zuordnung in der Datei main.py auf dem Pico anpassen.
CircuitPython-Installation
Die aktuelle CircuitPython-Version für den Pi Pico und andere Mikrocontroller finden Sie auf der Webseite des Projekts [5]. Von dort laden Sie die entsprechende UF2-Datei herunter. Anschließend stecken Sie den Pico an Ihren Rechner an, während Sie [BOOTSEL] gedrückt halten. Das bringt den Pico in den Update-Modus für die Firmware. Er meldet sich als 128 MByte großer USB-Stick. Unter Windows erscheint ein Laufwerk CIRCUITPY, unter Linux ein Device /dev/sdX1 (je nachdem, welche Massenspeicher bereits am Rechner angeschlossen sind). Falls Ihr System das Gerät nicht automatisch einhängt, holen Sie das manuell nach. Danach kopieren Sie die im ersten Schritt heruntergeladene UF2-Datei auf den Pico. Das installiert die (neue) CircuitPython-Version und startet die MCU neu, was auch den Stick aushängt. Anschließend können Sie den Pico abziehen.
Auf dem RasPi
Die Installation auf dem RasPi ist noch einfacher (Listing 2), dauert aber ein wenig länger. Das liegt daran, dass die CircuitPython-Emulationsschicht Blinka [3] samt aller Bibliotheken in einer virtuellen Python-Umgebung landen. Auf einem Pi Zero mit aktuellem “Bullseye” dauerte das sechs Minuten, auf einem RasPi 3B+ mit dem älteren “Buster” sogar noch länger, da das benötigte NumPy-Paket nicht kompiliert vorlag und Pip es aus den Quellen übersetzte. Blinka gibt es auch für weitere SBCs (etwa diverse Orange-Pi- und Odroid-Varianten). Dort sollten Installation und Betrieb ebenfalls problemlos funktionieren.
Listing 2
Installation (RasPi)
$ git clone https://github.com/bablokb/circuitpython-vameter $ cd circuitpython-vameter $ sudo tools/install-pi
Während auf einem Mikrocontroller wie dem Pico das Programm gleich mit der Stromversorgung losläuft, müssen Sie auf dem RasPi das Programm als /usr/local/bin/cp-vameter aufrufen. Die Blinka-Version unterstützt auch Kommandozeilenparameter. Eine Übersicht erhalten Sie über die Hilfeoption -h. Dank der Kommandozeile könnten Sie auf einem RasPi auf das Anschließen einer Tastatur verzichten und via SSH arbeiten. Ansonsten gibt es keine Unterschiede zur Pico-Version, außer der schon erwähnten Einschränkung, dass Blinka die I2C-OLED-Displays nicht unterstützt.
Anwendung
Das Programm befindet sich immer in einem von drei Zuständen: dem Ready-Modus, dem Config-Modus und dem Active-Modus. Je nach Modus ist die Tastatur anders belegt (in Abbildung 5 durch eine blaue, schwarze und rote Beschriftung unterschieden). Im Ready-Modus zeigt das Programm das Minimum, Maximum und den Durchschnitt der letzten Messreihe an. Mit der View-Taste [5] in der Mitte wechseln Sie zwischen Spannung und Stromstärke. Nach einem Neustart sind diese Werte jeweils null.

Abbildung 5: Die Tastenbelegung für das Keypad. Je nach Modus aktivieren Sie die schwarze, rote oder blaue Belegung.
Den Config-Modus erreichen Sie über die Config-Taste [0]. Hier stellen Sie das Messintervall, die Messdauer und das Update-Intervall für den Bildschirm ein (Abbildung 6). Die Next-Taste wechselt dabei zwischen den Parametern und am Ende wieder zurück in den Ready-Modus. Bei einer Messdauer von null läuft die Messung, solange Strom am Lastkreislauf anliegt.





