GPIO-Tutorial

Ab Version 1.0.4 können die Linux-Versionen von Repetier-Server direkt auf GPIO-Pins der Schnittstelle zugreifen. Dies erlaubt es, einen Ausgangspin zu verändern, um z.B. ein Relais anzusteuern. Man kann aber auch einen Eingang auf eine Signaländerung überprüfen und Aktionen auslösen. Dies wäre z.B. erforderlich, um einen servergesteuerten Filament-Sensor einzubauen oder um einige zusätzliche Knöpfe zu haben, die schnelle Funktionen wie einen Notfallknopf auslösen.

Wenn du glaubst, dass dies etwas für dich ist, stelle sicher, dass deine elektronischen Kenntnisse für diese Aufgabe ausreichen. Du wirst neue Elektronik anschließen und konfigurieren, und Fehler können zu physischen Schäden an deinem Computer führen. Du machst dies auf dein eigenes Risiko, also sage nicht, ich hätte dich nicht gewarnt.

Nun zu den Mutigen, die Seite zur Steuerung dieser Pins befindet sich in Globalen Einstellungen GPIO Pins. Zu Beginn ist die Liste leer und du kannst neue Einträge mit einem Dialogfeld am unteren Rand hinzufügen. Du wählst einen der fünf Typen aus und gibst ihm einen Namen. Wenn du ihn auch im G-Code verwenden willst, sollte der Name KEINE Leerzeichen enthalten! Der Name für das Menü kann später ausgewählt werden. Nach dem Hinzufügen öffnet sich der Editor. Der Inhalt ist unterschiedlich und wird in den nächsten Abschnitten beschrieben.

Ein vollständig konfiguriertes Setup könnte wie dieser Testaufbau aussehen.

In der Abbildung oben siehst du die Tabelle mit allen Einträgen. Name ist der offizielle Name, den du auch für den Server-Befehl @gpio verwenden wirst. Funktion beschreibt, was er tut. GPIO Pin ist die Pin-Nummer. Raspberry Pi-Benutzer sollten auf das Nummerierungsschema achten. In den verfügbaren Tutorials werden verschiedene Nummerierungen verwendet. Oft wird die WiringPi-Nummerierung verwendet, aber wir verwenden die von Linux zugewiesene Nummerierung, die in den Tutorials normalerweise BCM-Nummerierung genannt wird, basierend auf dem verwendeten Chipsatz. Für PWM-Ausgänge ist es der PWM-Kanal und nicht eine Pin-Nummer!

Schalte Ausgang an/aus

Dies ist die einfachste Ausgangsfunktion. Sie ermöglicht es dir, einen Pin-Ausgang entweder durch einen @gpio-Server-Befehl oder durch Umschalten im Menü zu steuern. Das Wichtigste bei der Verwendung eines Ausgangspins ist, nicht mehr Strom zu ziehen, als der Pin liefern kann. Das ist normalerweise nicht viel. Wenn man mehr zieht, kann es bestenfalls passieren, dass genau dieser Ausgang stirbt. Füge einen 330-Ohm-Widerstand nach dem Ausgang hinzu und du bist normalerweise sicher. Das ist immer noch genug für eine einfache LED. Für ein Relais braucht man mehr Elektronik, also überlasse ich das den Experten.

Schauen wir uns also den Editor an:

Beschreibung ist für deinen internen Gebrauch. Mache dir Notizen, damit du weißt, was du wolltest oder was du tun musst, um es wiederherzustellen.

Angezeigter Name ist der Name, den du im Menü für die Funktion sehen wirst.

Als nächstes hast du Icon an (optional) und Icon aus (optional). Beide sind optional und sollten SVG-Grafiken sein, die anzeigen, ob das Gerät ein- oder ausgeschaltet ist. Wenn nicht, erhältst du von uns ein Standard-Schaltersymbol.

Drucker-Zuordnung steuert, in welches Menü die Funktion eingefügt wird. Es ist entweder eine globale Funktion oder einer der Namen eines 3D-Druckers. Die Im Menü anzeigen Checkbox steuert, ob die Funktion überhaupt in einem Menü angezeigt wird. Wenn nicht, kann sie nur als Serverbefehl aufgerufen werden.

Als Nächstes siehst du den korrekten Serverbefehl zum Aktivieren, Deaktivieren oder Umschalten der Pin-Ausgabe.

GPIO Pin ist der physikalische Pin mit der Nummerierung, die Linux verwendet. Für Raspberry Pi Benutzer bedeutet dies das BCM Nummerierungsschema.

Die Checkbox Aktivieren beim Initialisieren kann gesetzt werden, wenn das Signal beim Start des Servers eingeschaltet sein soll. Andernfalls wird es beim Start ausgeschaltet sein.

Die letzte Checkbox Polarität invertieren invertiert die Ausgangsspannung.

Schalte PWM Ausgang

