Allgemeines #
Die Idee einen PI zu nutzen um gleich mehrere Drucker mit Klipper anzusteuern klingt verlockend, doch ist sie das auch für dich? Ich möchte nicht in den Raum stellen das dies nicht geht, dies tut es, doch man erkauft sich hier gewisse negative dinge. Um dir das aufzuzeigen, habe ich nachfolgend eine PRO und CONTRA Liste erstellt.
Vorteile (PRO)
- Nur ein PI benötigt
- Einfachere Handhabung
- Weniger Verbrauch da nur ein PI läuft
- PI kann ggf. immer an bleiben
- Preisgünstig bei bestehenden Druckern
- PI muss nicht im Drucker untergebracht werden
- Zum steuern über Displays wird nur eines benötigt
- Verhalten wie z.B. “Repetier Server”
Nachteile (CONTRA)
- Stürzt der PI ab stehen alle Drucker
- PI wird stärker ausgelastet (WebCams!)
- Es ist nur eine CSI Kamera anschließbar
- PI Kann überlasten da er viele Aufgaben übernimmt
- Als Benutzer kann man durcheinander kommen auf welcher Instanz man gerade Änderungen vornimmt.
- Klipper kann den PI als HOST aufnehmen, dass geht nur für EINEN Drucker, dies macht die Nutzung der Resonanzmessung zunichte!
- Updates, hier kann es zu großen Problemen kommen!
Der hier aus meiner Sicht am schwerwiegendste Punkt, nur eine Klipper Instanz kann den PI als Host aufnehmen, nur bei diesem kann auch ein ADXL, I2C, SPI und anderer Sensor direkt angeschlossen werden. Die andere Klipper Instanz kann den PI nicht mit einbinden für Zusatzfunktionen.
Dennoch, wenn du es machen möchtest, die Steuerungen über den PI wie zusätzliche Sensoren auszulesen nicht nutzen möchtest, kannst du die Anleitung verwenden. Solltest du später feststellen das dies doch nicht so toll ist, kannst du auch jeden Drucker mit einem PI Zero ausstatten (Ich lege dir die neuen Zero 2 W ans herz, kosten ca. 16€ das Stück und sind so leistungsstark wie ein PI3). Für die Steuerung kann dann das PI was du hier verwendest genutzt werden, mit einem z.B. 7″ Display, dann hast du ein “Touchpanel” für dein Drucker. Natürlich funktioniert dies auch, wenn du diese Anleitung vollzogen hast, auf einem einzelnen PI.
Das Video zur Anleitung #
Benötigt #
Bei diesem Aufbau empfehle ich dringend einen leistungsstarken PI zu nehmen, also einen PI4 mit 4GB RAM. Dieser hat genug Kraft um 2-4 Drucker anzusteuern oder 2 Drucker und 2 Webcam Streams. Bitte KEINE USB Hubs am PI nutzen um die Anschlüssen zu erweitern!
- Raspberry Pi 3 oder 4 (https://amzn.to/3iSfSnt)
- Micro SD Karte (https://amzn.to/3oM0ehj)
- USB Netzteil für das Raspberry (https://amzn.to/2YCtlbG)
- Micro SD Kartenleser am PC (https://amzn.to/3DxeWN5)
Und natürlich 2 Drucker.
Als Grundlage dient das Einrichten eines Druckers auf Mainsail OS Basis für den ersten Drucker, welcher hier also schon funktionieren sollte. 1. Mainsail OS auf dem Raspberry PI einrichten
Aufbau #
In diesem Szenario beschreibe ich den Aufbau mit 2 Druckern, kann aber beliebig für 3 oder 4 wiederholt werden.

Firmware für den neuen Drucker erstellen #
Der erste Schritt, wie auch beim ersten Drucker, es muss die Firmware für das Board des zweiten Druckers gebaut werden. Stecke dazu den ersten Drucker vom USB ab, den neuen ran und folge dazu der Anleitung bis zum Punkt “Port für die Konfiguration ermitteln” und merke dir die Ausgabe von “ls /dev/serial/by-id/”
2. Klipper für den 3D Drucker bauen und verbinden
Beginnen mit den beiden Druckern, Anschluss prüfung #
Stecke nun den ersten Drucker wieder an den PI an. Prüfe nochmal über SSH, mit Putty auf das PI verbinden, ob BEIDE Drucker mit ihren IDs auftauchen. Tippe auf der SSH Konsole den Befehl ein und bestätige mit der Enter Taste.
ls /dev/serial/by-id/*

Sollte nur ein Drucker auftauchen, versuche bitte einen anderen Befehl:
ls /dev/serial/by-path/*
Solltest du erst mit dem 2ten Befehl erfolg haben, musst du alle alle Konfigurationen (printer.cfg) anpassen und im Pfad der Schnittstelle den Teil “/by-id/” durch “/by-path/” ersetzen!
Klipper Service duplizieren #
Um den 2ten Drucker ansteuern zu können, benötigst du eine zweite Klipper Instanz. Also lass uns diese “anlegen”. Dies geschieht auch im SSH Terminal über Putty. Du solltest also noch eingeloggt sein. Zuerst kopiere den Klipper Service mit folgendem Befehl:
sudo cp /etc/systemd/system/klipper.service /etc/systemd/system/klipper2.service

Als nächstes müssen wir die neue Instanz anpassen, öffne dazu den Editor:
sudo nano /etc/systemd/system/klipper2.service

Passe nun die Zeilen für eine zweite Instanz wie folgt an:
Before=moonraker2.service
Alias=klippy2
Environment=KLIPPER_CONFIG=/home/pi/klipper_config/printer2.cfg
Environment=KLIPPER_LOG=/home/pi/klipper_logs/klippy2.log
Environment=KLIPPER_SOCKET=/tmp/klippy2_uds

Den Editor mit STRG+X, dann Y und Enter verlassen.
Diese sorgt auch für die Konfiguration eures 2ten Druckers, diese wird später auf der Oberfläche als “printer2.cfg” benannt sein.
Um das hier eine “Startkonfiguration” zu haben, welche wir später anpassen müssen für den 2ten Drucker, kopieren wir einfach mal die erste noch.
cp -v /home/pi/klipper_config/printer.cfg /home/pi/klipper_config/printer2.cfg

Achte dabei darauf, dass du in der “printer2.cfg” unter MCU das Feld “serial:” auf den neuen Druckeranschluss legst, welchen wir im Schritt vorher ermittelt haben (beginnend mit /dev/serial/by-id/…”). Dies kannst du bequem auf der Mainsail Oberfläche im Browser machen. Gehe also auf diese und bearbeite die “printer2.cfg” nun von dort aus.



Jetzt machen wir mit den 2 nachfolgenden befehlen den Service im SSH Terminal “startklar”. Wir wollen ja das dieser bei jedem Booten verfügbar ist und starten den auch gleich.
sudo systemctl enable klipper2.service
sudo systemctl start klipper2

Moonraker Service duplizieren #
Analog zum Klipper Service musst du nun auch die Moonraker Instanz duplizieren. Also kopieren wir diesen auch und öffnen wie schon vorher auch diesen im Editor.
sudo cp /etc/systemd/system/moonraker.service /etc/systemd/system/moonraker2.service
sudo nano /etc/systemd/system/moonraker2.service

Hier passen wir folgende Punkte an:
Environment=MOONRAKER_CONFIG=/home/pi/klipper_config/moonraker2.conf
Environment=MOONRAKER_LOG=/home/pi/klipper_logs/moonraker2.log
WICHTIG! Solltet ihr keine “Environment” Variablen haben, MÜSST Ihr diese Einfügen wie im Bild und noch das Exec Start anpassen!
ExecStart=/home/pi/moonraker-env/bin/python /home/pi/moonraker/moonraker/moonraker.py -d /home/pi/printer_data -c ${MOONRAKER_CONFIG} -l ${MOONRAKER_LOG}

Den Editor mit STRG+X, dann Y und Enter verlassen.
Wie du siehst, entsteht nun neben unserer “printer2.cfg” auch eine neue “moonraker2.conf”. Dies ist auch nötig, es ist ja eine wirkliche getrennte Instanz von der ersten. So kopiere nun noch die bestehende Konfiguration für die neue Instanz.
cp -v /home/pi/klipper_config/moonraker.conf /home/pi/klipper_config/moonraker2.conf

Genauso wie schon vorher beim Klipper Service, müssen wir vorher die “moonraker2.conf” noch anpassen. Auch dieses geht komfortabel auf der Mainsail Weboberfläche. Die 2 nachfolgenden Einträge (letzter muss ggf. hinzugefügt werdeb!) müssen in der Datei dabei angepasst werden (der Rest bleibt wie er ist!):
port: 7126
klippy_uds_address: /tmp/klippy2_uds


Zurück im SSH Terminal aktivieren wir nun noch den Service und starten diesen.
sudo systemctl enable moonraker2.service
sudo systemctl start moonraker2

Fast geschafft! #
Jetzt fehlt nur noch, dass du die Weboberfläche entsprechend anpasst um zwischen den Druckern zu wechseln. Da dies unterschiedlich zwischen verschiedenen Oberfläche ist, musst du dies so machen wie beim hinzufügen bei anderen Druckern, jedoch hier einfach die gleiche URL nutzen, nur einen anderen Port (wie in diesem Beispiel also mainsailos.local:7126).
Weiterführende Dokumente #
Hier folgt demnächst noch die Einstellung für Klipperscreen.