Nach dem Auspacken sieht man – wie in Bild 1 gezeigt – eine Platine mit einem MicroUSB-Anschluss und drei gleichberechtigten Pinheadern mit den I2C-Signalen. Auf der Unterseite der Platine befindliche Gumminoppen verhindern ein Verrutschen auf dem Tisch.

Bild 1. Der I2CDriver ist angenehm kompakt.

Für das I2CDriver Core Kit legt Excamera Labs drei Dupontkabelblöcke bei, die die direkte Verbindung mit Hardware ermöglichen. Die Versorgungspins liefern nominell bis zu 500 ​mA bei 3,3 V – in Bild 2 bis Bild 4 ist zu sehen, wie sich das Produkt bei Kontakt mit einer elektrischen Last verhält.

Bild 2. Der I2CDriver bei 500 ​mA.
Bild 3. ... bei 200 ​mA ... ​
Bild 4. ... und im Leerlauf.

Die 3,3 V entstehen übrigens aus der Stromversorgung des Rechners – es ist gut möglich, dass ein Teil der in den Oszillogrammen sichtbaren Welligkeit auf den USB-Bus zurückzuführen ist. Beachten Sie in diesem Zusammenhang auch, dass der I2CDriver keine galvanische Isolation zwischen DUT und Rechner garantiert.

 

Probelauf mit echter Hardware

Da im Unternehmen des Autors mit dem HygroSage gerade ein I2C-Sensorsystem entwickelt wird, bietet sich dieses für einen Test an. Hierzu schalten wir den I2CDriver zwischen PC und Sensorsystem (siehe Bild 5). Ob des geringen Stromverbrauchs „riskieren“ wir die Versorgung direkt aus dem I2CDriver.

Bild 5. Der I2CDriver in Verbindung mit einem Sensorboard des Autors.

HygroSage startete trotz des etwas heldenhaften Kabelaufbaus problemlos, die Stromverbrauchsanzeige auf der Oberseite des Bildschirms aktualisierte sich. Interessanterweise bevölkerte sich der Bildschirm des I2CDrivers erst nach dem Start der im nächsten Abschnitt genauer beschriebenen Computersoftware, die mitunter beim Hochfahren hängen blieb. Im Fall eines erfolgreichen Starts sieht man die in Bild 6 gezeigte Heatmap, die über die Zugriffshäufigkeit auf verschiedene Geräte informiert.

Bild 6. Wo nur ein Sensor, da nur eine farblich hervorgehobene Zahl.

Bei der Arbeit mit dem Farbdisplay fällt auf, dass Excamera den Einblickwinkel so gewählt hat, dass die Bildschirmausgabe aus einem gewissen Winkel sichtbar ist – blickt man direkt von vorne auf das Display, so ist insbesondere die Heatmap kaum zu sehen.

 

Steuere mich!

Unter [1] findet sich im Tab Resources die Datei i2cdriver-installer.exe, die die Inbetriebnahme unter Windows erlaubt. Nach dem Download müssen Sie sie rechts anklicken und im Einstellungsdialog als vom lokalen Rechner stammend markieren, bevor das Betriebssystem die Abarbeitung des Installers erlaubt. Mit Linux oder Mac OS arbeitende Entwickler finden auf der oben genannten Webseite analoge Anweisungen zur Einrichtung.

Nach getaner Arbeit öffnen wir den Ordner C:\Program Files (x86)\Excamera Labs\I2CDriver, in dem wir sowohl ein Kommandozeilenwerkzeug als auch eine GUI-Version des Produkts finden.

Wer die Software bei verbundenem I2CDriver anwirft und auf den Knopf Monitor Mode klickt, bekommt – wie in Bild 7 gezeigt – Informationen über die letzte abgefeuerte Transaktion.

Bild 7. Registeroperationen scheinen am Display des I2CDriver auf.

In der Praxis ist der Nutzen der (optisch ansprechenden) Analysefunktion allerdings eingeschränkt, weil in so gut wie allen Fällen mehr als nur ein Paket gleichzeitig durch die Luft fliegt. In diesem Fall bietet sich stattdessen ein Klick auf Capture Mode an. Der Knopf erscheint daraufhin, wie in Bild 8 gezeigt, aktiviert.

