Raspberry Pi

PiXtend: Linux-Tools anwenden

PiXtend bietet im Zusammenhang mit dem Raspberry Pi umfangreiche Steuerungsaufgaben für Projekte aller Art. Vorallem im Bereich der Hausautomation ist PiXtend die ideale Grundlage. Die von den Machern mitgelieferten Linux-Tools pxauto und pixtendtool ermöglichen dabei ein einfaches Verwalten der auf dem Board befindlichen Ein- und Ausgänge. Im Folgenden wird anhand einiger Beispiele der Umgang mit den Linux-Tools beschrieben.

Vorbereitung

Für diesen Artikel verwende ich das PiXtend Board im Basic Bausatz. Welche Bauelemente und Schnittstellen in den unterschiedlichen PiXtend-Varianten untergebracht sind, wurde im Beitrag PiXtend: Hardware für anspruchsvolle Projekte und Hausautomation ausführlich erklärt. Weiterhin verwende ich das Raspbian Image von PiXtend. Dieses hat sowohl die Linux-Tools, als auch alle notwendigen Tools und Bibliotheken vorinstalliert. Mehr zur Installation von den PiXtend Linux Tools haben wir im Artikel PiXtend: Inbetriebnahme mit Linux-Tools oder CODESYS beschrieben. Aus diesem Grund wird an dieser Stelle ein lauffähiges Raspbian mit installierten Linux-Tools vorausgesetzt.

Linux-Tools: pixtendtool und pxauto

Die in der Programmiersprache C geschriebenen Linux-Tools pixtendtool und pxauto ermöglichen ein komfortables Steuern aller Komponenten auf dem PiXtend-Board. Das Pixtendtool ist angelehnt an ein gewöhnliches Linux-Konsolenprogramm, welches durch Übergabe entsprechender Parameter bei Aufruf die Operation einmalig ausführt. Dagegen bietet pxauto eine Art “grafische” Oberfläche in der Konsole und tauscht zyklisch Daten mit dem PiXtend Board aus. Dadurch können die einzelnen Zustände der Ein- und Ausgänge live betrachtet werden. Beide Tools arbeiten mit der WiringPi-Bibliothek.

Pixtendtool anwenden

Das Linux-Tools pixtendtool ist wie ein normales Konsolenprogramm handzuhaben. Beim Aufruf werden dem Tool ein oder mehrere Paramter übergeben. In diesem Fall bilden die zu übergebenden Paramater die gewünschten Ein- und Ausgaben der Schnisstellen, sprich, Ausgänge werden geschalten und Eingänge werden gelesen. Bei diesem Modus wird die durch den Befehl abgesetzte Ausgabe oder Abfrage einmalig ausgeführt, also kein zyklischer Betrieb. Bei Eingabe ungültiger Paramter wird automatisch die Programmhilfe von pixtendtool aufgerufen. Diese informiert über alle möglichen Paramter und kann als eine Art Bedienungshilfe angesehen werden. Alternativ kann die Hilfe mit folgendem Befehl angezeigt werden.

sudo ./pixtendtool -h

Das Tool muss mit Superuser-Rechten „sudo“ ausgeführt werden. Damit der gezeigt Befehl funktioniert muss man vorher in das Verzeichnis wechseln, indem das Tool abgelegt ist. Die Ausgabe der Programmhilfe sieht wie folgt aus.

pixtendtool (Bild: pixtend.de)

pixtendtool (Bild: pixtend.de)

Aus den aufgelisteten Parametern zum Steuern des Boards, werden im weiteren Verlauf des Beitrages einige ausgewählt, um beispielhaft den Gebrauch und die Funktionsweise des pixtendtool zu verdeutlichen.

Digitale Ein- und Ausgänge

Zum Lesen und Schalten der digitalen Ein- und Ausgänge verwenden wir laut Programmhilfe die Parameter -di und -do VALUE. Das d steht dabei für digital und das i bzw o für Input und Output.

Digitale Ausgänge schalten