Dies ist etwas komplexer. Ein PWM-Ausgang ändert das Ausgangssignal sehr schnell. Der Prozentsatz zwischen Ein und Aus kann definiert werden, um z.B. ein gedimmtes Licht zu ermöglichen. Das Hauptproblem ist, dass man nicht einfach sagen kann, welcher Pin verwendet werden soll. Stattdessen ordnet man ihn einem Kanal zu. Welcher Kanal welchem Pin zugeordnet ist, hängt von deiner Linux-Konfiguration ab. Beim Raspberry Pi musst du diese Funktion sogar aktivieren. Normalerweise wird QWM für die Audioausgabe verwendet. Beim Raspberry Pi musst du die Datei /boot/config.txt bearbeiten, um QWM für die Pins zu aktivieren und um zu konfigurieren, welcher Kanal welchem Pin zugeordnet ist. Z.B. Hinzufügen von

dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4

Aus der Beschreibung des Overlays:

Name: pwm-2chan
Info: Configures both PWM channels
Legal pin,function combinations for each channel:
PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1)
PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1)
N.B.:

  1. Pin 18 is the only one available on all platforms, and it is the one used by the I2S audio interface. Pins 12 and 13 might be better choices on an A+, B+ or Pi2.
  2. The onboard analogue audio output uses both PWM channels.
  3. So be careful mixing audio and PWM.
  4. Currently the clock must have been enabled and configured by other means.
Load: dtoverlay=pwm-2chan,<param>=<val>
Params:
pin Output pin (default 18) – see table
pin2 Output pin for other channel (default 19)
func Pin function (default 2 = Alt5) – see above
func2 Function for pin2 (default 2 = Alt5)
clock PWM clock frequency (informational)

Der Dialog für PWM sieht wie folgt aus:

Der Hauptunterschied besteht darin, dass man den PWM Kanal und den PWM Chip anstelle eines Pins einstellen muss. Chip ist normalerweise 0. Frequenz ist die PWM-Frequenz, während Periodendauer beim Initialisieren definiert, wie stark sie eingeschaltet ist. Der Wert ist in Prozent. Mit Polarität invertieren kann man 0% auf 100% stellen und umgekehrt.

Im Menü gibt es einen Drehknopf zur Auswahl der Leistung. Im Server-Befehl kannst du immer noch An und Aus für 100% und 0% verwenden, aber auch den Prozentsatz direkt eingeben.

Starte G-Code bei Änderung

Die letzten 3 Auswahlen sind sehr ähnlich. Sie unterscheiden sich nur in der Aktion, die bei einer Signaländerung ausgeführt wird. Hier nehmen wir einen GPIO-Pin als Eingangssignal und führen eine Aktion bei einem Wechsel von Low zu High oder High zu Low aus. Der Dialog sieht wie folgt aus:

GPIO Pin ist der Eingangssignal-Pin. Auch einige Chips können intern einen Pull-Up oder Pull-Down Widerstand definieren, wir können dies nicht tun. Daher ist es am besten, einen physischen Widerstand zu verwenden, um das Signal explizit zu ziehen, falls erforderlich. Normalerweise sollte ein Widerstand zwischen 1k und 10k keine Probleme machen.

Kante definiert, wann ausgelöst wird und kann Fallend (High to Low), Steigend (Low to High) oder Beides sein.

Entprellzeit gibt an, wie lange das Signal stabil sein muss, um auszulösen. Besonders wichtig bei billigen Knöpfen, die am Anfang das Signal wechseln.

Der letzte Punkt ist der G-Code, der auf dem ausgewählten Drucker ausgeführt werden soll. In diesem Fall gehen wir von einem externen Filamentsensor aus, den der Server überwacht. Wir lassen einen Info-Dialog erscheinen, der über das Problem informiert, und halten dann den Drucker an. Vergewissere dich, dass sich das Pausenskript vom Druck wegbewegt.

Starte Web-Aktion bei Änderung

Wie bei der vorherigen Eingabebehandlung. Der einzige Unterschied ist, dass du aus einer Dropdown-Liste die Web-Aktion auswählst, die ausgeführt werden soll. Natürlich muss diese zuvor auf der Registerkarte Web Aktionen definiert werden.

Starte externen Befehl bei Änderung

Wie bei den letzten 2 Eingaben. Hier wählst du eine der definierten externen Aktionen aus, die in extcommands.xml definiert sind.

Raspberry Pi

Von denen, die die GPIO-Pins verwenden, werden wohl 99 % eines der verfügbaren Raspberry Pi-Modelle verwenden. Alle neueren Modelle haben die gleiche 40-polige GPIO-Steckleiste, die ausdrücklich zur Erweiterung des Boards gedacht ist. Abgesehen von einigen 5V-, 3,3V- und Masse-Pins können alle für Eingabe- und Ausgabeoperationen verwendet werden. Wenn du kannst, spare die Pins aus, die auch für spezielle Funktionen wie I2C oder serielle Kommunikation verwendet werden können. Wenn du diese verwenden willst, stelle sicher, dass kein Treiber oder keine Software sie benutzt.

Auch hier wiederhole ich, dass Online-Tutorials zwei verschiedene Namensschemata verwenden: wiringPi und BCM. Hier benötigst du das BCM-Schema wie im Bild unten gezeigt:

Wenn du dich über SSH anmeldest, kannst du die Pins und ihre Konfiguration überprüfen:

gpio readall

Du kannst auch gpio verwenden, um Pins zu konfigurieren und zu ändern. Beachte, dass du beim Verweisen eines Pins die Option -g benötigst, um gpio anzuweisen, die BCM-Nummerierung zu verwenden.