Maker-Tools in der Praxis Raspberry Pi als Datenkrake

Das DAQ-Modul im Raspberry-Hat-Standard MCC 118 erfasst acht analoge Spannungsverläufe in Summe mit bis zu 100 kS/s. Bis zu acht solcher Module sind mit einer Summenabtastrate von 320 kS/s stapelbar.

Kann das Zusatzmodul zur Datenerfassung mit industriellen Lösungen Schritt halten, oder bleibt "Pi mit Hut" doch nur eine modische Spielerei?

Mit seinen zahlreichen Schnittstellen stellt Raspberry Pi 3 und das industrietaugliche Upgrade Modell 3B+ zunächst eine Plattform für den Datentransfer. Für das Sammeln von Prozessdaten in einer Anwendung müsste zusätzliche Sensorik angebunden werden. Dies bedeutet nicht nur ein Wachstum des Formfaktors mit der Peripherie, sondern macht unter Umständen auch die Einbindung zusätzlicher DSPs notwendig. Weiterhin muss so eine Eigenentwicklung vor dem Einsatz verifiziert und spezifiziert werden.

Als Alternative zur Eigenentwicklung hat Measurement Computing zwei Platinen im Raspberry-Hat-Standard vorgestellt, die über die GPIO an den Single-Board Computer angebunden werden. MCC 118 erfasst Spannungen auf bis zu acht Kanälen über einer gemeinsamen Masse mit 12 Bit Auflösung und 100 kS/s Summenabtastrate (Bild 1). Die 4096 Stufen werden dabei maximal auf einen Erfassungsbereich von - 10 V bis + 10 V verteilt. Weiterhin sind bis zu acht HAT-Platinen übereinander stapelbar und erfassen dann bis zu vierundsechzig Kanäle mit insgesamt 320 kS/s. Bei dieser Stapelung muss jede Platine mit der richtigen Jumperkonfiguration [1] versehen werden.

MCC 152 besitzt zwei analoge Ausgaben und acht DI/Os für 5-V-/3,3-V-Logikpegel. Im Raspberry-Hat-Standard wird die Konfiguration in einem EEPROM auf der Platine hinterlegt, in der Regel erfolgt die Treiberinstallation damit automatisch.

Die Implementierung setzt auf der Open Source API – Universal Library for Linux - auf, die Python- und C/C++-Module zur Akquise/Steuerung aller MCC-Produkte beinhaltet. Ein spezifisches Derivat für MCC 118 kann über Github auf den lokalen Pi gespiegelt und per Shell-Skript installiert bzw. deinstalliert werden. Als Beispielprogramme liegen neben den elementaren Akquisen im Terminal auch bereits Interfaceapps für Datenlogger, Webserver und eine zustandsbasierte Automatisierungsumgebung bereit. Der Code dieser Referenzprogramme ist gut lesbar und sinnvoll dokumentiert. Ebenso liegt für MCC 118 im Git-Repository eine erschöpfende Dokumentation [2] bereit, die von der Hardware- über Softwareinstallation hin zur Programmierstruktur reicht. Wer C-Programmierung und die Raspbian-Konfiguration kennt, empfindet diese Ausgangslage als einigermaßen barrierefrei.

Die wichtigsten Funktionen in C/C++ oder Python lesen dabei Status- und Geräteinformationen, kalibrieren einen Akquisekanal, lesen einen einzigen Analogwert, setzen den Trigger (steigend, fallend, high, low) oder parametrieren und starten die Akquise mit gesetzter Rate. Die Funktionen geben dabei Rückmeldung über Erfolg oder Fehler. Das ist insbesondere zur Aufzeichnung großer Datensätze notwendig: hier kann die Speicherallokation auf dem Raspberry versagen.

Mit der API ist man dann nicht mehr auf proprietäre Analyseumgebungen angewiesen, sondern kann die Daten direkt mit Standardbibliotheken wie <math.h> oder mächtigen Open-Source-Tools wie GSL oder Gnuplot weiterverarbeiten und visualisieren. Eine weitere mächtige Analyseumgebung auf dem Raspberry Pi bietet Wolframs Mathematica [3], das weiterhin aus dem Raspbian-Repository aber nicht mehr über das NOOBS-System bezogen werden kann. Je nach lokalem Rechenaufwand geschieht die vollständige Analyse (z.B. Bewertung durch KI) dann zur Akquisezeit und nicht erst nach Export der aufgezeichneten Daten. So kann eine Live-Steuerung mit anderer Peripherie oder dem MCC 152 entworfen werden.

Obwohl das Modul zu allen Pis ab Modell A+ kompatibel ist, wird man den größten Vorteil wohl in einer Remoteloggerkonfiguration ab Modell 3 ziehen. Durch den kompakten Formfaktor von Pi mit Hut (Bild 2) kann das Bundle eine in situ Logging-Aufgabe auch bei beengten Platzverhältnissen übernehmen und die vorverarbeiteten Daten über Wifi/Bluetooth/Ethernet an eine Cloud oder ein Webinterface weitergeben.

Eine schnelle Remote-Akquise gelingt mit den Schritten:

  1. Konfiguration des Pi als Access Point
  2. ssh auf dem Raspberry aktivieren (Schalter im Konfigurationsmenue), Wifi-Verbindung herstellen, Anmeldung über $ ssh Login@IP-Adresse im Terminal 
  3. Ein Beispielmodul unter Ausgabe in einer Datei $ ./Binärmodul>Zieldatei.dat auf dem Pi ausführen
  4. Die Zieldatei mit scp auf den Remote-PC kopieren

Zur Weitergabe der gesammelten Daten über den Push-Service MQTT bietet sich die paho-Bibliothek [4] in C/C++ oder Python an. Auf Basis der vorliegenden API und Dokumentation lässt sich ein eigenes Akquiseprojekt in wenigen Stunden programmieren.  

Wer einen schnellen Plot sucht, muss lediglich den vorliegenden Python-Webserver starten und kann unter Verbindung mit dem Access Point, alle acht Kanäle über einen Browser aufrufen. Die Darstellung beinhaltet neben Parametrierung und Kanalauswahl auch Scherenzoom und Screenshotfunktion. Im Arbeitsbeispiel (Bild 4) wurden einige PWM-Signale auf dem Arduino Micro programmiert und mit MCC 118 erfasst. Die Darstellung über den Webbrowser zeigt Bild 5.