Zunächst betrachten wir das Schalten eines digitalen Ausgangs. Beim Schalten eines digitalen Ausgang steuern wir prinzipiell alle digitalen Ausgänge mit einem Befehl. Grund dafür ist, dass wird ein für die digitalen Ausgänge relevantes Ausgangsbyte setzen. Ein Byte setzt sich üblicherweise aus 8 Bit zusammen. Jedem digitalen Ausgang ist dabei ein Bit zugeordnet. Alle Prozessdaten und Bytes rund um PiXtend können im Dokument App Notes: Prozessdaten von PiXtend nachgelesen werden. Die Anordnung und Bedeutung der einzelnen Bits ist im folgenden Bild zu betrachten.

PiXtend Digital Out Byte

PiXtend Digital Out Byte

Setzt man ein Bit für einen Ausgang auf 1, dann wird der entsprechende Augang aktiv. Im Detail wird die Last nach Ground geschalten, da es sich um einen Low-Side-Schalten (Open-Drain-Ausgang) handelt. Bei einer 0 wird der Ausgnag demzufolge nicht geschalten. Übersetzt man die Bitfolge des Bytes in eine Dezimalzahl, dann erhält man den Wert des Bytes, welcher im Parameter -do als VALUE übergeben werden muss. Die Umrechnung von Binär in Dezimal kann z.B. mit einem beliebigen Umrechner gemacht werden, oder eben im Kopf.

Als Beispiel setzen wir die digitalen Ausgänge DO0, DO1 und DO3 auf High, die restlichen bleiben Low. In Anlehnung an die gezeigte Grafik zur Bitaufteilung erbigt sich der folgende Binärcode:

00001011

Umgerechnet entspricht das Dezimal 11. Mit dieser Information können wir jetzt die gewünschten digitlen Ausgänge mit folgendem Befehl schalten.

sudo ./pixtendtool -do 11

Zur Überprüfung sollten auf dem PiXtend-Board die entsprechenden LEDs der digitalen Ausgänge leuchten. Beim Systemstart sind alle Werte standardmäßig auf 0, sprich ausgeschalten.

Digitale Eingänge lesen

Das Lesen von digitalen Eingängen realisieren wir mit folgendem Befehl.

sudo ./pixtendtool -di

Als Rückgabe erhalten wir in der Konsole eine Dezimalzahl. Diese gibt den Wert des aktuellen Statusbytes für die digitalen Eingänge an. Analog zum schalten von digitalen Ausgängen muss jetzt der Dezimalwert in eine Binärfolge umgerechnet werden. Dies kann wieder über einen geeigneten Umrechner im Netz oder im Kopf passieren. Die Bitfolge ist entsprechend der oben gezeigten Abbildung übertragend zu interpretieren.

GPIOs und Relais

Für die Arbeit mit GPIOs und Relais nutzen wir die Parameter -rel VALUE (Relais an/aus), -gw VALUE (GPIOs schalten) und -gr (GPIOs lesen). Die Handhabung dieser beiden Komponenten funktioniert analog zu den digitalen Ein- und Ausgängen und wird aus diesem Grund nicht noch einmal erläutert. An dieser Stelle möchte ich nochmal auf die PiXtend Dokumentation App Notes: Prozessdaten von PiXtend hinweisen. Dort ist der Umgang mit allen Komponenten ausführlich beschrieben.

Analoge Ein- und Ausgänge

Neben den digitalen Schnittstellen bietet das PiXtend-Board analoge Ein- und Ausgänge. Diese können ebenfalls mit dem pixtendtool angesteuert werden. Zum Lesen eines Analogwertes auf einem Eingang benutzen wir den folgenden Befehl.

sudo ./pixtendtool -ai INDEX

Statt INDEX muss die Nummer des zu lesenden analogen Eingangs angegeben werden.

Das schalten eines analogen Ausganges möchte ich an dem folgenden Befehl erklären.

sudo ./pixtendtool -ao 1 0 0 1023

Der hier genannte Befehl würde auf dem analogen Ausgang A0 (Kanal 0) 10 Volt ausgeben. Das Schalten des analogen Ausganges wird dabei zunächst mit dem Parameter -ao signalisiert. Die nachfolgende 1 beschreibt den Zustand „enable“ für die beiden DAC-Kanäle auf dem PiXtend-Board. Die anschließende 0 wählt den zu verwendenden Kanal aus (0 oder 1). Weiterhin folgt eine weitere 0. Dieser Wert beschreibt die Verstärkung, die beim DAC eingestellt werden soll. An dieser Stelle kann das Datenblatt des Bauelements zum besseren Verständnis herangezogen werden. Auf Seite 22 im Datenblatt kann nachgelesen werden, dass der letzte Wert den 10 Bit Wert für den entsprechenden Ausgang angibt. Daher kann bei einer Verstärkung von 0 die maximale Zahl 1023 bei 10 Volt erreicht werden.