Bild 8. Die I2C-Driver-Desktopsoftware versprüht rustikalen Charme.

Die – in Tests des Autors reproduzierbar abstürzende – Funktion ist insofern grenzgenial, als sie das aufwandsarme Mitschneiden von Kommunikation ermöglicht. „Haarige“ Fehler, die nur gelegentlich auftreten, lassen sich so analog zum DPO-Verfahren von Tektronix „totmessen“.

 

Interaktion, programmatisch

Vor einiger Zeit gab es bei der Entwickler-Schmiede des Autors einen Auftrag, der die Implementierung eines vergleichsweise komplexen Algorithmus erforderlich machte. Als angenehmster Weg erwies sich, das Verfahren im ersten Schritt am PC zum Laufen zu bekommen, um es danach auf den Controller zu transplantieren.

Bei der Inbetriebnahme komplizierter Sensoren bietet sich eine ähnliche Vorgehensweise an. In der Eingabeaufforderung steht mit i2ccl ein Programm zur Verfügung, über das sie nach dem folgenden Schema Befehle an den I2CDriver senden:

C:\Program Files (x86)\Excamera Labs\I2CDriver>i2ccl.exe

Usage: i2ccl <PORTNAME> <commands>

 

Von besonderem Interesse ist hier die Möglichkeit, Informationen in einzelne Register von angeschlossenen Geräten zu schreiben oder diese auszulesen. Dies hilft nicht nur bei der Inbetriebnahme unbekannter Sensoren, sondern lässt sich auch zum Auslesen von Informationen bei (automatisierten) Testläufen verwenden.

Wer nicht in der Shell programmieren möchte, kann auf eine Python-API setzen. Der Hersteller demonstriert die Verwendung durch eine Gruppe vorgefertigter Beispieltreiber – mit dem folgenden Snippet lässt sich beispielsweise ein LM75B abernten:

    ​import i2cdriver​

  ​ ​ i2c = i2cdriver.I2CDriver("/dev/ttyUSB0")

    ​d=i2cdriver.EDS.Temp(i2c)

    d.read()

17.875

  ​ ​ ​d.read()

18.0

 

Die eigentliche Steuerungs-API ist simpel, und steht auf GitHub [2] zur Einsichtnahme bereit:

class LM75B:

    def __init__(self, i2, a = 0x48):

  ​     ​ self.i2 = i2

  ​      self.a = a

 

Excamera Labs implementiert die Hardwaretreiber unter Nutzung der Python-OOP-API. self ist ein von der Sprachspezifikation eingeforderter Treiber, während i2 ein I2C-Treiberobjekt darstellt. Zu guter Letzt ist a die Addresse, unter der der Sensor anzusprechen ist.

Das Einlesen von Registerinformationen erfolgt dann nach dem folgenden Schema:

    def reg(self, r):

        return self.i2.regrd(self.a, r, ">h")

       

    def read(self):

        return (self.reg(0) >> 5) * 0.125

 

Angemerkt sei, dass es ein an i2cdetect angelegtes Scan-Kommando gibt, das bei Aufruf aus der Python-Kommandozeile die von OrangePi und Co. bekannte Scanfunktion ausübt.

Zu guter Letzt sei noch auf die unter [3] bereitstehende Dokumentation verwiesen. Sie erklärt sowohl die I2C-API als auch das physikalische Kommunikationsprotokoll – wer mit der FTDI-API auf Du und Du ist, kann den I2CDriver auch direkt ansprechen.

 

Fazit

Der I2CDriver ist eines jener Produkte, dessen Lebenssinn man erst nach etwas Kontemplation erfasst, dieses danach aber nicht mehr missen möchte. Egal ob bei der schnellen Analyse der Aktivität eines I2C-Netzwerks oder bei der Inbetriebnahme eines Sensors - das Board leistet wertvolle Hilfe. Der Preis ist in Anbetracht der einzusparenden Zeit angemessen – dass es keinen Standalone-Modus gibt, ist schade.

 

----------------------------------------------------------------------------------------------------------------------------------------------------

Wollen Sie weitere Elektor-Artikel lesen? Jetzt Elektor-Mitglied werden und nichts verpassen!

----------------------------------------------------------------------------------------------------------------------------------------------------