Ein Tipp vom Entwickler ist, den Ausgang mit einem Poti nachzuregeln. Dabei schreibt man die maximale Zahl 1023 und misst mit einem Multimeter die Ausgangsspannung des analogen Ausganges. MIt einem Poti kann dann die Ausgangsspannung auf 10 Volt getrimmt werden, sodass immer der korrekte Wert zwischen 0 und 10 Volt genutzt werden kann.

Temperatur und Luftfeuchtigkeit

Neben analogen und digitalen Ein- und Ausgängen kann das PiXtend-Board Sensoren zur Messung von Temperatur und Luftfeuchtigkeit verwalten. Dabei werden die Sensoren an die GPIO-Pins angeschlossen und können im DHT-Modus genutzt werden. Zum Lesen der des aktuellen Sensorwertes verwenden wir für Temperatursensoren den Befehl

sudo ./pixtendtool -tr CHANNEL

und für Luftfeuchtigkeitssensoren nehmen wir

sudo ./pixtendtool -hr CHANNEL.

Das Channel ersetzen wir durch die Nummer des GPIO-Pins, an dem wir den entsprechenden Sensor angeschlossen haben. Der Rückgabewert der beiden Abfragen muss zur richtigen Interpretation noch angepasst bzw. in eine Gleitkommazahl verwandelt werden. Zum Beispiel ist die Rückgabe der Temperaturabfrage 207 – Dann muss der Wert noch durch 10 geteilt werden, um die Gleitkommazahl 20, 7 °C zu erhalten. Im Falle der Luftfeuchtigkeit gilt dies ebenfalls.

Live-Daten mit pxauto

Neben dem pixtendtool stellen die Entwickler das bereits angesprochene Linux-Konsolen-Tool pxauto zur Verfügung. Trotz das es ein Programm für die Konsole ist, bietet es eine Art grafische Oberfläche, deren Navigation mit einigen ausgewählten Tasten funktioniert. Die in dem Tool angezeigten Daten sind Live-Werte der Ein- und Ausgänge und werden 10 mal pro Sekunde von PiXtend-Mikrocontroller aktuallisiert. Zum starten des Programms müssen wir in das Verzeichnis wechseln, in dem das Linux-Tool abgelegt ist. Mit folgendem Befehl kann dann pxauto gestartet werden.

sudo ./pxauto

Die grafische Oberfläche in der Konole sieht dann wie folgt aus.

pxauto (Bild: pixtend.de)

pxauto (Bild: pixtend.de)

Mit den Pfeiltasten hoch und runter kann man zwischen den einzelnen Schnittstellen wechseln. Im Falle der Ausgänge kann man mit der Taste Enter die einzelnen Ports wählen und einen Wert setzen. Das Tool pxauto eignet sich daher um während der Umsetzung eines Projektes schnel und unkompliziert Ausgänge zu schalten und Eingangwerte zu überwachen.

Damit die Daten zyklisch ausgetauscht und auch in pxauto ausgewert werden, ist es zu Beginn notwendig das sogenannte „uc_control“ Byte auf den Wert 16 zu setzten. Mit dem Setzen des Bytes wird der Mikrocontroller aufgefordert, Daten zyklisch zu übertragen. Um diese Einstellung vorzunhemen navigiert man mit Hilfe der Pfeiltasten in den Reiter CTRL und setzt UC_CTRL auf 16. It der Mikrocontroller erfolgreich konfiguriert, dann sollten sich die unteren Statuswerte direkt anpassen und die Kommunikation funktioniert.

Quelle (Stand 05.06.2015): PiXtend

Über den Autor

Tony

Ich bin Tony, begeistert von Einplatinencomputer und berichte über meine Erfahrungen und Projekte mit dem Raspberry Pi, Banana Pi und anderen Minicomputern.

Hinterlasse eine Antwort