Klipper
Hier findest du viele Artikel zu Klipper, die wir erstellt haben
- Klipper Einrichtung
- Klipper - Neopixel einrichten und nutzen
- Klipper zu spezifischen Druckern
- Klipper - Z-Offset richtig einstellen
- Klipper - Kiauh installieren
- Klipper - Deutsche Übersetzung
- Slicer - Start/End Code einrichten / oder Fehler beheben
- Klipper - Firmware Retract einrichten
- Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)
- Der Drucker pausiert oder bricht einfach ab
- Internal Error on Command: SDCAR_PRINT_FILE
- Move exceeds maximum extrusion
- Printer is not ready
- Unknown Command M486
- Moonraker Probleme nach Update
- Unknown command:"DEFINE_OBJECT"
- Wie speichere ich meine Z-Offset?
- TouchScreen (Klipper Screen) funktioniert nicht mehr
- Youtube - Dokumente zu den Videos
- Youtube - Gcode je nach Filamenttyp ausführen
- Youtube: Installiere Klipper auf deinem Drucker
- Youtube: Klipper Screen auf deinem Android Smartphone oder Tablet
- Youtube: Kalibrierungsmakro
- Youtube: Mainsail Timelapse mit jeder Kamera
- Klipper - Firmware Retract einrichten
- Youtube: ADXL345 einrichten
- Youtube: Unabhängige Beschleunigungswerte für X und Y
- Youtube: Makro zur Beschleunigungsermittlung
- Youtube: Kobra Display mit Klipper
- Youtube : Mainsail und Fluidd per Login schützen
- Youtube - Spoolman
- Youtube - Nevermore Controller
- Youtube: Bento Box
- Klipper/Mainsail/Moonraker
- !!! WICHTIG !!! Klipper Änderung vom bed_mesh
- Cancel print button/Funktion geht nicht
- Der Drucker geht während des Drucks auf Pause
- Deutsch Übersetzung Klipper Dokumentation
- Drucker lässt sich nicht korrekt verbinden (ständiger Disconnect)
- Kiauh installieren
- Klipper auf ältere Version zurücksetzen
- Klipper Pin Vorzeichen
- Klipper Screen
- Pi Auslastung prüfen
- Timelapse funktionert nach Update nicht mehr | Timelapse installieren
- Vyper Firmware aktualisieren / installieren
- Vyper flashen
- Webcam
- Wo finde ich Log Dateien
- Z-Tilt / Quad Gantry Level
- Mainsail ohne Drucker nutzen
Klipper Einrichtung
Klipper - Neopixel einrichten und nutzen
[include ./neopixel_pin.cfg]
[neopixel sb_leds]
pin:
[neopixel sb_leds]
chain_count: 3
[neopixel sb_leds]
color_order: GRBW
initial_RED: 0.0
initial_GREEN: 0.0
initial_BLUE: 0.0
initial_WHITE: 0.0
-
LED= Name eurer Neopixel Schnittstelle ([neopixel sb_leds]). Hier sb_leds
-
RED|GREEN|BLUE|WHITE = Farbe ein oder aus ( 1 oder 0)
-
INDEX= Welche LED im Strand soll angesteuert werden
[include ./neopixel_farben.cfg]
[include ./neopixel_status.cfg]
# The following status macros are available:
# STATUS_READY
# STATUS_OFF
# STATUS_BUSY
# STATUS_HEATING
# STATUS_LEVELING
# STATUS_HOMING
# STATUS_CLEANING
# STATUS_MESHING
# STATUS_CALIBRATING_Z
# With additional macros for direct control:
# SET_NOZZLE_LEDS_ON
# SET_LOGO_LEDS_OFF
# SET_NOZZLE_LEDS_OFF
Klipper zu spezifischen Druckern
Anycubic Vyper
Anycubic i3 Mega
Creality - Ender 3 S1/ Pro / Plus
Elegoo - Neptune 3
Voron
Klipper - Z-Offset richtig einstellen
Nun müsst Ihr die Höhe eurer ersten Schicht aus dem Slicer ermitteln.
-
Habt ihr eure seitlichen Endstops noch in Benutzung, wählt Ihr nun Speichern bis Endschalter aus. (In der Printer.cfg wie folgt "endstop_pin: PG10 ---> Hardware Endstop")
-
Habt Ihr die Variante mit einem BL-Touch und die seitlichen Endstops sind deaktiviert, wählt ihr nun Speichern bis Sensor aus. (In der Printer.cfg wie folgt "endstop_pin: probe:z_virtual_endstop ---> Bltouch")
Klipper - Kiauh installieren
Hier ist unsere Anleitung zur Installation von kiauh
Klipper - Deutsche Übersetzung
Hier ist der Link PDF zur Deutschen Übersetzung
Slicer - Start/End Code einrichten / oder Fehler beheben
Probleme und Fehler
Ihr habt das Problem, dass euer Startcode nicht funktioniert?
- Bedmesh wird nicht geladen
- Temperaturen werden nicht übergeben
- Er funktioniert gar nicht
Parameter und Platzhalter
Bei dem Startcode ist es wichtig, dass die sogenannten Parameter und Placeholder sauber definiert sind. Ihr solltet diesen dann im Gcode kontrollieren
Beispiel:
START_PRINT BED=[first_layer_bed_temperature] EXTRUDER=[first_layer_temperature]
START_PRINT Paramter=[Placeholder] .....
Paramter
Mit einem Parameter kannst du einen Zahlenwert einem "Wort"(Platzhalter) zuweisen und abfragen.
Im Falle des Startcodes sind es meinst Variablen wie:
BED / EXTRUDER / BED_TEMP / EXTRUDER_TEMP / CHAMBER_TEMP / SHEET / AREA_START / AREA_END
Placeholder (Platzhalter) im Slicer
Mit den sogenannten Placeholder kannst du Werte aus dem Slicer abfragen und einer Variable zuweisen.
Prusa / Super Slicer Placeholder:
https://help.prusa3d.com/article/list-of-placeholders_205643
Beispiel:
Extruder Temperatur des First Layers: "first_layer_temperature"
Cura Platzhalter:
http://files.fieldofview.com/cura/Replacement_Patterns.html
Startcode Beispiele:
Hier findest du Beispiele unserer Startcodes, passend zu den Slicern.
Bitte gleiche diese mit deinen Variablen im Makro ab.
Ebenfalls sind die Klammern wichtig {} []
Cura Startcode:
START_PRINT BED={material_bed_temperature_layer_0} EXTRUDER={material_initial_print_temperature}
Prusa Startcode:
START_PRINT BED=[first_layer_bed_temperature] EXTRUDER=[first_layer_temperature]
Super Slicer Startcode:
START_PRINT BED={first_layer_bed_temperature} EXTRUDER={first_layer_temperature}
Orca Slicer Startcode:
START_PRINT EXTRUDER=[nozzle_temperature_initial_layer] BED=[hot_plate_temp_initial_layer]
Wie wird eine Varibale mit Parametern beschrieben
Annahmen:
- Startcode im Slicer : START_PRINT BED={first_layer_bed_temperature} EXTRUDER={first_layer_temperature}
- Schreibbfehel im Start_Print:
{% set extruder = params.EXTRUDER|default(0) %}
{% set bed = params.BED|default(0) %}
Vom Slicer werden die Parameter BED und EXTRUDER dem Start_Print Makro zur Verfügung gestellt.
Beispiel aus Gcode:
Das Makro mach folgendes:
set xyz = setzte oder beschreibene in die variable xyz
extruder/bed = Variablenname
params.EXTRUDER|default(0) = Die Werte aus dem Paramter (params) Extruder
Komplettes Beispiel
Quelle:
Crydteam - Vyper Extended Github - marcos.cfg
[gcode_macro START_PRINT]
description: All what needs to be done at print start
gcode:
#### set defaults ####
{% set extruder = params.EXTRUDER|default(0) %}
{% set bed = params.BED|default(0) %}
#### end off definition ###
G28 ; Home
M83 ; Extruder relative mode
M104 S140 ; Extruder heat up standby temp 140
M190 S{bed} ; Bed heat up
G1 X0 Y0 F2200 ; Go to front
M109 S{extruder} ; Extruder heat up to target temp
G92 E0.0 ; Reset extruder length
G90 ; Absolute positioning
BED_MESH_PROFILE LOAD="default"
PRIME_LINE ; First move
Überprüfung ob der Slicer Werte in die Parameter schreibt:
- Ein Objekt slicen und Gcode Exportieren
- Gcode mit einem Editor öffnen
- Mit der Sucher (STRG+F) nach eurem Start_Print Startcode suchen
- Prüfen ob für Extruder und Bed auch eine Temperatur eingetragen wurde
Klipper - Firmware Retract einrichten
Vorstellung Firmware Retract in Klipper
Hallo,
Jeder von euch kennt den Retract und dessen Funktion. Die meisten von euch definieren diesen im Slicer. Aber was hat denn jetzt der Firmware retract für Vorteile.
- Konsistenz über verschiedene Slicer: Da die Retract-Einstellungen in der Firmware verwaltet werden, ist es einfacher, konsistente Ergebnisse über verschiedene Slicer-Programme hinweg zu erzielen. Dies bedeutet, dass die Benutzer nicht für jeden Slicer individuelle Retract-Einstellungen anpassen müssen.
- Anpassungsfähigkeit: Firmware Retract ermöglicht es, Retract-Einstellungen zentral in der Firmware zu ändern, ohne den G-Code jedes Mal anpassen zu müssen. Dies erleichtert das Experimentieren mit verschiedenen Retract-Einstellungen, um die bestmögliche Druckqualität zu erzielen.
- Live Anpassung möglich: Ihr könnt den Retract während des Druckes anpassen.
- Vereinfachung des G-Codes: Da der Retract direkt von der Firmware gesteuert wird, muss der G-Code nicht so viele Befehle enthalten, was zu einer Vereinfachung des G-Codes führt. Dies kann die Dateigröße der G-Code-Dateien verringern.
(in der Praxis vermutlich nicht relevant) - Implementierbarkeit: Der Retract kann je nach Filamenttyp über den Startcode eingestellt werden.
Einrichtung FW Retract in Klipper
Offizielle Klipper Doku zu FW Retract:
https://www.klipper3d.org/Config_Reference.html?h=retract#firmware_retraction
Offizuelle Klipper Doku zu G10 / G11:
https://www.klipper3d.org/G-Codes.html#firmware_retraction
Möglichkeit 1 : Direkt in printer.cfg
[firmware_retraction]
# G10 für Retract and G11 Deretract
retract_length: 3
# Die Laenge des Rueckzuges in mm wenn ein G10 Befehl angesteuert wird.
# Ebenfalls wenn nicht weiter definiert gilt er für den Deretract G11.
# Die Standardeinstellung ist 0mm.
retract_speed: 40
# Rueckzugsgeschwindigkeit in mm/s. Der Standardwert ist 20 mm/s.
#unretract_extra_length: 0
# Hier wird die zusaetzliche Laenge (in mm) definiert, die bei einem Derretract
# gemacht werden soll.
unretract_speed: 40
# Die Geschwindigkeit für einen Deretract in mm/s. Der Standardwert ist 10 mm/s.
Möglichkeite 2: Extra CFG-Datei anlegen und einbinden (empfohlen)
- Lege eine cfg namens fw_retract.cfg im Stamm Konfigverzeichnis an. (Einfach über die Weboberfläche mit Datei erstellen)
- Kopiere folgenden Inhalt in diese CFG
[firmware_retraction] # G10 für Retract and G11 Deretract retract_length: 3 # Die Laenge des Rueckzuges in mm wenn ein G10 Befehl angesteuert wird. # Ebenfalls wenn nicht weiter definiert gilt er für den Deretract G11. # Die Standardeinstellung ist 0mm. retract_speed: 40 # Rueckzugsgeschwindigkeit in mm/s. Der Standardwert ist 20 mm/s. #unretract_extra_length: 0 # Hier wird die zusaetzliche Laenge (in mm) definiert, die bei einem Derretract # gemacht werden soll. unretract_speed: 40 # Die Geschwindigkeit für einen Deretract in mm/s. Der Standardwert ist 10 mm/s.
- Includiere die CGF in deiner printer.cfg mit folgendem Code
[include fw_retract.cfg]
Einrichtung FW Retract im Slicer:
Cura
Wenn es jemand am Laufen hat gerne als Info an uns.
Über das Addon "Printer Settings" bekommt man zwar die Option, aber es würde nicht sauber in den Gcode geschrieben.
GCODE Kontrolle ob FW retract geschrieben wurde
GCODE slicen und exportieren. Danach mit einem Editor öffnen und nach G10 oder G10 suchen
Retract über die Mainsail Oberfläche einstellen:
Ihr könnt jetzt den Retract im "Extruder" Menü einstellen.
Hier ein Beispiel:
Filamentabhängiger Retract
Link zum Video "Filamentabhängigen Gcode"
1. Slicer für die Weitergabe der Variable einrichten
2. Variable im Startmakro des Slicers hinterlegen
Startcode im Superslicer
START_PRINT BED={first_layer_bed_temperature} EXTRUDER={first_layer_temperature} MATERIAL={filament_type}
3. Prüfen ob Varaibale übergeben wurde
- Objekt slicen
- Gcode mit editor öffnen
- Nach "Material" durchsuchen -> Es sollte euer Filamenttyp hinterlegt sein
Gcode für die Materialabfrage in einem Makro
# Materialabhaengige Parameter wie PA, FLOW, Retract, Mesh usw.
RESPOND MSG="Material: {material}"
{% if material == "PLA" %}
#SET_RETRACTION RETRACT_LENGTH=1.2
#SET_RETRACTION RETRACT_SPEED=30
#SET_RETRACTION UNRETRACT_SPEED=30
{% elif material == "PET" %}
#SET_RETRACTION RETRACT_LENGTH=1.5
#SET_RETRACTION RETRACT_SPEED=20
#SET_RETRACTION UNRETRACT_SPEED=20
{% elif material == "ABS" %}
#SET_RETRACTION RETRACT_LENGTH=0.9
#SET_RETRACTION RETRACT_SPEED=40
#SET_RETRACTION UNRETRACT_SPEED=40
{% endif %}
Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)
Der Drucker pausiert oder bricht einfach ab
Häufigste Fehlerquelle ist hier der Filamentsensor. Einfach abstecken und aus der Printer.cfg auskommentieren.
#[filament_switch_sensor runout]
#pause_on_runout: True
#switch_pin: PA5
Internal Error on Command: SDCAR_PRINT_FILE
Move exceeds maximum extrusion
max_extrude_cross_section:
anpassen.[extruder]
max_extrude_cross_section: 60.0
Printer is not ready
Verbindung mit Putty aufbauen
ls /dev/serial/by-id
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
Unknown Command M486
Hier die Lösung für den oben beschrieben Fehler
Moonraker Probleme nach Update
Nach dem Moonraker Update zu Version v0.7.1-714-g3ad7d06 habt ihr folgende Fehler und seht eure Gcodes und Configs wahrscheinlich nicht mehr.
cd klipper_config
; nano moonraker.conf
; STRG+X ; Y -> Enter[server]
host: 0.0.0.0
port: 7126
# enable_debug_logging: False
"enable_debug_logging:" auskommentieren oder löschen
[database] anpassen
#[database]
#database_path:
[database] komplett auskommentieren oder löschen
[filemanager] anpassen
[file_manager]
#config_path: ~/klipper_config
#log_path: ~/klipper_logs
"config_path:" und "log_path:" auskommentieren oder löschen
[maschine] hinzufügen
[machine]
sudo_password: MEINPASSWORT1234
Komplette Sektion [maschine] mit sudo Passwort hinzufpügen. Dein Sudo Passwort ist das Passwort was du zum einloggen in den pi eingibst
Unknown command:"DEFINE_OBJECT"
Wie speichere ich meine Z-Offset?
Frage:
Ich habe meine Z-Offset über das Dashboard eingestellt. Nun möchte ich diesen speichern und stehe vor der Wahl zwischen:
- Auf Endschalter
- Auf Probe
Lösung:
Die Lösung des ganzen liegt in der Art, wie du deinen Z-home bzw Z-Nullpunkt bestimmst. In der Regel wird das über einen sogennanten Endschalteer (Mikroendschalter) gemacht.
Einige Drucker haben aber auch einen Bltouch oder eine Probe verbaut und benutzen diesen zum homen der Z-Achse.
Wie kannst du das ganze in deiner Printer.cfg erkenne?
Schau dir in der sektion [stepper_z] und [stepper_z1] den Parameter endstop_pin: an
[stepper_z]
endstop_pin: PB2 -----> Auf Endschalter
[stepper_z]
endstop_pin: probe:z_virtual_endstop -----> Auf Probe
Bei probe:z_virtual_endstop wird auf Probe gespeichert.
In allen anderen Fällen (Pin vergeben) auf Endschalter.
TouchScreen (Klipper Screen) funktioniert nicht mehr
Fehlerbeschreibung:
Hallo.
04.04.23 -> Seit den letzten Updates scheint es wohl vermehrt Probleme mit dem Touchscreen zu geben.
Fehlermeldungen:xf86OpenConsole: Cannot open virtual console 2 (Permission denied)
Touch funktioniert generell nicht mehr
Wir danken Martin für den Hinweis und zeigen euch hier eine Lösung, die bei euch funktionieren kann.
Die Anleitung basiert auf folgendem Github Post: Touch did not work after Update (OS related, not caused by KS)
Lösung:
1. Eintrag in /boot/config.txt prüfen und ggf eintragen:
- Öffne eine putty Verbindung zu deinem Pi und führe folgenden Befehl aus:
sudo nano /boot/config.txt
- Suche den Eintrag
dtoverlay=vc4-fkms-v3d
Achtet auf das "f" bei fkms. Das kann in manch einer Konfig fehlen
- STRG+X und config.txt speichern.
Alternativ könnt ihr auch die SD Karte aus dem Pi entnehmen und am PC einstecken. So könnt ihr auch Zugriff auf die boot/config.txt erlangen
- Starte den Pi neu
2. Eintrag in der Xwrapper.config einfügen
- Öffne eine putty Verbindung zu deinem Pi
- Führe folgenden Befehl aus:
sudo bash -c "echo needs_root_rights=yes>>/etc/X11/Xwrapper.config"
3. Calibration Matrix setzten
- Öffne putty und führe folgenden Befehl aus
echo 'ACTION=="add", ATTRS{name}=="raspberrypi-ts", ENV{LIBINPUT_CALIBRATION_MATRIX}="0.5 0 0 0 1 0 0 0 1"' | sudo tee /etc/udev/rules.d/51-touchscreen.rules
- Starte den Pi neu
4. Wenn die vorherigen Einträge nicht geholfen haben, probiere noch das
- Öffne putty und führe folgenden Befehl aus
sudo nano /usr/share/X11/xorg.conf.d/40-libinput.conf
- Deine Transformation Matrix sollte so aussehen
0.5 0 0 0 1 0 0 0 1
Section "InputClass"
Identifier "libinput touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "TransformationMatrix" "0.5 0 0 0 1 0 0 0 1"
EndSection
Youtube - Dokumente zu den Videos
Youtube - Gcode je nach Filamenttyp ausführen
Hallo,
Ihr hab mit Klipper und dem Superslicer die Möglichkeit bei weitergabe der entsprechenden Varibale einen speziellen Gcode auszuführen.
Damit habt ihr die Möglichkeite zum Beispiel verschiedene Z-Offset, Bed Meshes oder gar startcodes auszuführen.
Video zu dem Beitrag
Was braucht ihr dafür?!
- Klipper als Firmware auf eurem Drucker
- Superslicer
- Den richtigen Startcode im Superslicer (Variablenweitergabe)
- Makro mit Varibalenabfrage
1. Slicer für die Weitergabe der Variable einrichten
2. Variable im Startmakro des Slicers hinterlegen
Startcode im Superslicer
START_PRINT BED={first_layer_bed_temperature} EXTRUDER={first_layer_temperature} MATERIAL={filament_type}
Cura Starcode:
START_PRINT BED={material_bed_temperature_layer_0} EXTRUDER={material_initial_print_temperature} MATERIAL={material_type}
3. Prüfen ob Varaibale übergeben wurde
- Objekt slicen
- Gcode mit editor öffnen
- Nach "Material" durchsuchen -> Es sollte euer Filamenttyp hinterlegt sein
4. Abfrage in euerem Makro hinterlegen
- Fügt die unten hinterlegte abfrage an der für euch passenden Stelle ein
- Meistens ist es direkt im Startcode sinnig
Respond in printer.cfg einfügen
#printer.cfg
[respond]
Quelltext/Code Materialabfrage
# variable laden | Am Anfang des Gcodes
{% set material = params.MATERIAL %}
# -----MATERIALABFRAGE CRYDTEAM---- #
# Materialabhaengige Parameter wie PA, FLOW, Retract, Mesh usw.
RESPOND MSG="Material: {material}"
{% if material == "PLA" %}
# Hier kommt euer spezifischer Code fuer PLA hin
{% elif material == "PET" %}
# Hier kommt euer spezifischer Code fuer PETG hin
{% elif material == "ABS" %}
# Hier kommt euer spezifischer Code fuer ABS hin
{% endif %}
Beispiele für spezifischen Code
- Z-Offset: (Setzt einen Z-Offset)
SET_GCODE_OFFSET Z=0.01
- Z-Offset Adjust: (Gibt einen Wert zu dem aktuellen Offset)
SET_GCODE_OFFSET Z_ADJUST=0.01 MOVE=1
- Bedmesh Laden (Lade ein bestimmtes Mesh:
BED_MESH_CLEAR BED_MESH_PROFILE LOAD=PLA
- FW Retract einstellen:
SET_RETRACTION RETRACT_LENGTH=1.4 RETRACT_SPEED=30 UNRETRACT_EXTRA_LENGTH=0 UNRETRACT_SPEED=20
Komplettes Beispiel für Z-Offset
[gcode_macro START_PRINT]
description: All what needs to be done at print start
gcode:
#### set defaults ####
{% set extruder = params.EXTRUDER|default(0) %}
{% set bed = params.BED|default(0) %}
{% set material = params.MATERIAL %}
#### end off definition ####
G28 ; Home
M83 ; Extruder relative mode
M190 S{bed} ; Bed heat up
BED_MESH_PROFILE LOAD=default
M109 S{extruder} ; Extruder heat up to target temp
G92 E0.0 ; Reset extruder length
G90 ; Absolute positioning
# ----- MATERIALABFRAGE CRYDTEAM ---- #
# Materialabhaengige Parameter wie PA, FLOW, Retract, Mesh usw.
RESPOND MSG="Material: {material}"
{% if material == "PLA" %}
SET_GCODE_OFFSET Z=0.01
{% elif material == "PET" %}
SET_GCODE_OFFSET Z=0.02
{% elif material == "ABS" %}
SET_GCODE_OFFSET Z=0.03
{% endif %}
PRIME_LINE
4. Optional: Lege dir eine eigene CFG im Ordner dafür an:
- Legt einen Ordner "druck" an.
- Lege eine cfg an "startcode.cfg"
- inkludiere die Datei in der printer.cfg mit
[include ./druck/startcode.cfg]
- Start die FW neu
Bei Fragen schaut gerne auf unserem Discord vorbei:
Youtube: Installiere Klipper auf deinem Drucker
Hier zeigen wir dir, wie du deinen Drucker "klippern" kannst.
Video zu diesem Beitrag
Was ist klipper:
Klipper ist eine eine Firmware für 3D Drucker. Dabei wird die Rechenleistung der Fahrwege auf einen Mikrocomputer, in unserem Fall ein Raspberry Pi ausgelagert.
Dadurch das Klipper mit sogenannten Konfigurationsdateien arbeitet, kannst du einfach und schnell den Drucker nach deinen Wünschen einrichten.
Was brauchst du?
Betriebssystem auf dem Pi installieren:
SD richtig formatieren
- Raspberry Pi Imager download + installieren
- OS auswählen: "Löschen" auswählen
- SD Karte wählen -> Klicky eure Karte an
- Schreiben klicken
Nachdem die Karte erfolgreich gelöscht wurde bitte einmal ausstecken und wieder einstecken.
Alternativ über windows mit Rechtsklick auf die SD Karte und formatieren.
Bitte folgende Einstellungen vornehmen:
Dateisystem: FAT32
Mainsail OS als Betriebssystem:
Möglichkeit 1: Mainsail OS
- Raspberry Pi Imager download + installieren
- OS auswählen:
- Betriebssystem "OS wählen"
- "Other specific-purpose" OS
- 3D printing
- Mainsais OS -> 32bit
- SD Karte wählen -> Wählt eure SD Karte aus
- Wichtig: Bitte vor dem Schreiben diese Einstellungen machen. Klickt dafür auf das Zahnrad unten rechts im Imager
- SSH aktivieren / Passwort zur Authentifizierung verwenden
- Benutzername und Passwort setzen: Bitte nicht den Namen ändern! ; Passwort setzten
- Wifi einrichten: SSID eingeben ; Passwort eingeben; Wifi-Land: DE
Schritte nach der Installation
- Netzwerkverbindung prüfen:
Geht auf euren Router und sucht die IP Adresse für den Pi
Empfehlung: Gebt dem Pi eine feste IP - Putty einrichten:
Dowload Link + Verbinden: - Pi updaten:
sudo apt-get update && sudo apt-get upgrade
- FTP einrichten: WinSCP oder Filezilla
Raspbian OS als Betriebssystem:
Möglichkeit 2: Raspbian OS + Klipper (empfohlen)
- Raspberry Pi Imager download + installieren
- OS auswählen:
- Betriebssystem "OS wählen"
- Raspberry Pi OS (other)
- Raspberry Pi OS Lite (32bit)
- SD Karte wählen -> Klicky eure Karte an
- Wichtig: Bitte vor dem Schreiben diese Einstellungen machen. Klickt dafür auf das Zahnrad unten rechts im Imager
- SSH aktivieren / Passwort zur Authentifizierung verwenden
- Benutzername und Passwort setzen: Bitte nicht den Namen ändern! ; Passwort setzten
- Wifi einrichten: SSID eingeben ; Passwort eingeben; Wifi-Land: DE
Schritte nach der Installation
- Netzwerkverbindung prüfen:
Geht auf euren Router und sucht die IP Adresse für den Pi
Empfehlung: Gebt dem Pi eine feste IP - Putty einrichten:
Dowload Link + Verbinden: - Pi updaten:
sudo apt-get update && sudo apt-get upgrade
- FTP einrichten: WinSCP oder Filezilla
Kiauh Installieren
Alle wichtigen Infos und die Dokumentation von Kiauh findet ihr hier
Installation
SSH Verbindung aufbauen (Putty)
sudo apt-get install git
cd ~
git clone https://github.com/th33xitus/kiauh.git
./kiauh/kiauh.sh
- Ihr könnt das jeweilige Menü mit der Ziffer davon anwählen. Beispiel: Install hat die Nummer "1" -> "1 + ENTER"
- Zurück könnt ihr mit "b + ENTER"
- Kiauh schließen mit "q + ENTER"
Klipper + Moonraker + Mainsail installieren
cd ~
./kiauh/kiauh.sh
Empfehlung: Installiert auch immer in der Reihenfolge von Kiauh. Klipper->Moonraker->Mainsail
-> Menü 1 Installieren:
1 Klipper:
- 1 Instanz -> Bestätigen -> Keine besonderer Name vergeben
- Pip Version 3.0 (recommend) - "Wir empfehlen immer die recommend) zu nehmen
2 Mooraker:
- 1 Instanz -> Bestätigen -> Keine besonderer Name vergeben
3 Mainsail:
SD Karte zum Flashen des Drucker vorbereiten (nicht die im Pi, sondern eine zweite):
Wir empfehlen euch keine zu große SD Karte zum Flashen zu nehmen. Also max 16GB.
Formatierung der SD zum Flashvorgang
Empfehlung:
Nehme auch hier das Rapsi Imager tool.
Wählt hier als "Betriebssystem" löschen aus und formatiert so eure Karte.
Es sollte so formatiert werden:
Dateisystem: FAT32
Größe der Zuordnungseinheit: 4096
Firmware für eueren Drucker vorbereiten:
cd ~/klipper
make clean
make menuconfig
make
Ab jetzt müsst ihr die Firmware für euren Drucker konfigurieren. Ich gebe euch hier die Einstellungen für die Drucker, die wir im Einsatz und getestet haben. Es gibt viele weiter Drucker, die mit klipper Laufen. Schaut hierzu im Klipper Github nach oder fragt google.
Firmware vom Pi auf die SD Karte ziehen:
Vyper
Verbindet euch wie oben angegeben per FTP zu eurem Pi. Die klipper.bin befindet sich im Ordner: /home/pi/klipper/out/klipper.bin
Für den Vyper müsst ihr die Datei wie folgt umbennen:
main_board_20230101.bin
Wichtig:
Dabei muss die Zahlenkombination (20230101) immer untschiedlich zu der Vorgängerversion sein.
Zieht nun die Datei auf die vorbeitet SD Karte.
Neptune 3
Verbindet euch wie oben angegeben per FTP zu eurem Pi. Die klipper.bin befindet sich im Ordner: /home/pi/klipper/out/klipper.bin
Für den Neptune 3 müsst ihr die Datei wie folgt umbennen:
ZNP_ROBIN_NANO.bin
Zieht nun die Datei auf die vorbeitet SD Karte.
KP3S
Verbindet euch wie oben angegeben per FTP zu eurem Pi. Die klipper.bin befindet sich im Ordner: /home/pi/klipper/out/klipper.bin
Für den KP3S müsst ihr noch folgendes in Putty tun:
./scripts/update_mks_robin.py ./out/klipper.bin ./out/Robin_nano.bin
Zieht nun die Datei Robin_nano.bin auf die vorbeitet SD Karte.
Voron BTT Octopus
Verbindet euch wie oben angegeben per FTP zu eurem Pi. Die klipper.bin befindet sich im Ordner: /home/pi/klipper/out/klipper.bin
Für den Voron müsst ihr die Datei wie folgt umbennen:
firmware.bin
Zieht nun die Datei auf die vorbeitet SD Karte.
Flashen des Druckers:
Schritte für erfolgreiches Flashen
- Schalte den Drucker + Pi aus
- Ziehe das Verbindungskabel zum Pi ab
- Warte 10 Sekunden
- Stecke die SD Karte ein
- Schalte den Drucker ein
- Warte 30 Sekunden (Je nach Druckermodell gibts hier Töne)
- Schalte den Drucker aus
- Entferne die SD Karte (Beim Voron bleibt diese im Board drin)
- Verbinde den Drucker über das Verbindungskabel mit dem Pi
- Schalte den Drucker und den Pi ein.
Laden der Konfigurationsdateien:
Folgende Dateien werden benötigt:
printer.cfg (Hauptdatei), mainsail.cfg , moonraker.conf
Über die printer.cfg könnt ihr mit [include xyz.cfg] weitere Dateien einbinden, die dann beim Firwarestart initialisiert werden.
Bitte ersetzte beim Kopieren der Konfigurationsdateien die moonraker.con nicht!!!!
Je nach installation sind hier die Pfade zum Klipper service angepasst. Wenn ihr die mit einem Stand der nicht zu euerer Klipper/Moonrakerverion ersetzt, kann es zu Verbindungsproblemen unter den Diensten kommen.
Link -> Vyper(Standard)-Konfig-Dateien
Link -> Vyper (Bltouch-Displaykabel)-Konfig-Datei
Link -> Vyper (SB + Extended Board)-Konfig-Datei
Link -> Neptune3-Konfig-Dateien
Link -> KP3S-Konfig-Dateien
Link -> Voron2.4-Konfig-Dateien
Link -> VoronTriden-Konfig-Dateien
Schnittstellenkonfiguration:
- Verbinde dich mit putty (SSH)
-
ls /dev/serial/by-id/*
- Kopiere den Pfad in deine [mcu] sektion der printer.cfg
[mcu] serial: /dev/serial/by-id/<DEINE ID> restart_method: command
Was tun wenn dein Klipper erfolgreich Verbunden ist:
Initialschritte
1. Endstops prüfen : Maschine endstops
2. Lüfter prüfen : Unter Sonstiges
3. Motoren Prüfen: (in Mainsail Konstole eingeben)
STEPPER_BUZZ STEPPER=stepper_x
stepper_x ; stepper_y ; stepper_z ; stepper_z1
Beispiel Stealthburner
Druckerkalibrierung
Rotation Distance
Temperatur & Retract
First Layer & Flow
Flow & Pressure Advanced
Youtube: Klipper Screen auf deinem Android Smartphone oder Tablet
Hallo liebe Community.
Heute zeigen wir euch, wie ihr euer altes Android Handy oder Tablet in einen Klipperscreen verwandeln könnt.
Was brauchst du dazu
- Ein Drucker mit der Klipper Firmware
- Natürlich einen Pi der mit dem Drucker erfolgreich verbunden ist
- Ein Android Smartphone oder Tablet
- Wenn du die Anbindung per USB machen willst, dann noch ein USB Kabel.
Installation von Klipperscreen auf dem Pi
Unsere Anleitung basiert auf der orginalen Anleitung von Klipper Screen die ihr hier findet.
Dokumentation Klipper Screen
Baut bitte per SSH (Putty) ein Verbindung zu eurem Pi auf und führt die nachfolgenden Befehle aus
1. Pi Updaten
sudo apt-get update && sudo apt-get upgrade
2. Github Repo von Klipper Screen auf euren Pi laden
cd ~/
git clone https://github.com/jordanruthe/KlipperScreen.git
cd ~/KlipperScreen
./scripts/KlipperScreen-install.sh
Bekommt ihr eine Meldung, dass ihr das Repo bereits habt, könnt ihr es mit foldenden Befehlen updaten:
cd ~/KlipperScreen
git pull
3. Moonraker.conf anpassen
Fügt die unten aufgelistete IP zu den "trusted Clients" in euerer Moonraker.conf
[authorization]
trusted_clients:
127.0.0.1
4. (Optional) Update Manager eintragen
Trag das in euere moonraker.conf ein:
[update_manager KlipperScreen]
type: git_repo
path: ~/KlipperScreen
origin: https://github.com/jordanruthe/KlipperScreen.git
env: ~/.KlipperScreen-env/bin/python
requirements: scripts/KlipperScreen-requirements.txt
install_script: scripts/KlipperScreen-install.sh
managed_services: KlipperScreen
Anwendung auf dem Android Gerät installieren
App XSERVER XSDL installieren
Nehmt euer Smartphone oder Handy zur Hand und installiert über den Google Play Store die App XServer XSDL.
XSERVER Manuell über apk installieren (Für ältere Geräte)
App einrichten
“CHANGE DEVICE CONFIGURATION”
└──Mouse Emulation Mode
└──Desktop, No Emulation
Verbindung von Pi zu Android herstellen
Auf eurem Android Gerät sollte jetzt ein Blauer Bildschirm sein mit einigen Informationen. Wichtig für euch ist folgendes:
Android Tools auf dem Pi installieren
sudo apt-get install android-tools-adb
Klipper Screen Launch script erstellen
cd ~/KlipperScreen/scripts
touch launch_KlipperScreen.sh
chmod +x launch_KlipperScreen.sh
Editieren von launch_KlipperScreen.sh
nano launch_KlipperScreen.sh
Das in die Datei einfügen
DISPLAY=192.168.150.122:0 $KS_XCLIENT
Mit STRG+X verlassen. Speichern mit Y und dann mit ENTER bestätigen.
Gebt hier bitte die IP ein, die sich bei euch auf dem blauen Screen auf dem Android Gerät befindet.
Klipper Screen start/stop
sudo service KlipperScreen start
sudo service KlipperScreen stop
Youtube: Kalibrierungsmakro
UMBAU:
Aufgrund des separaten Shaketune wird die Konfiguration aufgeteilt. Diese betrifft nunmehr eine All-in-One Kalibrierungsdatei für die Flow und PA Makros sowie das separate Shaketune. Dieses Video ist somit veraltet und sollte nicht mehr genutzt werden.
VERALTET: https://youtu.be/WPEqDEZ3IJo
Vielmehr ist dieses Video nun zu nutzen:
In diesem Tutorial wird die Installation und Nutzung des Kalibrierungsmakros gezeigt. Vielen Dank an die Autoren und Unterstützer:
Félix Boisselier: https://github.com/Frix-x
Link zum Github: Kalibrierung 3.0
Hardware
Das Kalibrierungsmakro umfasst eine Ressonanzmessung. Dafür wird ein ADXL benötigt. Für Anfänger ist dieser USB ADXL zu empfehlen:
USB-ADXL
Hardware:
https://de.aliexpress.com/item/1005005182131890.html
Installationsanleitung:
https://book.cryd.de/books/dokumente/page/tutorial-adxl345-einrichten
Alternativ lässt sich auch dieser ADXL nutzen. Dieser wird über die GPIO-Leiste angeschlossen:
GPIO-ADXL
Hardware:
https://www.roboter-bausatz.de/p/gy-291-accelerometer-mit-adxl345-chip
Installationsanleitung:
https://book.cryd.de/books/dokumente/page/tutorial-adxl345-einrichten
Voraussetzungen
Dieses Makro ist darauf ausgelegt, dass sich die Klipper Konfigurationsdateien im Ordner home/pi/printer_data/ befinden.
Sollten sich die Konfigurationsdateien in diesem Ordner home/pi/klipper_config/ befinden bzw. sind im Order /printer_data nur Verlinkungen auf den Ordner /klipper_config vorhanden, ddann ist dieses Makro nur mit mehreren Anpassungen nutzbar. Dies ist manuell vorzunehmen und kann hier nicht weiter beschrieben werden.
Es empfiehlt sich die Ordnerstruktur neu aufzubauen. Dazu ist notwendig, Klipper komplett neu zu installieren. Ein Update erzeugt nur Verlinkungen.
Installation
Zunächst müssen die benötigten Files auf den Raspberry Pi installiert werden. Dazu kann folgender Befehl genutzt werden.
Es sind vier Befehle (im Video wurden noch drei genannt). Der vierte installiert noch benötigte Bibliotheken.
wget -P ~/printer_data/config https://github.com/cryd-s/klipper_scripts/raw/main/calibration_3.0/calibrate.cfg
wget -P ~/printer_data/config https://github.com/cryd-s/klipper_scripts/raw/main/calibration_3.0/usb_adxl.cfg
sudo apt update && sudo apt install python3-venv libopenblas-dev libatlas-base-dev -y
wget -O - https://raw.githubusercontent.com/Frix-x/klippain-shaketune/main/install.sh | bash
Ist die Installation erfolgreich, so sind nach einer Aktualisierung der Mainsail-Oberfläche folgende Inhalte zu sehen:
Zum Schluss muss die calibrate.cfg und die Shaketune Dateien eingebunden werden:
[include K-ShakeTune/*.cfg]
[include calibrate.cfg]
Dies kann in die moonraker.conf eingespielt werden, damit die Ressonanztools einfach aktualisiert werden können
## Klippain Shake&Tune automatic update management
[update_manager Klippain-ShakeTune]
type: git_repo
origin: https://github.com/Frix-x/klippain-shaketune.git
path: ~/klippain_shaketune
virtualenv: ~/klippain_shaketune-env
requirements: requirements.txt
system_dependencies: system-dependencies.json
primary_branch: main
managed_services: klipper
KIAUH installieren (wenn noch nicht vorhanden)
Mit folgendem Kommando wird KIAUH installiert
cd ~
git clone https://github.com/th33xitus/kiauh.git
Shell Command installieren
Die Installation wird über KIAUH vorgenommen.
Zunächst wird Kiauh geöffnet
cd ~
./kiauh/kiauh.sh
Wähle 4 (Advanced)
Wähle 8 (G-Code Shell Command)
Bestätige mit Y
Bestätige die Frage, ob eine Beispieldatei angelegt wird mit ja.
Schließe KIAUH mit B und danach Q
Kalibrierungsdateien einrichten
Als nächstes müssen die Dateien druckerspezifisch eingerichtet werden.
Diese calibrate.cfg beinhaltet alle Druckmakros. Es ist wie folgt aufgebaut:
- Calibrate (beinhaltet den Verweis auf euer Start- und Endmakro)
- PA Makro (beinhaltet die Kalibrierung des Pressure Advance)
- FLOW Makro (beinhaltet die Kalibrierung des Extrusion Multiplier)
1. Startmakro
Mit diesem Makro wird vor dem Test der Aufruf des Flow oder PA Test, das individuelle Start_Print Makro aufgerufen. Hier ist die Bed und Extrudertemperatur bereits eingetragen. Benötigt eurer Startmakro weitere Paramter, so sind diese hier einzutragen.
Alternativ kann das Flow und PA Makro direkt aufgerufen werden. Dabei ist jedoch zu beachten, dass vorher alle Schritte manuell durchzuführen sind (Home, QGL, Aufheizen, etc.)
2. PRESSURE ADVANCE Makro
Die Parameter, die beim Aufruf des Makros PRESSURE_ADVANCE_CALIBRATION
zur Verfügung stehen, sind hier zu finden:
Parameter | Standardwert | Beschreibung |
---|---|---|
DO_RAFT | 1 | druckt eine "Basis", um das Testgitter zu stützen (bessere Haftung des Bettes und leichtere Entfernung am Ende) |
START | 0.02 | PA-Wert zum Starten |
INCREMENT | 0.005 | PA-Wert, der für jedes folgende Band erhöht wird |
EXTRUSION_MULTIPLIER | 1.25 wenn Raft aktiviert, 1.5 wenn deaktiviert | Extrusionsmultiplikator, der auf die Druckzeilen im Band angewendet wird |
PRINT_SIZE | 120 | maximale Breite/Höhe, in mm, die der Test nutzen kann. Das Modell wird in der Mitte des Bettes gedruckt. |
BANDS_LIMIT | 999 | optional kann die Anzahl der Bänder auf diese Weise begrenzt werden. Ansonsten werden so viele Bänder gedruckt, wie in die angegebene GRÖSSE passen. |
LINES_PER_BAND | 6 | Anzahl der Zeilen pro Band. Die Hälfte davon sind Kontrollzeilen, die andere Hälfte sind Testzeilen. |
LINE_SPACING | 0.4 | Abstand zwischen den einzelnen Zeilen eines Bandes |
PURGE_MM | 8 | mm Filament, das vor dem Druckstart zum Druckstart geschoben wird (kann 0 sein, um zu deaktivieren) |
RAFT_SPEED | 80 | Vorschubrate (in mm/s) für den Druck des Rafts |
CONTROL_SPEED | 30 | Vorschubgeschwindigkeit (in mm/s) für den Druck der "Kontroll"-Linien in einem Band |
OUTER_SPEED | 40 | Vorschub (in mm/s) für den Druck des äußeren Teils der "Test"-Zeilen in einem Band |
INNER_SPEED | 80 | Vorschubgeschwindigkeit (in mm/s) für den Druck des inneren Teils der "Test"-Zeilen in einem Band |
TRAVEL_SPEED | 200 | Vorschubgeschwindigkeit (in mm/s) für schnelle Verfahrbewegungen |
RETRACT_LENGTH | 0.6 | Rückzugslänge in mm (verwenden Sie Ihren eigenen Rückzugswert für das Filament) |
3. FLOW Makro
Die Parameter, die beim Aufruf des Makros FLOW_MULTIPLIER_CALIBRATION zur Verfügung stehen, sind hier zu finden:
Parameter | Standardwert | Beschreibung |
---|---|---|
DO_RAFT | 1 | druckt eine "Basis", um die Schale zu stützen (bessere Bett-Haftung und leichteres Entfernen am Ende) |
DO_RETRACT | 0 | Rückzug aktivieren/deaktivieren. Standardmäßig deaktiviert, um einen konstanten Fluss zu gewährleisten, kann aber bei Problemen mit dem Druck aktiviert werden. |
PRINT_SIZE | 40 | Größe in mm, die für den Test auf dem Bett verwendet wird. Das Modell wird in der Mitte des Bettes gedruckt. |
HEIGHT | 15 | Höhe in mm der gedruckten Schale |
CORNER_RADIUS | 8 | Außenradius, der in den Ecken der Schale verwendet wird, um die Geschwindigkeit zu glätten und zu versuchen, einen konstanten Fluss über den Druck zu halten. |
PERIMETERS | 2 | Anzahl der Perimeter, die zum Drucken der Schale verwendet werden. Wenn 1 Perimeter verwendet wird, ist es zwingend erforderlich, ein Mikrometer zum Messen zu verwenden: am besten ist es, >=2 zu verwenden. |
FAN_SPEED | 20 | Prozentualer Anteil des Teillüfters, der für den Druck verwendet werden soll (wird nach dem Rafting eingesetzt) |
EXTRUSION_MULTIPLIER | 1.00 | Extrusionsmultiplikator, der auf den Druck angewendet werden soll (verwenden Sie etwas, das dem realen Wert nahe kommt) |
FILAMENT_DIAMETER | 1.75 | Durchmesser des aktuell im Gerät geladenen Filaments |
EXTRUSION_WIDTH | 0.4 | Breite einer Extrusionslinie (als Ziel). Die Verwendung von 75-100% des Düsendurchmessers ist ein sicherer Wert. |
LAYER_HEIGHT | 0.2 | Schichthöhe des Drucks. Vermeiden Sie einen zu kleinen Wert und versuchen Sie, in der Nähe von 0,5 * Düsendurchmesser zu bleiben. |
CONTROL_SPEED | 80 | Vorschubgeschwindigkeit (in mm/s) für den Druck der Schale |
RAFT_SPEED | 60 | Vorschubgeschwindigkeit (in mm/s) für den Druck des Floßes |
TRAVEL_SPEED | 200 | Vorschubgeschwindigkeit (in mm/s) für schnelle Fahrbewegungen |
Z_LIFT_SPEED | 20 | Vorschub (in mm/s) für Z-Lift-Bewegungen (grundsätzlich Z-Hop und Z-Ausrichtung) |
RETRACT_SPEED | 50 | Vorschub (in mm/s) für Rückzug und Rückzug von Filamenten |
RETRACT_LENGTH | 0.5 | Rückzugslänge in mm (verwenden Sie Ihren eigenen Rückzugswert für das Filament) |
PURGE_MM | 1 | Menge des Filaments, um den Druck vor dem Drucken der Hauptlinie zu initiieren (kann 0 sein oder deaktiviert werden) |
Kalibrierungsmakros nutzen
Im folgenden werden die jeweiligen Makros erklärt.
Durch die calibration.cfg und die Shaketune Makros sind folgende Schaltflächen nutzbar:
- PRESSURE ADVANCE (Kalibrierung des Pressure Advance)
- FLOW MULTIPLIER (Kalibrierung des Extrusion Multiplier)
- COMPUTE FLOW (separates Makro das den optimalen EP anhand der ermittelten Werte berechnet)
- AXES SHAPER Calibration (Kalibrierung des Input Shaper)
- BELT SHAPER Calibration (nur für Core XY Drucker - Prüft, die Spannung der Riemen)
- VIBRATION CALIBRATION Calibration (ermittelt die optimale Druckgeschwindigkeit)
- EXCITATE_AXIS_AT_FREQ (zum testen auf spezifischen Frequenzen
PRESSURE ADVANCE
Folgende Werte können vor dem Start abgeändert werden (Hinterlegt sind die default Werte):
Ermittlung des PA:
Dieses Makro druckt eine Reihe von ¨Bändern¨, die jeweils mehrere Zeilen enthalten, wobei die ersten Zeilen langsam gedruckt und als Grundlinie/Kontrolle verwendet werden und die anderen mit variablen Geschwindigkeiten in der folgenden Reihenfolge: 25% der Zeile mit niedriger Geschwindigkeit, dann 50% mit hoher Geschwindigkeit und die letzten 25% wieder mit niedriger Geschwindigkeit gedruckt werden. Der PA wird für jedes Band erhöht.
Das gedruckte Modell kann dann anhand der obersten und untersten Zeile in jedem Band überprüft werden: Artefakte des PA sind dort zu sehen, wo sich die Druckgeschwindigkeiten in jeder Zeile ändern. Sie müssen nur das höchste Band von unten finden, bei dem die oberen Linien noch ähnlich aussehen wie die unteren, ohne sichtbare Unregelmäßigkeiten in der Extrusionsbreite.
Zählen der Anzahl der Bänder von der Unterseite des Drucks, bis die Kontrolllinien ähnlich wie die Testlinien aussehen. Suche das Band, in dem es keine Ausbuchtung oder Lücke gibt, wie in der folgenden Abbildung:
Verwenden die folgende Formel, um den neuen PA-Wert zu ermitteln:
NEW_PA = START + (INCREMENT * band_number)
FLOW MULTIPLIER
Folgende Werte können vor dem Start abgeändert werden (Hinterlegt sind die default Werte):
Es arbeitet in zwei Phasen, bei denen zunächst das Makro FLOW_MULTIPLIER_CALIBRATION aufgerufen wird, um eine hohle Schale mit einer bekannten Anzahl von Perimetern auf der Grundlage der Slic3rPE flow math zu drucken. Die theoretische Schalendicke wird auch in der Fluidd/Mainsail-Konsole ausgedruckt und muss nach dem Druck mit einem Mikrometer oder Messschieber gemessen werden. Nach dem Eingeben in das zweite Makro COMPUTE_FLOW_MULTIPLIER MEASURED_THICKNESS=xxx.xxx wird der neue kalibrierte Durchfluss automatisch in der Fluidd/Mainsail-Konsole ausgedruckt.
Schließlich wird die Dicke der Schale mit einem Messschieber (oder besser noch mit einem Mikrometer) gemessen und das Berechnungsmakro mit dem gemessenen Wert aufgerufen.
COMPUTE_FLOW_MULTIPLIER MEASURED_THICKNESS=xxx.xxx
Es ist darauf zu achten, dass zwischen dem Druck und der Messung kein Neustart des Klippers durchgeführt wird, da sonst die gedruckten Schalenwerte gelöscht werden. Der neu berechnete Durchflusswert wird in der Web-Konsole angezeigt.
AXES SHAPER
BELT SHAPER
VIBRATION
Youtube: Mainsail Timelapse mit jeder Kamera
Mit dieser Dokumentation könnt ihr nahezu jede beliebige Kamera für Timelapse nutzen.
Folgendes Video diente als Quelle:
https://www.youtube.com/watch?v=KsCaPWgIf5E
1. Installation gphoto2
Kompatibilitätsliste
Öffne Putty in und gebe folgendes Kommando ein und wähle die 1 (install latest developent version):
wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/gphoto2-updater.sh && wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/.env && chmod +x gphoto2-updater.sh && sudo ./gphoto2-updater.sh
sudo apt-get install libgphoto2-dev
Die Installation kann ein paar Minuten beanspruchen.
Lösche ältere Versionen mit diesem Kommando (optional):
sudo apt-get remove gphoto2 libgphoto2-6 libgphoto2-dev libgphoto2-l10n libgphoto2-port12
Starte den Raspberry Pi neu
sudo reboot
2. gphoto2 testen und konfigurieren
Prüfe, ob eine Verbindung zu deiner Kamera hergestellt werden kann. Kann eine Verbindung aufgebaut werden, so wird dies in Putty wie folgt angezeigt.
gphoto2 --auto-detect
Sollte keine Kamera angezeigt werden, dann starte den Raspberry Pi erneut und prüfe ob die Kamera vorher in den richtigen USB Modus versetzt wurde. In der Kompatibilitätsliste wird unter Bemerkungen aufgeführt, wenn ein besonderer Treiber für die Kamera benötigt wird.
Erstelle als nächstes einen Snapshot mit der Kamera.
gphoto2 --auto-detect --capture-image
Sollte dies erfolgreich sein, dann wird dies in Putty ausgegeben. Dabei wird der Snapshot auf der Kamera gespeichert.
Screenshot
Mit diesem Kommando wird das Image auf den Raspberry Pi übertragen.
gphoto2 --auto-detect --capture-image-and-download
Prüfe die möglichen Speicherorte deiner Kamera:
gphoto2 --get-config capturetarget
Ändere den Speicherort auf die Speicherkarte (hier 2)
gphoto2 --set-config capturetarget=2
3. KIAUH installieren (wenn noch nicht vorhanden)
Mit folgendem Kommando wird KIAUH installiert
cd ~
git clone https://github.com/th33xitus/kiauh.git
4. Shell Command installieren
Die Installation wird über KIAUH vorgenommen.
Zunächst wird Kiauh geöffnet
./kiauh/kiauh.sh
Wähle 4 (Advanced)
Wähle 8 (G-Code Shell Command)
Bestätige mit Y
Bestätige die Frage, ob eine Beispieldatei angelegt wird mit ja.
Schließe KIAUH mit B und danach Q
5. Skripte und Macros installieren.
shell_command.cfg
Wenn noch nicht vorhanden, erstelle eine shell_command.cfg Datei
Inkludiere diese Datei in deine printer.cfg
Füge folgenden Code in die shell_command.cfg ein
#=====================================================
# SET CAMERA SAVE LOCATION
#=====================================================
[gcode_shell_command gphoto2_set_config]
command: gphoto2 --set-config capturetarget=1
timeout: 1. ; make sure this is long enough to account for focus time
verbose: False
#=====================================================
# DSLR CAPTURE IMAGE
#=====================================================
[gcode_shell_command gphoto2_trigger_snapshot]
command: gphoto2 --auto-detect --trigger-capture
timeout: 10. ; make sure this is long enough to account for focus time
verbose: False
macro.cfg und printer.cfg
Quelle: https://github.com/EB3DPrinting/Klipper/blob/main/Ender-3Pro%232/macros.cfg
Füge diese Makros in deine macro.cfg ein
macro.cfg
#=====================================================
# MANUAL SET CAPTURE TARGET
#=====================================================
[gcode_macro GPHOTO_SET_TARGET]
gcode:
RUN_SHELL_COMMAND CMD=gphoto2_set_config
#=====================================================
# TAKE SNAPSHOT COMMAND
#=====================================================
[gcode_macro TAKE_SNAPSHOT]
description: Saves current location, moves toolhead to rear of bed, and takes a snapshot before returning.
gcode:
{% set delayMS = 2000 %} ; Delay after moving and before taking the snapshot, deals with buffering so we don't get the print head in motion
{% set snapshotPositionX = printer.toolhead.axis_maximum.x / 2 %} ; Middle of bed
{% set snapshotPositionY = printer.toolhead.axis_maximum.y - 5 %} ; rear of bed w/ some buffer
{% set currentX = printer.gcode_move.gcode_position.x %}
{% set currentY = printer.gcode_move.gcode_position.y %}
{% set currentZ = printer.gcode_move.gcode_position.z %} ; could be used for z-hop which we are not doing in this macro, so it's best to run this in AFTER_LAYER_CHANGE
SAVE_GCODE_STATE NAME=take_snapshot_state
{% if printer.extruder.can_extrude|lower == 'true' %}
G10 ; retract
{% endif %}
G90
G0 X{snapshotPositionX} Y{snapshotPositionY} F5000.0 ;Move to snapshot position
G4 P{delayMS} ; Dwell for delayMS seconds
RUN_SHELL_COMMAND CMD=gphoto2_trigger_snapshot
G0 X{currentX} Y{currentY} F5000.0 ;Return to original position
{% if printer.extruder.can_extrude|lower == 'true' %}
G11 ; unretract
{% endif %}
RESTORE_GCODE_STATE NAME=take_snapshot_state
#=====================================================
# MANUAL SNAPSHOT TEST
#=====================================================
[gcode_macro GPHOTO_SNAPSHOT_TEST]
gcode:
RUN_SHELL_COMMAND CMD=gphoto2_trigger_snapshot
Füge diese Sektion in deine printer.cfg ein und passe die Werte an deine druckerspezifischen Werte an
printer.cfg
#====================================================================
# FIRMWARE RETRACTION
#====================================================================
[firmware_retraction]
# The length of filament (in mm) to retract when G10 is activated,
# and to unretract when G11 is activated (but see
# unretract_extra_length below). The default is 0 mm.
retract_length: 1
# The speed of retraction, in mm/s. The default is 20 mm/s.
retract_speed: 35
# The length (in mm) of *additional* filament to add when
# unretracting.
#unretract_extra_length: 0
# The speed of unretraction, in mm/s. The default is 10 mm/s.
unretract_speed: 35
6. Makros einstellen und testen
Passe die Werte im Makro TAKE_SNAPSHOT nach deinen Bedürfnissen an
TAKE_SNAPSHOT
Es sollten unter der Makro Sektion neue Makros sichtbar sein
Teste mit dem Befehl "GPHOTO SNAPSHOT TEST" ob deine Kamera auslöst.
Sollte der Fehler "Unknown command: "RUN_SHELL_COMMAND"" erscheinen, dann wurde die shell_command.cfg nicht eingefügt bzw. inkludiert.
Teste mit dem Befehl "TAKE SNAPSHOT" ob dein Druckkopf zur korrekten position fährt und die Kamera auslöst (vorher muss der Drucker gehomed werden).
7. Slicer Einstellung
Für unter dem Reiter
Printer Settings / Custom G-code / After layer change G-code folgendes Kommando ein
TAKE_SNAPSHOT
8. Bilder bearbeiten
Die gespeicherten Bilder können nun zu einem Video editiert werden. DaVinci Resolve bietet eine Möglichkeit. Es gibt aber noch viele weitere Programme wie bspw. Shotcut.
Klipper - Firmware Retract einrichten
Vorstellung Firmware Retract in Klipper
Hallo,
Jeder von euch kennt den Retract und dessen Funktion. Die meisten von euch definieren diesen im Slicer. Aber was hat denn jetzt der Firmware retract für Vorteile.
- Konsistenz über verschiedene Slicer: Da die Retract-Einstellungen in der Firmware verwaltet werden, ist es einfacher, konsistente Ergebnisse über verschiedene Slicer-Programme hinweg zu erzielen. Dies bedeutet, dass die Benutzer nicht für jeden Slicer individuelle Retract-Einstellungen anpassen müssen.
- Anpassungsfähigkeit: Firmware Retract ermöglicht es, Retract-Einstellungen zentral in der Firmware zu ändern, ohne den G-Code jedes Mal anpassen zu müssen. Dies erleichtert das Experimentieren mit verschiedenen Retract-Einstellungen, um die bestmögliche Druckqualität zu erzielen.
- Live Anpassung möglich: Ihr könnt den Retract während des Druckes anpassen.
- Vereinfachung des G-Codes: Da der Retract direkt von der Firmware gesteuert wird, muss der G-Code nicht so viele Befehle enthalten, was zu einer Vereinfachung des G-Codes führt. Dies kann die Dateigröße der G-Code-Dateien verringern.
(in der Praxis vermutlich nicht relevant) - Implementierbarkeit: Der Retract kann je nach Filamenttyp über den Startcode eingestellt werden.
Einrichtung FW Retract in Klipper
Offizielle Klipper Doku zu FW Retract:
https://www.klipper3d.org/Config_Reference.html?h=retract#firmware_retraction
Offizielle Klipper Doku zu G10 / G11:
https://www.klipper3d.org/G-Codes.html#firmware_retraction
Möglichkeit 1 : Direkt in printer.cfg
[firmware_retraction]
# G10 für Retract and G11 Deretract
retract_length: 3
# Die Laenge des Rueckzuges in mm wenn ein G10 Befehl angesteuert wird.
# Ebenfalls wenn nicht weiter definiert gilt er für den Deretract G11.
# Die Standardeinstellung ist 0mm.
retract_speed: 40
# Rueckzugsgeschwindigkeit in mm/s. Der Standardwert ist 20 mm/s.
#unretract_extra_length: 0
# Hier wird die zusaetzliche Laenge (in mm) definiert, die bei einem Derretract
# gemacht werden soll.
unretract_speed: 40
# Die Geschwindigkeit für einen Deretract in mm/s. Der Standardwert ist 10 mm/s.
Möglichkeite 2: Extra CFG-Datei anlegen und einbinden (empfohlen)
- Lege eine cfg namens fw_retract.cfg im Stamm Konfigverzeichnis an. (Einfach über die Weboberfläche mit Datei erstellen)
- Kopiere folgenden Inhalt in diese CFG
[firmware_retraction] # G10 für Retract and G11 Deretract retract_length: 3 # Die Laenge des Rueckzuges in mm wenn ein G10 Befehl angesteuert wird. # Ebenfalls wenn nicht weiter definiert gilt er für den Deretract G11. # Die Standardeinstellung ist 0mm. retract_speed: 40 # Rueckzugsgeschwindigkeit in mm/s. Der Standardwert ist 20 mm/s. #unretract_extra_length: 0 # Hier wird die zusaetzliche Laenge (in mm) definiert, die bei einem Derretract # gemacht werden soll. unretract_speed: 40 # Die Geschwindigkeit für einen Deretract in mm/s. Der Standardwert ist 10 mm/s.
- Includiere die CGF in deiner printer.cfg mit folgendem Code
[include fw_retract.cfg]
Einrichtung FW Retract im Slicer:
Cura
Wenn es jemand am Laufen hat gerne als Info an uns.
Über das Addon "Printer Settings" bekommt man zwar die Option, aber es würde nicht sauber in den Gcode geschrieben.
GCODE Kontrolle ob FW retract geschrieben wurde
GCODE slicen und exportieren. Danach mit einem Editor öffnen und nach G10 oder G11 suchen
Retract über die Mainsail Oberfläche einstellen:
Ihr könnt jetzt den Retract im "Extruder" Menü einstellen.
Hier ein Beispiel:
Filamentabhängiger Retract
Link zum Video "Filamentabhängigen Gcode"
1. Slicer für die Weitergabe der Variable einrichten
2. Variable im Startmakro des Slicers hinterlegen
Startcode im Superslicer
START_PRINT BED={first_layer_bed_temperature} EXTRUDER={first_layer_temperature} MATERIAL={filament_type}
3. Prüfen ob Varaibale übergeben wurde
- Objekt slicen
- Gcode mit editor öffnen
- Nach "Material" durchsuchen -> Es sollte euer Filamenttyp hinterlegt sein
Gcode für die Materialabfrage in einem Makro
# Materialabhaengige Parameter wie PA, FLOW, Retract, Mesh usw.
RESPOND MSG="Material: {material}"
{% if material == "PLA" %}
#SET_RETRACTION RETRACT_LENGTH=1.2
#SET_RETRACTION RETRACT_SPEED=30
#SET_RETRACTION UNRETRACT_SPEED=30
{% elif material == "PET" %}
#SET_RETRACTION RETRACT_LENGTH=1.5
#SET_RETRACTION RETRACT_SPEED=20
#SET_RETRACTION UNRETRACT_SPEED=20
{% elif material == "ABS" %}
#SET_RETRACTION RETRACT_LENGTH=0.9
#SET_RETRACTION RETRACT_SPEED=40
#SET_RETRACTION UNRETRACT_SPEED=40
{% endif %}
Youtube: ADXL345 einrichten
Videolink: https://youtu.be/l9kqh9gtjFo
Stand: 10.06.2023
In diesem Tutorial wird die Einrichtung des ADXL345 beschrieben. Die Einrichtung ist abhängig vom gewählten ADXL.
1a. ADXL345 (über GPIO)
Für die Steuerung wird der Raspberry Pi selbst als MCU genutzt. Folgende Schritte müssen zur Nutzung durchgeführt werden:
Quellen:
https://www.klipper3d.org/Measuring_Resonances.html
https://www.klipper3d.org/RPi_microcontroller.html
Anschlussplan
Quelle: https://www.klipper3d.org/Measuring_Resonances.html
Über Putty auf den Raspberry Pi zugreifen
SPI aktivieren:
sudo raspi-config
3 Interface Options
I4 SPI
enabled <yes>
Installation des Skriptes:
cd ~/klipper/
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/
sudo systemctl enable klipper-mcu.service
Erstellung der Flash Datei:
cd ~/klipper/
make menuconfig
Hier müsst ihr Linux process
auswählen, dies dann bestätigen und speichern.
sudo service klipper stop
make flash
sudo service klipper start
Wenn in klippy.log ein "Zugriff verweigert"-Fehler gemeldet wird, wenn Sie versuchen, eine Verbindung zu /tmp/klipper_host_mcu herzustellen, müssen Sie Ihren Benutzer zur tty-Gruppe hinzufügen. Der folgende Befehl fügt den Benutzer "pi" zur tty-Gruppe hinzu:
sudo usermod -a -G tty pi
Folgende Zeilen müssen in die printer.cfg kopiert werden:
############################################
##########Input Shaper Config###############
############################################
[adxl345]
cs_pin: rpi:None
axes_map: x,-z,y #die Ausrichtung ist abhängig vom ADXL mount.
[resonance_tester]
accel_chip: adxl345
probe_points:
122.5,125,20 #beziehungsweise die Koordinaten für die Mitte des Druckbetts
[mcu rpi]
serial: /tmp/klipper_host_mcu
Danach ist der Raspberry Pi neu zu starten:
sudo reboot
Die neue MCU sollte nun unter Maschine angezeigt werden:
Folgender Befehl ist nun in die Kommandozeile der Mainsail-Oberfläche einzugeben:
ACCELEROMETER_QUERY
Wird folgender Code ausgegeben, so ist die Verkabelung nochmals zu prüfen.
Invalid adxl345 id (got 0 vs e5)
Sollte diese Meldung erscheinen, so ist die Einrichtung abgeschlossen:
Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800
Danach geht es mit Schritt 2 weiter
1b. ADXL345 (über USB)
Diese Konfiguration bezieht sich auf folgenden USB ADXL:
https://de.aliexpress.com/item/1005005182131890.html
Über Putty auf den Raspberry PI zugreifen.
Danach ist die Flash Datei zu erstellen:
cd klipper
make clean
make menuconfig
Folgende Einstellungen sind zu wählen:
Danach ist die Datei zu erstellen
make
Der USB ADXL ist nun an den PC anzuschließen. Dabei ist die Taste am ADXL gedrückt zu halten.
Danach über WINSCP auf den Raspberry Pi zugreifen und die Datei klipper.uf2 auf den USB ADXL kopieren. Der USB ADXL sollte sich dann neustarten.
Nun ist der USB ADXL an den Raspberry Pi anzuschließen.
Danach mit folgendem Befehl die ID des USB ADXL auslesen:
ls /dev/serial/by-id/*
Der USB ADXL wird durch einen rp2040 gesteuert. Hier ist es die zweite ID.
Folgende Zeilen müssen in die printer.cfg kopiert werden:
[mcu adxl]
serial: /dev/serial/by-id/[YOUR ID] #paste your specific ID here
[adxl345]
cs_pin: adxl:gpio1
# Hardware SPI Option (Better results, "Invalid ID" Klipper bug with first query)
# spi_bus: spi0a
# Software SPI Option (No "Invalid ID" Klipper bug with first query)
spi_software_sclk_pin: adxl:gpio2
spi_software_mosi_pin: adxl:gpio3
spi_software_miso_pin: adxl:gpio0
[resonance_tester]
accel_chip: adxl345
probe_points:
120,120,20 #or
Der USB ADXL sollte nun unter Maschine aufgeführt sein.
Folgender Befehl ist nun in die Kommandozeile der Mainsail-Oberfläche einzugeben:
ACCELEROMETER_QUERY
Wird folgender Code ausgegeben, so ist die Verkabelung nochmals zu prüfen.
Invalid adxl345 id (got 0 vs e5)
Sollte diese Meldung erscheinen, so ist die Einrichtung abgeschlossen:
Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800
Danach geht es mit Schritt 2 weiter.
2. Software einrichten
Es ist zu beachten, dass Schwingungsmessungen und die Auto-Kalibrierung zusätzliche Software-Abhängigkeiten erfordern, die nicht standardmäßig installiert sind. Zunächst sind die Files zu aktualisieren:
sudo apt update
sudo apt install python3-numpy python3-matplotlib libatlas-base-dev
Als nächstes, um NumPy im Klipper-Umfeld zu installieren, ist dieser Befehl auszuführen:
~/klippy-env/bin/pip install -v numpy
Es ist zu beachten, dass je nach Leistung der CPU die Installation viel Zeit in Anspruch nehmen kann, bis zu 10-20 Minuten.
Danach ist der Raspberry Pi neu zu starten:
sudo reboot
Nach der Installation kann dieser mit folgendem Makros genutzt werden, um die Ressonanzmessung vorzunehmen:
https://book.cryd.de/books/klipper/page/youtube-kalibrierungsmakro
Youtube: Unabhängige Beschleunigungswerte für X und Y
Videolink: https://youtu.be/Nm_14FqvYbg
Bitte beachte, dass die Verwendung dieser Datei eine Anpassung der Klipper-Firmware vornimmt. Dadurch greifst du in den Kern deines 3D-Druckersystems ein.
Es wird von uns empfohlen, dass nur erfahrene Personen mit fortgeschrittenen Kenntnissen und der Fähigkeit, Fehlverhalten zu erkennen, diese Modifikation vornehmen sollten. Eine unsachgemäße Anwendung oder Konfiguration kann zu Fehlfunktionen oder Beschädigungen führen.
Sorge bitte dafür, dass du die Auswirkungen der Änderungen verstehst und mache Backups deiner aktuellen Firmware-Einstellungen, bevor du Änderungen vornimmst.
Hintergrund
Credits:
Dieses Skript wurde von Piezo erstellt:
Github: klipper/limited_cartesian.py at work-peraxis · Piezoid/klipper · GitHub
Diskussion: Independant acceleration limits for X and Y axes - Features - Klipper
Dieses Makro ermöglicht die Einstellung separater Beschleunigungswerte für X und Y. Dies spielt insbesondere für "Bedslinger" Drucker eine wichtige Rolle.
Warum:
Ein Bedslinger 3D-Drucker, auch als bewegliches Bett-3D-Drucker bekannt, ist eine Variante des kartesischen 3D-Druckers. Bei dieser Art von Drucker bewegt sich das Druckbett entlang einer Achse (meist der Y-Achse), während der Druckkopf entlang der anderen beiden Achsen (X- und Z-Achse) bewegt wird. Im Folgenden erläutere ich den grundlegenden Aufbau und einige Nachteile von Bedslinger 3D-Druckern. Da das Druckbett entlang der Y-Achse bewegt wird und die Masse des Objekts und des Druckbetts beeinflusst, kann dies die Druckgeschwindigkeit und -beschleunigung beeinträchtigen. Je größer und schwerer das Druckbett und das Objekt sind, desto schwieriger ist es, hohe Druckgeschwindigkeiten zu erreichen, ohne die Druckqualität bzw. -beschleunigung zu beeinträchtigen.
Wirkungsweise
Die in den Klipper angezeigte Beschleunigungseinstellung kann als "Requested Acceleration" verstanden werden. Sie wird mit dem max_accel-Wert der Konfiguration initialisiert und kann vom Slicer über M204 S[xxx] oder ein beliebiges Makro, das SET_VELOCITY_LIMIT aufruft, festgelegt werden.
Das Skript reduziert diese angeforderte Beschleunigung, wenn die Beschleunigung auf einer Achse größer ist als die entsprechenden max_[x/y/z]_accel-Einstellungen.
Vektoren repräsentieren Bewegungsbeschleunigungen und Orientierung: Die Pfeillänge ist die Beschleunigung und ihre Ausrichtung ist identisch mit der Bewegungsorientierung in der X/Y-Ebene. Das Original-Klipper wendet immer eine Beschleunigung auf den roten gestrichelten Kreis an = Alle Bewegungen werden unabhängig von ihrer Ausrichtung gleich behandelt. Der leuchtend rote Vektor ist ein Beispiel dafür. Die beiden hinzugefügten Grenzen sind die horizontalen und vertikalen roten Linien. Der hellgrüne Vektor ist ein Beispiel dafür, wie die Bewegung durch die Y-Achsen-Beschleunigungsgrenze begrenzt wird. Wenn max_accel (oder der Wert, der über den Slicer oder das Frontend festgelegt wurde) kleiner ist als die diagonale Länge des Rechtecks max_x_accel x max_y_accel, erhalten Sie diese abgerundete Beschränkung der erlaubten Beschleunigungszone. Das bedeutet, dass diagonale Bewegungen bei max_accel ausgeführt werden, anstatt dass eine der Achsenbeschränkungen angewendet wird.
Man kann dies vermeiden, indem man den max_accel-Wert auf den maximalen diagonalen Beschleunigungswert setzen, der von SET_KINEMATICS_LIMIT gemeldet wird, oder ihn selbst berechnen, indem man sqrt(a_x2 + a_y2) verwendet. Dies geschieht nicht automatisch, da die Begrenzung der diagonalen Beschleunigung nützlich sein kann.
Wenn jedoch der Slicer eine niedrigere Beschleunigung während des Drucks festlegt, erhält man wieder diese Begrenzung. Argumentiert werden könnte, dass dies das gewünschte Verhalten ist: Hochgeschwindigkeits-Bewegungen werden auf die Achsenbeschränkungen begrenzt, während langsamere Extrusionsbewegungen nicht von ihrer Ausrichtung beeinflusst werden und somit inkonsistente Extrusionen aufgrund variabler Beschleunigung vermieden werden. (In der Abbildung werden Extrusionsbewegungen auf einem kleineren gestrichelten Kreis ausgeführt, der die Achsenbeschränkungen nicht berührt). Das oben Gesagte gilt nur, wenn scale_xy_accel (wird weiter unten erklärt) deaktiviert ist (der Standard). Wenn die Skalierung aktiviert ist, werden die x/y-Beschleunigungsgrenzen bei einer Änderung von max_accel mit skaliert. In der Abbildung kommt es, wenn die Beschleunigung reduziert wird, zu einer Annäherung der dicken dunkelroten Grenze an den Ursprung, was bedeutet, dass der erlaubte Beschleunigungsbereich verkleinert wird, aber seine Form erhalten bleibt. Dieses Skript führt zu variablen Beschleunigungen, selbst bei Extrusionsbeschleunigungen, kann aber dazu beitragen, das Ringing auf dem Druck zu reduzieren, das durch ein schweres Bett verursacht wird.
Kartesische Drucker (Bedslinger)
Installation
Kopierbefehl
curl 'https://raw.githubusercontent.com/Piezoid/klipper/work-peraxis/klippy/kinematics/limited_cartesian.py' > ~/klipper/klippy/kinematics/limited_cartesian.py
Der Code ist als kinematische Datei abgelegt. Auf diese Weise kann die Datei unter home/pi/klipper/klippy/kinematics eingefügt und die Kinematik in der printer.cfg unter [printer] auf kinematics: limited_cartesian geändern werden.
Um die Änderungen zu aktivieren, müssen Sie den Klipper-Prozess neu starten: sudo systemctl restart klipper oder das System neu starten.
Einrichtung
Die [Printer] Sektion wird überarbeitet. Diese Variante besitzt folgende Elemente:
[printer] | |
kinematics: limited_cartesian | Stellt die Kinematik auf unabhängige X, Y Werte um |
max_velocity: 500 | Berechneter Wert [√(x² + y²)] |
max_x_velocity: 400 | gewünschter maximaler x Geschwindigkeitswert |
max_y_velocity: 300 | gewünschter maximaler y Geschwindigkeitswert |
max_accel: 15000 | Berechneter Wert [√(x² + y²)] |
max_x_accel: 12000 | gewünschter maximaler x Geschwindigkeitswert |
max_y_accel: 9000 | gewünschter maximaler y Beschleunigungswert |
scale_xy_accel: [True/False, default False] |
True: Die im Slicer hinterlegten Beschleunigungswerte werden um das jeweilige Verhältnis heruntergerechnet False: Sind die im Slicer hinterlegten Werte kleiner, so werden die max_x und max_y Werte dadurch ersetzt. |
Beispiel
Slicer:
Beschleunigungswerte werden nicht festgesetzt oder nur für Druckzeitberechnung genutzt.
Klipper:
[printer]
kinematics: limited_cartesian
max_velocity: 333 # Hypotenuse von X,Y [√(x² + y²)]
max_x_velocity: 250
max_y_velocity: 200
max_accel: 5609
max_accel_to_decel: 5609
max_x_accel: 5000
max_y_accel: 1100
scale_xy_accel: false #set to false, true is usefull to combine with slicer settings
max_z_velocity: 40
max_z_accel: 100
Auswirkung:
-
kinematics
: Dieser Parameter bestimmt das kinematische Modell des Druckers. In diesem Fall ist es auflimited_cartesian
gesetzt. Dies bedeutet, dass der Drucker in einer kartesischen (d.h., x, y, z) Koordinatensystem arbeitet, aber mit bestimmten Geschwindigkeits- und Beschleunigungslimits. -
max_velocity
: Dieser Parameter legt die maximale Geschwindigkeit des Druckers in mm/s fest. In diesem Fall ist die maximale Geschwindigkeit auf 333 mm/s eingestellt. -
max_x_velocity
: Dieser Parameter legt die maximale Geschwindigkeit auf der X-Achse in mm/s fest. Hier ist die maximale Geschwindigkeit auf der X-Achse auf 250 mm/s eingestellt. -
max_y_velocity
: Dieser Parameter legt die maximale Geschwindigkeit auf der Y-Achse in mm/s fest. Hier ist die maximale Geschwindigkeit auf der Y-Achse auf 200 mm/s eingestellt. -
max_accel
: Dieser Parameter legt die maximale Beschleunigung des Druckers in mm/s² fest. In diesem Fall ist die maximale Beschleunigung auf 5609 mm/s² eingestellt. max_accel_to_decel
: Dieser Parameter legt die maximale Bremsbeschleunigung des Druckers in mm/s² fest. In diesem Fall ist die maximale Bremsbeschleunigungauf 5609 mm/s² eingestellt.-
max_x_accel
: Dieser Parameter legt die maximale Beschleunigung auf der X-Achse in mm/s² fest. Hier ist die maximale Beschleunigung auf der X-Achse auf 5000 mm/s² eingestellt. -
max_y_accel
: Dieser Parameter legt die maximale Beschleunigung auf der Y-Achse in mm/s² fest. Hier ist die maximale Beschleunigung auf der Y-Achse auf 1100mm/s² eingestellt. -
scale_xy_accel
: Dieser Parameter legt fest, ob die X- und Y-Beschleunigungswerte proportional zur Geschwindigkeit skaliert werden sollen. Wenn dieser Parameter auffalse
gesetzt ist (wie in diesem Fall), werden die Beschleunigungen nicht skaliert.
Bitte beachte, dass diese Parameter stark von der spezifischen Hardware Ihres Druckers abhängen und daher angepasst werden müssen, um optimale Druckergebnisse zu erzielen.
CoreXY Drucker
Folgt demnächst.
Youtube: Makro zur Beschleunigungsermittlung
Videolink: https://youtu.be/CPPPb6jscCk
Einführung
Die Makros MAX_VELOCITY_TEST, MAX_ACCEL_TEST und BENCHMARK sind dafür entwickelt worden, um die maximale Beschleunigung und Geschwindigkeit des 3D-Druckers entlang der X- und Y-Achsen zu testen. Es führt eine Reihe von Testbewegungen bei verschiedenen Beschleunigungs- und Geschwindigkeitswerten aus, um die Leistung des Druckers bei unterschiedlichen Einstellungen zu untersuchen.
ACHTUNG
Dabei werden nur die physischen Eigenschaften getestet. Diese können bspw. für Travel-Bewegungen genutzt werden. Ob diese Werte seitens des Hotends realisiert werden können muss separat ermittelt werden. Für dieses Makro muss derzeitig die stepper.py ausgetauscht werden. Dies kann dafür sorgen, dass KIAUH nicht mehr updaten kann. Vor einem Update ist ggf. die originale Stepper.py einzuspielen und nach dem Update wieder auszutauschen. Wir sind derzeitig dabei, diese Funktion in das Standardklipper zu integrieren, damit dieser Schritt entfallen kann.
Installation
- Stelle sicher, dass der 3D-Drucker korrekt eingerichtet ist und alle Achsen sich frei bewegen können.
- Kopiere die Datei speed_test.cfg in Ihre Konfiguration und wähle den Druckertyp in der Datei aus (kartesisch oder corexy).
- Füge [include speed_test.cfg] sowie [respond], [endstop_phase stepper_x], [endstop_phase stepper_y] zur printer.cfg Datei hinzu.
"MAX_VELOCITY_TEST" Makro
ACHTUNG
Das Makro lässt sich nur über den "Not-Aus" stoppen.
``MAX_VELOCITY_TEST`` ist dazu gedacht, die maximale Geschwindigkeit eines 3D-Druckers entlang der X- und Y-Achse zu testen. Es führt eine Reihe von Testbewegungen bei verschiedenen Geschwindigkeiten aus und ermöglicht es , die Leistung des Druckers bei unterschiedlichen Geschwindigkeiten zu untersuchen.
Das Makro verwendet mehrere Parameter, um den Test anzupassen:
- MIN_VELOCITY: Die minimale Geschwindigkeit, mit der der Test beginnen soll (Standardwert: 10 mm/s).
- MAX_VELOCITY: Die maximale Geschwindigkeit, mit der der Test durchgeführt werden soll (Standardwert: 300 mm/s).
- VELOCITY_INCREMENT: Die Erhöhung der Geschwindigkeit für jeden Schritt des Tests (Standardwert: 10 mm/s).
- AXIS: Die Achse, entlang der der Test durchgeführt werden soll (Standardwert: "X").
- ACCEL: Der Beschleunigungswert, der während des Tests verwendet werden soll (Standardwert: die maximale Beschleunigungseinstellung des Druckers).
- DISTANCE: Gibt die Entfernung für die Testbewegungen an, entweder "full" (Standardwert) oder "short". Wenn es auf "full" gesetzt ist, wird das Makro die maximal verfügbare Entfernung auf der Achse verwenden; wenn es auf "short" gesetzt ist, wird es eine zufällige Entfernung für jede Testbewegung verwenden, die sicherstellt, dass die angegebene Geschwindigkeit erreicht wird.
- REPEAT: Anzahl der Hin- und Rückfahrten, die bei jedem Geschwindigkeitsschritt durchgeführt werden sollen (Standardwert: 5 für "DISTANCE=full", 50 für "short").
"MAX_ACCEL_TEST" Makro
ACHTUNG
Das Makro lässt sich nur über den "Not-Aus" stoppen.
Das ``MAX_ACCEL_TEST`` G-Code-Makro wurde entwickelt, um die maximale Beschleunigung eines 3D-Druckers entlang der X- und Y-Achsen zu testen.
Es führt eine Reihe von Testbewegungen mit verschiedenen Beschleunigungswerten durch, sodass die Leistung des Druckers bei unterschiedlichen Beschleunigungsraten untersucht werden kann.
Das Makro verwendet mehrere Parameter, um den Test anzupassen:
- MIN_ACCEL: Die minimale Beschleunigung, bei der der Test beginnen soll (Standard: 100 mm/s^2).
- MAX_ACCEL: Die maximale Beschleunigung, bei der der Test durchgeführt werden soll (Standard: 1000 mm/s^2).
- ACCEL_INCREMENT: Der Zuwachs in der Beschleunigung für jeden Schritt des Tests (Standard: 100 mm/s^2).
- AXIS: Die Achse, entlang der der Test durchgeführt werden soll (Standard: "X").
- SPEED: Die Geschwindigkeit, die während des Tests verwendet werden soll (Standard: die maximale Geschwindigkeitseinstellung des Druckers).
- REPEAT: Anzahl der Hin- und Rückfahrten, die bei jedem Geschwindigkeitsschritt durchgeführt werden sollen (50).
"BENCHMARK" Makro
ACHTUNG
Das Makro lässt sich nur über den "Not-Aus" stoppen.
Das ``BENCHMARK`` Makro ist dafür gedacht, das Leistungsverhalten eines 3D-Druckers anhand einer Reihe von Kurz- und Langbewegungen zu testen. Das Makro erlaubt es, eine umfangreiche Analyse des Druckers hinsichtlich verschiedener Beschleunigungs- und Geschwindigkeitsparameter durchzuführen.
Das Makro verwendet folgende Parameter, um den Test anzupassen:
MAX_ACCEL: Die maximale Beschleunigung, mit der der Test durchgeführt werden soll (Standardwert: die maximale Beschleunigungseinstellung des Druckers).
MAX_VELOCITY: Die maximale Geschwindigkeit, mit der der Test durchgeführt werden soll (Standardwert: die maximale Geschwindigkeitseinstellung des Druckers).
MOVEMENTS_SHORT: Anzahl der kurzen Bewegungen, die durchgeführt werden sollen (Standardwert: 200).
MOVEMENTS_LONG: Anzahl der langen Bewegungen, die durchgeführt werden sollen (Standardwert: 200).
RANDOM_SEED: Ein Seed-Wert für die Zufallszahlengenerierung, um die Position der Bewegungen festzulegen (Standardwert: 42).
Das Makro beginnt mit dem Homing der Achsen und setzt die Z-Achse auf 20. Danach stellt es die Beschleunigungs- und Geschwindigkeitsgrenzen des Druckers entsprechend den gegebenen oder Standardparametern ein.
Danach führt das Makro die festgelegte Anzahl an kurzen Bewegungen aus. Für jede Bewegung berechnet das Makro eine Zufallsposition entlang der X- und Y-Achse, wobei es sicherstellt, dass die Bewegung innerhalb des gültigen Bereichs der jeweiligen Achse bleibt. Es verwendet den gegebenen oder Standardseed für die Zufallsgenerierung, um die Positionen festzulegen. Ähnlich führt das Makro danach die festgelegte Anzahl an langen Bewegungen aus, wieder mit zufällig berechneten Positionen basierend auf dem Seed-Wert. Am Ende des Tests führt das Makro erneut ein Homing der X- und Y-Achsen durch und setzt die Geschwindigkeits- und Beschleunigungsgrenzen des Druckers auf ihre ursprünglichen Werte zurück. Dieses Makro ist sehr nützlich, um das Verhalten des Druckers unter verschiedenen Bedingungen zu analysieren und zu optimieren, insbesondere im Hinblick auf Geschwindigkeits- und Beschleunigungseinstellungen. Es kann auch dazu verwendet werden, um mögliche Probleme mit der Drucker-Hardware zu identifizieren, indem man das Verhalten des Druckers bei unterschiedlichen Geschwindigkeits- und Beschleunigungsparametern überwacht.
Testablauf
1. Maximale Geschwindigkeit
Das Makro MAX_VELOCITY_TEST sollte auf der X-Achse ausgeführt werden. Dabei sollte sich schrittweise an die Maximalgeschwindigkeit herangetastet werden. Die full Distanz sollte genutzt werden. Bei "ungünstigen" Geräuschen des Druckers sollte das Makro durch Betätigen des Not-Aus gestoppt werden.
!!Achtung!! Trotz hoher Geräusche kann es passieren, dass es zu keinem Schrittverlust kommt. Hier sollte neben der technischen Erkennung im Zweifel nach Gehör agiert werden
Die Geschwindigkeit, welche keine Geräusche produziert, sollte über die short Distanz validiert werden. Dieser Test sollte dann analog auf der Y-Achse ausgeführt werden. Dabei ist zu beachten, dass Bedslinger Drucker auf der Y-Achse eine geringere Geschwindigkeit leisten können. Die ermittelte Maximalgeschwindigkeit sollte aus Sicherheitsgründen und zur Materialschonung um 20% reduziert werden.
3. Maximale Beschleunigung
Das Makro MAX_ACCEL_TEST sollte auf der X-Achse ausgeführt werden. Dabei sollte sich schrittweise an die Maximalbeschleunigung herangetastet werden. Dieses Makro hat eine automatische Selbstabschaltung bei Schrittverlust. Trotzdem sollte der Drucker bei "ungünstigen" Geräuschen durch Betätigen des Not-Aus gestoppt werden. Die Beschleunigung, welche keine Geräusche produziert, sollte über einen REPEAT von 200 validiert werden. Dieser Test sollte dann analog auf der Y-Achse ausgeführt werden. Dabei ist zu beachten, dass Bedslinger Drucker auf der Y-Achse eine geringere Beschleunigung leisten können. Die ermittelte Maximalbeschleunigung sollte aus Sicherheitsgründen und zur Materialschonung um 30% reduziert werden.
4. Abschließende Schritte:
Die Werte sollten mit dem Makro BENCHMARK validiert werden. Die maximalen Beschleunigungs- und Geschwindigkeitswerte, die der Drucker ohne Schrittverlust oder Vibrationen erreichen konnte, sollten notiert werden. Die Einstellungen des Druckers sollten entsprechend aktualisiert und die Änderungen gespeichert werden. Abschließende Testdrucke sollten durchgeführt werden, um die Druckqualität und Leistung bei den ermittelten maximalen Werten zu überprüfen.
Youtube: Kobra Display mit Klipper
Erstellt von seho85 (Anycubic Vyper)
seho85/klipper-dgus: A python project to connect a DGUS display to Klipper (github.com)
Adaptiert für den Anycubic Kobra von fragmon
Hardware
Folgende Kobra Modelle wurden getestet:
- Kobra Max mit Trigorilla Pro A 1.0.4
- Kobra Max mit Trigorilla Pro B 1.0.2
Thereotische Kompatibilität (Modelle werden nach Tests aufgenommen):
- Kobra
- Kobra Plus
- Kobra 2
Nicht kompatibel:
- Kobra Neo (kein DWIN Display)
Zur Nutzung wird das Display nicht mehr am Drucker, sondern am Raspberry Pi über dei GPIO direkt angeschlossen.
BOM:
- Dupontstecker 4 Pin (Anschluss GPIO Raspberry Pi)
- JST XH Stecker 6 Pin (Anschluss Kobra Display)
- Kabel
Installation
Die Anleitung ist einzig für einen Raspberry Pi ausgelegt. Solltet ihr eine andere MCU betreiben, so müssen die Dateien ggf. angepasst werden.
Displayverbindung
Das Display ist wird über die GPIO Leiste mit dem Raspberry PI verbunden.
1. Aktivieren Sie die Serienschnittstelle auf Raspberry Pi
sudo raspi-config
* *3) Schnittstellenoptionen*
* *6) Serielle Schnittstelle*
* Möchten Sie, dass eine Anmeldeschale über die serielle Schnittstelle zugänglich ist?
* Nein
* Möchten Sie, dass die Serienschnittstellenhardware aktiviert wird?
* Ja
2. Trennen Sie Raspberry Pi von der Stromversorgung**
3. Verbinden Sie das Display mit dem Raspberry PI GPIO Pin Header
ACHTUNG
Es wird dringend empfohlen, das Display anzuschließen, wenn der Raspberry Pi ausgeschaltet ist!
Display-Steckverbinder
=================
Display flashen
1. Lade die DWIN_SET.zip (erstellt mit dem DGUS-Tool), entpacke und kopiere diese auf eine korrekt formatierte MicroSD-Karte.
https://github.com/cryd-s/kobra_extended/blob/main/dgus_project/DWIN_SET.zip
2. Stecke die MicroSD-Karte in das ausgeschaltete Display
3. Schalte das Display ein
4. Eine blaue Displaymaske zeigt den Fortschritt des Flashens an.
5. Während des Flash-Vorgangs zeigt die zweite Zeile an:
SD Card Process...
Wenn das Flashen abgeschlossen ist, zeigt die zweite Zeile an:
SD Card Process... END!
Schalte das Display aus
Entferne die MicroSD-Karte
ACHTUNG:
Es ist von entscheidender Bedeutung, dass die MicroSD-Karte korrekt formatiert ist:
- Dateisystem: FAT32
- Zuordnungseinheitsgröße: 4096
Installationsskript
Für eine einfache Installation auf MainsailOS ist ein Einrichtungsskript namens install_for_mainsailos.sh im Verzeichnis des Projektordners zu finden.
1. Kopieren der benötigten Daten
git clone https://github.com/cryd-s/kobra_extended.git
mv kobra_extended klipper-dgus
chmod -R 700 klipper-dgus
cd klipper-dgus
2. Führen das Installations-Skript aus:
./install_for_mainsailos.sh
ACHTUNG Während der Installation werden Sie aufgefordert, Ihr sudo-Passwort einzugeben.
Konfigurationsdateien
dgus_display_macros.cfg
Diese Konfigurationsdatei muss in den config Ordner kopiert und in der printer.cfg eingebunden werden.
[include dgus_display_macros.cfg]
Die Datei definiert die Aktionen, die von einigen Steuerelementen des Displays ausgeführt werden.
ACHTUNG
Je nachdem, welchen Drucker Sie verwenden, ist eine Anpassung dieser Datei erforderlich (siehe Kommentare in der Datei dgus_display_macros.cfg)
serial_config.json
Die Datei serial_config.json enthält die Einstellungen für die serielle Schnittstelle, die zur Kommunikation mit dem DGUS-Display verwendet wird.
Die Angabe ist abhängig vom verbauten Raspberry PI sowie der Rasbian Version. Wählt zunächst eine Schnittstelle aus und sollte das Display nicht starten, testet hilfsweise die zweite Bezeichnung. Sollte dies auch nicht funktionieren schaue bitte und Troubleshooting.
Standardmäßig wird folgender Schnittstelle genutzt:
"serial_port": "/dev/ttyS0"
Sollte das Display nicht funktionieren, kann mit diesem Befehl, die Schnittstelle geändert werden:
ttyS0 zu ttyAMA0
sed -i '3s|/dev/ttyS0|/dev/ttyAMA0|' /home/pi/klipper-dgus/config/serial_config.json
wenn es wieder zurückgesetzt werden soll (ttyAMA0 zu ttyS0)
sed -i '3s|/dev/ttyAMA0|/dev/ttyS0|' /home/pi/klipper-dgus/config/serial_config.json
websocket.json
Die Datei websocket.json enthält die Einstellungen für die Websocket-Verbindung, die zur Kommunikation mit Klipper über den Moonraker-Socket verwendet wird.
In der Regel müssen nur die ersten beiden Parameter *ip* und *port* geändert werden.
Neben den Einstellungen *ip* und *port* gibt es einige andere Objekte, die hier beschrieben werden.
{
"websocket": {
"ip": "127.0.0.1",
"port": 7125,
"printer_objects": {
"some_more_entries" : "..."
},
"data_model": {
"some_more_entries" : "..."
}
}
}
IP
IP-Adresse der Maschine, auf der Moonraker läuft. Wenn MainsailOS verwendet wird, ist es dieselbe IP-Adresse, wie die zur Verbindung mit der Weboberflächeport
Port
Der Port, auf dem Moonraker überträgt. Standardmäßig läuft es auf 7125 und es sind keine Änderungen erforderlich.
printer_objects
Hier sind die *Druckerobjekte* definiert, die vom Display verwendet werden. Siehe https://moonraker.readthedocs.io/en/latest/printer_objects/
Änderungen hier können erforderlich sein, wenn eine neue Information im Display verwendet werden soll.
data_model
In data_model befinden sich die zuletzt mit Moonraker ausgetauschten Daten. Dieser Abschnitt benötigt überhaupt keine manuellen Anpassungen. Er wird von der Display-Controller-Anwendung generiert. Manuelle Änderungen werden beim Starten/Herunterfahren der Controller-Anwendung überschrieben.
Youtube : Mainsail und Fluidd per Login schützen
Mainsail und Fluidd mit Passwort schützen
Hallo.
Hier schauen wir uns an, wie wir unsere Webanwendung Mainsail oder Fluidd mit einem Login schützen können.
Wir empfehlen euch Fluidd für diesen Einsatzzweck zu Nutzen
Videoguide Mainsail oder Fluidd schützen
Hinweis:
Hattet ihr fluidd installiert und wollt dann wieder auf Mainsail, dann solltet ihr über kiauh Klipper, Moonraker, Mainsail und die Mainsail.conf löschen. Zusätzlich löscht aus dem ~/printer_data/config die moonraker.conf
Damit ein passwortgeschützer Login nicht durch Network-Sniffing über das http Protokoll abgegriffen werden kann, solltest du https (verschlüsselter Datenverkehr) aktivieren.
Backup eurer Konfig und Database
cp -r ~/printer_data ~/backup_printer_data
Benötigte Anwendungen installieren
sudo apt install apache2-utils
https Zertifikat anlegen
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/mainsail.key -out /etc/nginx/mainsail.crt
-days = Wie viel Tage gültig -> Hier 10 Jahre
-keyout = Hier wird der Ablageort und Name des Keys festgelegt "mainsail.key"
-out = Hier wird der Ablageort und Name der crt Datei festgelegt "mainsail.crt"
Welche Daten sind wichtig im Konfigurationsmenü der Zertifikatserstellung
- County Name: DE
- State: Mainsail
- Locality Name: Mainsail
- Organisation: Mainsail
- Oraganizational UNit Name: Mainsail
- Common name: Mainsail
- Email Adress:
http auf https umleiten
Konfig sichern:
sudo cp /etc/nginx/sites-available/mainsail /etc/nginx/sites-available/backup.mainsail
Konfig bearbeiten:
sudo nano /etc/nginx/sites-available/mainsail
So soll es aussehen:
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
# auth_basic "user login";
# auth_basic_user_file /etc/nginx/.htpasswd;
listen 443 ssl default_server;
ssl_certificate /etc/nginx/mainsail.crt;
ssl_certificate_key /etc/nginx/mainsail.key;
access_log /var/log/nginx/fluidd-access.log;
error_log /var/log/nginx/fluidd-error.log;
Nginx neustarten:
sudo systemctl restart nginx
Wichtiger Letzer Schritt: Passt euere Verbindung im Slicer an!
Für den SuperSlicer habe ich leider keine Lösung, wie ihr https erreichen könnt
Fluidd mit Passwort schützen:
1. Fluidd installieren
Installation über Kiauh:
https://book.cryd.de/books/klipper/page/kiauh-installieren
Installieren -> Fluidd
2. SSL aktivieren
Konfig sichern:
sudo cp /etc/nginx/sites-available/fluidd /etc/nginx/sites-available/backup.fluidd
Konfig bearbeiten:
sudo nano /etc/nginx/sites-available/fluidd
So soll es aussehen:
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl default_server;
ssl_certificate /etc/nginx/mainsail.crt;
ssl_certificate_key /etc/nginx/mainsail.key;
access_log /var/log/nginx/fluidd-access.log;
error_log /var/log/nginx/fluidd-error.log;
Nginx neustarten:
sudo systemctl restart nginx
3. Nutzer anlegen und Schutz aktivieren
- Öffne die Einstellungen von Fluid und lege einen Nutzer an.
Siehe Bild
Tipp: Wähle als Login nicht die Login Daten deines Pi's. Sprich nicht den ssh Zugang und auch nicht das root Passwort!
4. Passwortschutz Moonraker vorbereiten
Füge folgendes in deiner moonraker.conf ein
[authorizations]
force_logins: true
6. Ggf. Browser Cache leeren
Hast du Probleme beim Login, lösche deinen Browsercache über die Einstellungen deines Browsers.
Oder nutze die Tastenkombination STRG+F5
7. Passwort vergessen
Loggt euch per FTP oder SSH ein und ändert in der moonraker.conf diese Zeile so ab.
Danach einemal Cache leeren und ihr kommt wieder auf die Oberfläche und könnte euren Nutzer löschen und wieder anlegen.
#force_logins: true
Mainsail mit Passwort schützen
Webserver Authentifizierung hinzufügen
Öffnet Putty und verbindet euch:
sudo nano /etc/nginx/sites-available/mainsail
Jetzt fügt ihr folgendes unter "server" hinzu:
#Nutzer Authentifizierung
auth_basic "User Login";
auth_basic_user_file /etc/nginx/.htpasswd;
Verlasst den Editor mit STRG+X -> Y zum Bestätigen -> Enter zum Übernehmen des Namens
Nutzer anlegen
sudo htpasswd -c /etc/nginx/.htpasswd robin
robin = Nutzername, den ihr verwenden wollt
Wenn dieser Befehl nicht funktioniert, dann müsst ihr oben die benötigten Anwendungen installieren.
Ohne Nutzer und Passwort kommt ihr nicht auf die Weböberfläche. Daher ist der nächste Schritt wichtig!
Youtube - Spoolman
Hallo. Hier zeige wir euch, wie ihr den Service "Spoolman" installiert, um eure Filamentspulen mit Klipper zu verwalten.
Original Dokumentation
Link zum Spoolman Repo:
https://github.com/Donkie/Spoolman
Installation - Spoolman als Service (Standalone)
1. System Updaten
sudo apt-get update
sudo apt-get upgrade -y
2. Curl installieren
sudo apt-get install -y curl jq
3. Sourche URL festlegen:
source_url=$(curl -s https://api.github.com/repos/Donkie/Spoolman/releases/latest | jq -r '.assets[] | select(.name == "spoolman.zip").browser_download_url')
4. Spoolman Repo downlload
curl -sSL $source_url -o temp.zip && unzip temp.zip -d ./Spoolman && rm temp.zip
5. Spoolman installieren
cd ./Spoolman
bash ./scripts/install_debian.sh
6. Aktueller Fix
sudo systemctl stop Spoolman.service
rm /home/biqu/.local/share/spoolman/spoolman.db
sudo systemctl start Spoolman.service
7. Prüfen ob spoolman läuft
http://<IP>:7912
Beispiel: http://192.168.1.10:7912
Spoolman standalone deinstallieren
sudo systemctl stop Spoolman.service
sudo systemctl disable Spoolman.service
sudo rm /etc/systemd/system/Spoolman.service
Installation mit Docker
Docker installieren
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.Docker.com -o get-Docker.sh
sudo sh get-Docker.sh
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
Spoolman Docker Container installieren
1. Verzeichnes für die Spoolman Datenbank anlegen
cd ~
mkdir spoolman
cd spoolman/
mkdir data
chown 1000:1000 data
nano docker-compose.yml
2. Docker-compose.yml
version: '3.8'
services:
spoolman:
image: ghcr.io/donkie/spoolman:latest
restart: unless-stopped
volumes:
# Mount the host machine's ./data directory into the container's /home/app/.local/share/spoolman directory
- type: bind
source: ./data # This is where the data will be stored locally. Could also be set to for example `source: /home/pi/printer_data/spoolman`.
target: /home/app/.local/share/spoolman # Do NOT change this line
ports:
# Map the host machine's port 7912 to the container's port 8000
- "7912:8000"
environment:
- TZ=Europe/Berlin # Optional, defaults to UTC
3. Container starten
docker compose up -d
Spoolman könnt ihr wie folg erreichen
http://192.168.xxx.xxx:7912
Spoolman Datenbank von Standalone auf Docker
Die Datenbank wird standardmäßig bei der Standalone in folgenden Verzeichnis gespeichert:
~/.local/share/spoolman/spoolman.db
Ihr müsst sie dann in euer angelegtes "Data" Verzeichnis kopieren
cd ~
cp .local/share/spoolman/spoolman.db ~/spoolman/data/spoolman.db
Moonraker.conf und printer.cfg anpassen
moonraker.conf
[spoolman]
server: http://192.168.0.123:7912
# URL to the Spoolman instance. This parameter must be provided.
sync_rate: 5
# The interval, in seconds, between sync requests with the
# Spoolman server. The default is 5.
printer.cfg | macros.cfg
[gcode_macro SET_ACTIVE_SPOOL]
gcode:
{% if params.ID %}
{% set id = params.ID|int %}
{action_call_remote_method(
"spoolman_set_active_spool",
spool_id=id
)}
{% else %}
{action_respond_info("Parameter 'ID' is required")}
{% endif %}
[gcode_macro CLEAR_ACTIVE_SPOOL]
gcode:
{action_call_remote_method(
"spoolman_set_active_spool",
spool_id=None
)}
Hilfe - Wenn ihr falsche Daten in der moonraker.conf eingeben habt
1. Per SSH auf den Pi verbinden
2. moonraker.conf bearbeiten
cd ~
nano printer_data/config/moonraker.conf
3. Nach der Bearbeitung Dienst neustarten:
sudo service moonraker restart
Optional - Bug bei Standalone Lösung
Es gibt aktuell noch folgenden Issue: (Stand 05.11.2023)
Problem:
In der Standalone Version beendet sich der spoolman Service wenn er mit --user Parameter unter dem User pi gestartet wird.
Lösung:
Links zum Issue
(root user notwendig)
systemctl --user stop Spoolman
systemctl --user disable Spoolman
sudo su
cd /home/pi/.config/systemd/user/
mv Spoolman.service /etc/systemd/system/
nano /etc/systemd/system/Spoolman.service
Folgendes unter [Service] eintragen:
User=pi
Group=pi
Dienst speichern und neustarten:
systemctl daemon-reload
systemctl enable Spoolman
systemctl start Spoolman
Prüfen ob es geklappt hat:
ps -axu |grep spoolman
-> pi 246703 0.3 1.9 686968 72340 ? Sl 15:55 1:28 /home/pi/Spoolman-0.13.1/.venv/bin/python /home/pi/Spoolman-0.13.1/.venv/bin/uvicorn spoolman.main:app --host 0.0.0.0 --port 7912
Youtube - Nevermore Controller
Hier entsteht das Installationstutorial für den Nevermore Controller. Vielen Dank an den Ersteller der Software und der englischen Anleitung: SanaaHamel
Die Anleitung zum Filtersystem wird zeitnah ergänzt:
- Aufbauanleitung Stealthmax Filtersystem: Link folgt demnächst
- Aufbauanleitung Nevermore Mini: Youtube Anleitung
Nevermore Kontroller mit Raspberry Pi Pico
Die folgende Anleitung beinhaltet nur die Einrichtung der elektronischen Komponenten.
Benötigte Hardware
Diese Bauteile werden für den Nevermore Controller benötigt:
Zwingende Komponenten:
1. Über Amazon:
1x Pico W mit Pinleiste: https://amzn.to/3vktXTN
2x BME280: https://amzn.to/3NHYp0E
2x SGP40: derzeitig nicht bestellbar
Jumper Wire (female to female): https://amzn.to/3RKTQ8c
2. Über Aliexpress:
2x SGP40/BME240 (2in1 PCB): https://s.click.aliexpress.com/e/_Dmkhbk5
oder
2x SGP40: https://s.click.aliexpress.com/e/_DmCfMXf
2x BME240 (3xBME240 3.3V): https://s.click.aliexpress.com/e/_Dndm8PX
Optionale Komponenten (abhängig vom Einsatzzweck):
Display: https://amzn.to/3tDxj3O
Display: https://www.aliexpress.com/item/1005006111616872.html
PWM Fan bspw 5V Noctua: https://amzn.to/3SkVwp4
*alle Links sind Affiliate Links womit du kostenfrei den Channel und den Discord unterstützt - jeder Cent kommt der Community zu Gute!
Anschlussbelegung
In dieser Anordnung werden die Sensoren (BME und SGP) durch eine Pinleiste übereinandergestapelt. Der Plastikabstandshalter soll zwischen den Platinen platziert werden. Stelle sicher, dass der SGP40-Sensor nach außen gerichtet ist, um eine optimale Detektion zu gewährleisten. Der Sensor des lilafarbenen Sensors kann zwischen dernLeiterplatten montiert sein.
Verkabelung testen
Um die Verkabelung der Sensoren zu prüfen habe ich ein Micropythonskript geschrieben. Um den I2C-Bus zu überprüfen, gehe wie folgt vor:
1. Lade MicroPython auf den Raspberry Pi Pico herunter und flashe es.
Link: https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
2. Lade Thonny herunter und installiere es.
Link: https://thonny.org
3. Starte Thonny und wähle deinen Raspberry Pi Pico aus.
4. Kopiere und füge diesen Code ein:
import machine
# create first i2c bus (Exhaust)
sda_exhaust = machine.Pin(18)
scl_exhaust = machine.Pin(19)
i2c_exhaust = machine.I2C(1, sda=sda_exhaust, scl=scl_exhaust, freq=400000)
# create second i2c bus (Intake)
sda_intake = machine.Pin(20)
scl_intake = machine.Pin(21)
i2c_intake = machine.I2C(0, sda=sda_intake, scl=scl_intake, freq=400000)
def scan_i2c_bus(i2c, bus_name):
print(f'Scan i2c bus {bus_name}...')
devices = i2c.scan()
if len(devices) == 0:
print(f"No i2c device found on {bus_name} bus!")
else:
print(f'i2c devices found on {bus_name} bus:', len(devices))
for device in devices:
print("Decimal address: ", device, " | Hexa address: ", hex(device))
# Scan I2C-Bus
scan_i2c_bus(i2c_exhaust, "Exhaust")
scan_i2c_bus(i2c_intake, "Intake")
5. Überprüfe die Antwort: Wenn die Meldung "Kein I2C-Gerät gefunden" erscheint, solltest du die Verkabelung überprüfen oder den Chip ersetzen. Bei Nutung von zwei Sensorstacks müssen insgesamt vier Adresse angezeigt werden.
Controllersoftware installieren
1. Kontrollerfirmare
Lade die Kontrollerfirmware herunter und flashe diesen auf den Raspberry Pico.
2. Kontrollersoftware
Lade die Software über SSH auf den Klipper-Kontroller (Raspberry Pi) und installiere diese mit folgenden Befehlen:
cd ~
git clone https://github.com/SanaaHamel/nevermore-controller
cd nevermore-controller
./install-klipper-module.bash
Wenn du Mainsail OS verwendest, wird dich das Installationsskript fragen, ob du Bluetooth aktivieren möchtest. Tu dies und starte dann deinen Klipper-Host neu. (z.B. sudo reboot).
3. Bluetooth Adresse
Wenn du nur einen Nevermore-Controller in Reichweite hast, kannst du die Option bt_address in deiner Druckerkonfiguration weglassen und diesen Abschnitt komplett ignorieren. Wenn du jedoch mehrere Bluetooth (BT)-Geräte in Reichweite hast, die wie Kandidaten für einen Nevermore-Controller aussehen, musst du angeben, welches du verwenden möchtest. Dies geschieht, indem du ihre 'Adresse' in der Druckerkonfiguration mit bt_address: <Adresse> angibst.
Hinweis: Es ist möglich, aber sehr selten, dass sich die Adresse ändert, wenn ein neues UF2 auf den Pico geflasht wird. Dies wurde einmal beobachtet, nachdem das Pico SDK aktualisiert wurde.
Methode A - Überprüfen des Klipper-Protokolls
- in Fehler wird ausgelöst, wenn mehrere Controller in Reichweite sind. Die Fehlermeldung listet alle verfügbaren Adressen der Controller auf.
... ... [11:06:36:535560] nevermore - multiple nevermore controllers discovered. specify which to use by setting `bt_address: <insert-address-here>` in your klipper config. discovered controllers (ordered by signal strength): address | signal strength ----------------------------------- FA:KE:AD:RE:SS:01 | -38 dBm FA:KE:AD:RE:SS:00 | -57 dBm Config error Traceback (most recent call last): File "~/klipper/klippy/klippy.py", line 180, in _connect cb() File "~/klipper/klippy/extras/nevermore.py", line 793, in _handle_connect raise self.printer.config_error("nevermore failed to connect - timed out") configparser.Error: nevermore failed to connect - timed out ... ...
Methode B: - Nur für Linux - über bluetoothctl
Stelle sicher, dass dein Nevermore-Controller eingeschaltet ist und die LED blinkt. (Zeigt an, dass er aktiv ist.)
Öffne ein Terminal und führe aus:
bluetoothctl
danach
scan on
aus
Es wird euch folgendes angezeigt, ist für euch aber nicht wichtig.
Führe danach
devices
aus.
Es wird euch nun der Nevermore Kontroller angezeigt. Kopiert euch nun die Bluetooth ID.
4. Anpassung der Printer.cfg
Kopiere die Bluetooth ID in deine Printer.cfg wie folgt:
[nevermore]
bt_address: FA:KE:AD:RE:SS:00
Beispiel mit auskommentierte Adresse, da nur ein Bluetoothgerät in der Nähe ist:
5. (Option) Aktualisiere die Firmware
Wenn du eine OTA-fähige UF2 auf deinen Controller geflasht hast, kannst du ihn drahtlos aktualisieren. Der Prozess ist einfach:
cd ~/nevermore-controller
git pull
./tools/update_ota.py
Wenn du update_ota.py
ausführst, werden fehlende Abhängigkeiten installiert. Dies kann beim ersten Mal je nach Leistungsfähigkeit des Computers eine Weile dauern.
Wenn du mehrere Controller in Reichweite hast, kannst du mit --bt-address
angeben, welchen du aktualisieren möchtest. Z.B. ./tools/update_ota.py --bt-address XX:XX:XX:XX:XX:XX
Siehe ./tools/update_ota.py --help
für alle Optionen.
HINWEIS: Der Controller startet automatisch neu, wenn er 60 Sekunden lang im Bootloader-Modus untätig bleibt.
Insgesamt solltest du eine ähnliche Ausgabe wie folgende sehen:
Tool environment seems up to date.
This program will attempt to update a Nevermore controller.
-------------------------------------------------------------------------
discovering Nevermores...
connecting to XX:XX:XX:XX:XX:XX
current revision: v0.7.0
sending reboot-to-OTA command...
connecting to device...
requesting device info...
sync w/ device...
trying to update bootloader...
requesting device info...
img size: 364544
erasing tail [0x10059000, 0x1005a000]...
updating: 100%|██████████████████████████████████████████████████████████████████████| 356k/356k [00:02<00:00, 129kb/s]
# I've already updated this controller, so nothing changed
update modified 0 of 364544 bytes (0.00%)
updating main image...
requesting device info...
img size: 390912
erasing tail [0x100bb000, 0x10200000]...
updating: 100%|██████████████████████████████████████████████████████████████████████| 384k/384k [00:03<00:00, 120kb/s]
update modified 0 of 393216 bytes (0.00%)
finalising...
rebooting...
update complete.
waiting for device to reboot (1 seconds)...
connecting to XX:XX:XX:XX:XX:XX to get installed version
(this may take longer than usual)
NOTE: Ignore logged exceptions about `A message handler raised an exception: 'org.bluez.Device1'.`
This is caused by a bug in `bleak` but should be benign for this application.
previous version: v0.7.0 # whatever version was installed
current version: v0.7.0 # in this example it tried to update to the same version
Mainsail Oberfläche
Update Mainsail mindestens auf Version 2.7.1.
Habt ihr den [Nevermore] plus die ID eingetragen sollte automatisch Nevermore in der Übersicht erscheinen.
Fehlen die ersten Zahlen (hier 100>99), so wurde der SGP Sensor nicht erkannt. Fehlen Temperatur etc. dann ist der BMP Sensor nicht korrekt angeschlossen.
Wollt ihr eure Sensoren, Lüfter etc individuell einrichten, dann schaut in diese Dokumentation.
Troubleshooting
Falls es nicht geklappt hat, dann schaue in die FAQ von Sanaa oder Frage auf unserem Discord nach.
Nevermore Mini - Display + Sensor
Benötigte Hardware
Diese Bauteile werden für den Nevermore Controller benötigt:
Zusammenbau | Anzahl |
Magnets 6x3mm | 8x |
m3x6mm BHCS | 4x |
m3x6 SHCS | 6x |
M3 Einschmelzmuttern | 10x |
Montage | |
1515/2020 Extrusion: m3x8 SHCS | 2x |
3030 Extrusion: m4x8mm SHCS | 2x |
Bambulabs Magnets 6x3mm | 1x |
Elektronik | |
Arctic S4028-15K 12V 4028 Lüfter | 1x |
AWG 28 Kabel | 20cm x Anzahl Kabel |
Waveshare RP2040 1,28" Touch Display | 1x |
SGP40 VOC sensor | 1x |
BME280 Temp/Humidity Sensor | 1x |
USB C Stecker zum löten | 1x |
Wago221 | 2x |
Filter | |
HEPA: Nevermore 190x45mm HEPA Filter | 1x |
Aktivkohle: 4mm Pellet | 150g |
Shoplink:
https://cryd.de/unsere-empfehlungen/3d-druck/nevermore-mini/
*alle Links sind Affiliate Links womit du kostenfrei den Channel und den Discord unterstützt - jeder Cent kommt der Community zu Gute!
Firmware
Small plot: nevermore-controller-waveshare-1.28-v0.10-small-plot.uf2
no plot: nevermore-controller-waveshare-1.28-v0.10-no-plot.uf2
Youtube: Bento Box
Die BentoBox ist eine Filtereinheit, welche die verschmutze Luft durch Aktivkohle und HEPA Filter zieht und diese dadruch reinigt. Diese gibt es in verschieden Ausführungen und kann autark betrieben werden.
Hier zeige ich euch, was ihr braucht, wie ihr die Box zusammenbaut und in Betrieb nehmt.
Projekte und Druckdateien
5015 radial Version:
https://www.printables.com/de/model/387994-bentobox-2x-5015-radial-fans-hepacarbon-filter
Modifizierte 5015 Radial Version für Stepdown modul + Step files:
https://www.printables.com/de/model/338763-bentobox-2x5015-bottom-exhaust/files
Normale 5015 Lüfter:
https://www.printables.com/de/model/272525-bentobox-v20-carbon-filter-for-bambu-lab-x1c-enclo
Benötigte Hardware
5015 Radial Version
Elektronik:
- 2x 5015 Radial Fan 24v - GDSTIME oder WINSINN
- 1x 24v Netzteil und Anschlussstück: Regelbar oder Ohne Reglung
oder
- 1x 24V Trafo
- Schrumpfschlauch
Mechanik:
Komplettset bei Just Printing
oder
-16x M3x8 Innensechskantschraube
- 8x Magnete 6x3 (Durchmesser 6mm und Dicke 3mm)
- 1x 80x40x15mm HEPA filter - Amazon
- 100g Aktivkohlepeletts
5015 Normale Version
Elektronik:
- 2x 4020 Axiallüfter - Amazon
oder 2x 4028 24v Axiallüfter
Mechanik:
- 4x Einschmelzmuttern M3x5x4 - Amazon
- 4x M3x25mm Innensechskantschraube für 4020 Lüfter
oder
- 4x M3x32mm Innensechskantschraube für 4020 Lüfter
- 32x M4x2 Magnete
- 1x 40mmx80mmx15mm HEPA Filter
- Aktivkohlepelets
*alle Links sind Affiliate Links womit du kostenfrei den Channel und den Discord unterstützt - jeder Cent kommt der Community zu Gute!
Klipper/Mainsail/Moonraker
!!! WICHTIG !!! Klipper Änderung vom bed_mesh
Bei einer bevorstehenden Änderung an Klipper wird die Standardkonfiguration bed_mesh
nicht mehr automatisch beim Start geladen.
Wenn Sie heute eine bed_mesh
Konfiguration verwenden, wird empfohlen, BED_MESH_PROFILE LOAD=default
Ihrem START_PRINT-Makro (oder gleichwertigen Druckstartbefehlen in Ihrem Slicer) einen expliziten Befehl hinzuzufügen. Dieser Wechsel zu Klipper ist für den 1. Februar 2023 geplant.
Cancel print button/Funktion geht nicht
Dieses Makro in eurer mainsail.cfg tauschen und in den Settings den "cancel print button" an machen.
Makros
[gcode_macro CANCEL_PRINT]
description: Bricht den aktuellen Druck ab
rename_existing: CANCEL_PRINT_BASE
variable_park: True
gcode:
## Move head and retract only if not already in the pause state and park set to true
{% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
_TOOLHEAD_PARK_PAUSE_CANCEL
{% endif %}
TURN_OFF_HEATERS
CANCEL_PRINT_BASE
######################################################################
# Druckkop Parkbefehl
######################################################################
[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL]
description: Helper: Parkposition im PAUSE and CANCEL_PRINT
variable_extrude: 1.0
gcode:
##### set park positon for x and y #####
# default is your max posion from your printer.cfg
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
{% set z_park_delta = 2.0 %}
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - z_park_delta) %}
{% set z_safe = z_park_delta %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
{% if printer.extruder.can_extrude|lower == 'true' %}
M83
G1 E-{extrude} F2100
{% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G91
G1 Z5 F900
G90
G1 X{x_park} Y{y_park} F6000
{% if printer.gcode_move.absolute_coordinates|lower == 'false' %} G91 {% endif %}
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
Zusätzliche Makros
Druckpause
######################################################################
# Druckpause
######################################################################
[gcode_macro PAUSE]
description: Pausiert den aktiellen Druck
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 1.0
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
##### set park positon for x and y #####
# default is your max posion from your printer.cfg
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - 2.0) %}
{% set z_safe = 2.0 %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
{%set min_extrude_temp = printer.configfile.settings["extruder"]["min_extrude_temp"]|int %}
{%set act_extrude_temp = printer.extruder.temperature|int %}
##### end of definitions #####
PAUSE_BASE
G91
{% if act_extrude_temp > min_extrude_temp %}
G1 E-{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G1 Z{z_safe} F900
G90
G1 X{x_park} Y{y_park} F6000
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
End Print
#####################################
# END PRINT #
#####################################
[gcode_macro END_PRINT]
description: All what needs to be done at print end
gcode:
M117 Turn off Heaters
TURN_OFF_HEATERS ; Turn off bed and nozzle
G91 ; Relative positioning
SET_GCODE_OFFSET Z_ADJUST=+0.06
M117 Retract
G1 E-1 F3000 ; Retract
G1 X-0.5 Y-0.5 Z20 E-5 ; Move a bit and retract filament even more
G90 ; Absolute positioning
G1 X0 Y180 Z35 F2200 ; Move bed to front
M107 ; Turn off part fan
M84 ; Steppers off
G90 ; Absolute positioning
M117 Print done ; Send finish to display
Druckwiederaufnahme
######################################################################
# Druckwiederaufnahme
######################################################################
[gcode_macro RESUME]
description: Setzt den aktuellen Druck fort
rename_existing: RESUME_BASE
gcode:
##### read E from pause macro #####
{% set E = printer["gcode_macro PAUSE"].extrude|float %}
{%set min_extrude_temp = printer.configfile.settings["extruder"]["min_extrude_temp"]|int %}
{%set act_extrude_temp = printer.extruder.temperature|int %}
#### get VELOCITY parameter if specified ####
{% if 'VELOCITY' in params|upper %}
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
{%else %}
{% set get_params = "" %}
{% endif %}
##### end of definitions #####
{% if act_extrude_temp > min_extrude_temp %}
G91
G1 E{E} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
RESUME_BASE {get_params}
Der Drucker geht während des Drucks auf Pause
Häufigste Fehlerquelle:
- Filamentsensor
Lösung:
Einfach abstecken und aus der Printer.cfg aus kommentieren.
#[filament_switch_sensor runout]
#pause_on_runout: True
#switch_pin: PA5
Deutsch Übersetzung Klipper Dokumentation
Hallo, In Facebook wurde von Jörg Müller die Dokumentation super übersetzt. Wir danken Ihm vielmals dafür. Hier ist nochmal das PDF vom stand 08.06.2022
Klipper-Deutsche-Übersetzung.pdf
Drucker lässt sich nicht korrekt verbinden (ständiger Disconnect)
Drucker anstecken und dann "sudo dmesg
" idProduct Merkennano /etc/udev/rules/99-ch341.rule
SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="$gemerkte idProduct", MODE:="0666"
systemctl restart udev
Kiauh installieren
Alle wichtigen Infos und die Dokumentation von Kiauh findet ihr hier
Installation
SSH Verbindung aufbauen (Putty)
cd ~
git clone https://github.com/th33xitus/kiauh.git
./kiauh/kiauh.sh
- Ihr könnt das jeweilige Menü mit der Ziffer davon anwählen. Beispiel: Install hat die Nummer "1" -> "1 + ENTER"
- Zurück könnt ihr mit "b + ENTER"
- Kiauh schließen mit "q + ENTER"
Klipper auf ältere Version zurücksetzen
Vorher immer Backups erstellen. FTP -> klipper_config ordner sichern
Aktuelle Version des Klipper ordners anzeigen
cd ~/klipper
git show
Letzte Commits anzeigen:
git log --stat
Klipper Ordner zurücksetzten
git reset --hard <COMMIT_NUMMER>
Klipper Pin Vorzeichen


Klipper Screen
Klipper-Screen läuft nicht oder hat eine hohe Auslastung
sudo systemctl stop KlipperScreen
cd ~/KlipperScreen
git reset --hard <commit>
sudo systemctl start KlipperScreen
Die commits findest ihr unter https://github.com/jordanruthe/KlipperScreen links unterhalb des grünen Code Buttons. Dort ist eine Uhr mit Bezeichnung "commits". Dort draufklicken und dann eine Commit ID kopieren (Bearbeitet)
Pi Auslastung prüfen
- Putty verbinden
- in die Konstole "htop" eingeben
htop
Ist htop nicht installiert sudo apt-get install htop
Timelapse funktionert nach Update nicht mehr | Timelapse installieren
Prüfen ob Timelapse schon auf dem Pi ist (SSH Verbindung aufbauen)
cd ~/
git clone https://github.com/mainsail-crew/moonraker-timelapse.git
Timelapse updaten
cd ~/moonraker-timelapse
git pull
Timelapse neu installieren
cd ~/
git clone https://github.com/mainsail-crew/moonraker-timelapse.git
bash ~/moonraker-timelapse/install.sh
Bei der Fehlermeldung "fatal: destination path 'moonraker-timelapse' already exists and is not an empty directory."->die Befehle von Timelapse updaten durchführen!
Timelapse Update Manager in moonraker.conf überprüfen:
[update_manager timelapse]
type: git_repo
primary_branch: main
path: ~/moonraker-timelapse
origin: https://github.com/mainsail-crew/moonraker-timelapse.git
managed_services: klipper moonraker
Timelapse in der Moonraker.conf einfügen:
[timelapse]
Timelapse im Slicer einrichten:
Offizieller link zu der Timelapse Doku.
Superslicer / PrusaSlicer
Printer Settings -> Custom G-code -> Before layer change Gcode -> TIMELAPSE_TAKE_FRAME
Cura:
Extensions -> Post Processing -> Modify G-Code ->
Add a script -> Insert at layer change -> G-code to insert = TIMELAPSE_TAKE_FRAME
Vyper Firmware aktualisieren / installieren
SSH Verbindung aufbauen (Putty) und Firmware erstellen
cd ~/klipper
make menuconfig
Mit Q verlassen und speichern.
make clean
make
Firmware auf SD Karte packen
FTP Verbindung aufbauen (Filezilla, WinSCP) und klipper.bin downloaden Die klipper.bin liegt in /home/pi/klipper/out/klipper.bin
SD Karte formatieren
File System: FAT32
Allocation Unit Size: 4096
klipper.bin auf SD Karte schieben und in "main_board_20220909.bin" um nennen.
Der Name der .bin muss sich immer zu der vorherigen Version der Zahlenkombination am Schluss unterscheiden. alt: 20220909 -> neu: 20220910
Drucker flashen
- Drucker ausschalten
- Verbindungskabel zu Pi abziehen
- SD Karte einstecken
- Drucker einschalten
- Drucker sollte akustisches Signal geben
- nach 30 Sekunden Drucker ausschalten
- SD entfernen
- Pi wieder verbinden
Vyper flashen
- ssh zum pi
cd klipper
make menuconfig
- richtige Einstellung wählen und speichern
make clean
make
- FTP verbindung aufbauen
- klipper/out/klipper.bin auf SD Karte
- Umbenennen "main_board_20200512.bin"
(Zahlenfolge ist das Datum und muss immer unterschiedlich zum Vorgänger sein)
Webcam
Wenig FPS bei einer Webcam
-
WLAN Übertragung kann ein Problem sein -> Verbindet mal per LAN
-
Mehrere Clients greifen parallel auf die Kamera zu
-
Erhöhung der FPS in der crowsnest.conf (Neue Mainsail Version)
[cam 1] mode: mjpg # mjpg/rtsp port: 8080 # Port device: /dev/video0 # See Log for available ... resolution: 640x480 # widthxheight format max_fps: 15 # If Hardware Supports this it will be forced, ohterwise ignored/coerced.
Resolution = Auflösung -> Habt ihr bei euch eine HD Auflösung (1920x1080) eingetragen, kann es helfen diese auf 640x480 zu setzten
max_fps = Ihr könnt diese FPS mal auf 30 oder 60 hochsetzen
Ebenfalls könnt ihr auf dem Mainsail Dashboard in den Einstellungen unter Webcam Einstellungen die FPS mal höher stellen.
Kein Bild der Webcam
Prüfen ob das USB Gerät erkannt wird.
lsusb
Die Ausgabe sollte nun die Kamera anzeigen. Wenn nicht bitte prüfen, ob die Kamera generell an einem anderen Gerät funktioniert.
Videogeräte prüfen
v4l2-ctl --list-devices
crowsnest.conf prüfen
- Ist der richtige Port eingestellt
8080
- Ist das richtige Gerät eingestellt
device: /dev/video0
Die Codeblöcke
müssen meist in Putty (SSH) ausgeführt werden.
Autofocus und Autohelligkeit ausschalten
Funktionsmöglichkeiten der Kamera herausfinden:
v4l2-ctl --list-ctrls
Prüfen ob die Befehle richtig umgesetzt werden:
Dieses Beispiel zeigt die Deaktivierung des Autofokus durch das setzen des Wertes 0.
v4l2-ctl --set-ctrl=focus_auto=0
Setzt den Focus Manuell auf den eingebenden Wert. Hier ist es 20
v4l2-ctl --set-ctrl=focus_absolute=20
Schaltet die Autohelligkeit aus.
v4l2-ctl --set-ctrl=exposure_auto=0
Übertragung in Autostart:
Bearbeiten der crowsnest.conf
v4l2ctl: focus_auto=0,focus_absolute=5,exposure_auto=1,exposure_absolute=1000,zoom_absolute=100
Crowsnest Doku und Installation
Hier findest du die offizielle Doku zu Crowsnest:
https://github.com/mainsail-crew/crowsnest
Alle folgenden aufgeführten Commands sind auf dem Stand vom 14.12.2022
Wie wird crowsnest installiert:
cd ~
git clone https://github.com/mainsail-crew/crowsnest.git
cd ~/crowsnest
sudo make install
So deinstallierst du crowsnest:
cd ~/crowsnest
make uninstall
cd ~
rm -rf crowsnest/
ln -s /home/pi/klipper_logs/crowsnest.log
So updatest du crowsnest:
cd ~/crowsnest
git pull
Link Verknüpfung erstellen
cd ~/printer_data/config
ln -s /home/pi/klipper_config/crowsnest.conf
cd ~/printer_data/logs
ln -s /home/pi/klipper_logs/crowsnest.log
Wo liegt die Crowsnest Konfig:
/home/pi/klipper_config/crowsnest.conf
Hier findest du die Logdatei zu Crowsnest:
/home/pi/klipper_logs/crowsnest.log
Update Manager Eintrag in der moonraker.conf
[update_manager crowsnest]
type: git_repo
path: ~/crowsnest
origin: https://github.com/mainsail-crew/crowsnest.git
install_script: tools/install.sh
Beispiel Configuration deiner Webcam:
#### crowsnest.conf
#### This is a typical default config.
#### Also used as default in mainsail / MainsailOS
#### See:
#### https://github.com/mainsail-crew/crowsnest/blob/master/README.md
#### for details to configure to your needs.
#####################################################################
#### #####
#### Information about ports and according URL's #####
#### #####
#####################################################################
#### #####
#### Port 8080 equals /webcam/?action=[stream/snapshot] #####
#### Port 8081 equals /webcam2/?action=[stream/snapshot] #####
#### Port 8082 equals /webcam3/?action=[stream/snapshot] #####
#### Port 8083 equals /webcam4/?action=[stream/snapshot] #####
#### #####
#### Note: These ports are default for most Mainsail #####
#### installations. To use any other port would involve #####
#### changing the proxy configuration or using directly #####
#### http://<ip>:<port>/?action=[stream/snapshot] #####
#### #####
#####################################################################
#### RTSP Stream URL: ( if enabled and supported ) #####
#### rtsp://<ip>:<rtsp_port>/stream.h264 #####
#####################################################################
[crowsnest]
log_path: %LOGPATH%
log_level: verbose # Valid Options are quiet/verbose/debug
delete_log: false # Deletes log on every restart, if set to true
no_proxy: false
[cam 1]
mode: ustreamer # ustreamer - Provides mjpg and snapshots. (All devices)
# camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
enable_rtsp: false # If camera-streamer is used, this enables also usage of an rtsp server
rtsp_port: 8554 # Set different ports for each device!
port: 8080 # HTTP/MJPG Stream/Snapshot Port
device: /dev/video0 # See Log for available ...
resolution: 640x480 # widthxheight format
max_fps: 15 # If Hardware Supports this it will be forced, otherwise ignored/coerced.
#custom_flags: # You can run the Stream Services with custom flags.
#v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.
Wie findest du deine Kamera "Device":
Verbinde dich mit Putty oder einem SSH Client zu deinem Pi
Mit diesem Befehl kannst du dir alle Kamerageräte anzeigen lassen
v4l2-ctl --list-devices
Kamera in Mainsail einfügen:
Öffne das Menü über die Zahnräder oben rechts auf der Weboberfläche:
Navigiere über die Auswahlreiter zu Webcam.
Hier ist ein Beispiel meiner Konfiguration
Stream URL = Pfad zu deiner Kamera.
Für Kamera 1 ist das "/webcam/?action=stream"
Für Kamera 2 wäre es "/webcam2/?action=stream"
Snapshot URL = Pfad für einen Schnappschuss (Timelapserelevant)
Kamera 1 "/webcam/?action=snapshot"
Kamera 2 "/webcam2/?action=snapshot"
Dienst = Empfehlung "Adaptive MJPEG-STREAMER"
FPS = 30 -50
Probleme?!
Durchsuche unser FAQ nach deinem Fehler.
Wo finde ich Log Dateien
- Mainsail Dashboard öffnen
- links unter Maschine
- in der oberen Hälfte steht „configs“
- linker Mausklick öffnet Dropdown
- „Logs“ auswählen
Z-Tilt / Quad Gantry Level
Was ist Z-Tilt und Quad Gantry Level (QGL)
Wichtig: Das Druckbett sollte vorher schon parallel zum Gestell oder Boden stehen.
Konsolenausgabe
Dies ist eine Beispielausgabe des QGL:
Making the following Z adjustments:
stepper_z = 0.004953
stepper_z1 = -0.000403
stepper_z2 = -0.000520
stepper_z3 = -0.004030
Average: 7.239051
Actuator Positions:
z: 7.234097 z1: 7.239454 z2: 7.239571 z3: 7.243081
Gantry-relative probe points:
0: 7.236478 1: 7.238353 2: 7.239915 3: 7.240540
probe at 250.000,25.000 is z=7.759460
probe at 250.000,225.000 is z=7.760085
probe at 25.000,225.000 is z=7.761647
probe at 25.000,25.000 is z=7.763522
probe at 250.000,25.000 is z=7.759460
Wie Ihre sehen könnt werden als ersten die in der Konfiguration definierten Punkte angefahren und in Z-Höhe vermessen.
Making the following Z adjustments:
Es werden jetzt für die jeweiligen Motoren Änderungen der Z-Höhe vorgenommen und nochmals die Messpunkte angefahren.
Die Wiederholungen sind abhängig von den von euch definierten Toleranz in der Konfiguration in der Variable:
retry_tolerance: 0.0075
Alle Infos zu den Parametern der Konfiguration findet ihr in der Dokumentation von Klipper.
Mainsail ohne Drucker nutzen
Hallo.
Hier zeigen wir euch, wie ihr die Mainsail Oberfläche nutzen könnt, ohne dass ein Drucker aktiv laufen muss.
Dies kann euch für verschiedene Anwendungen nützlich sein.
Quellen:
- Beitrag von Meteyou auf dem Mainsail Discord
- Link zu der original Klipper Dokumentation
1. Klipper-mcu.service anlegen
1. Klipper MCU Service anlegen:
Verbindung via SSH Client zum Pi/Host herstellen
2. In das klipper Verzeichnis navigieren
cd ~/klipper/
3. Den klipper-mcu Service in das "Anwendungsstammverzeichnis kopieren
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/
4. Den klipper-mcu.service als Autostart anlegen
sudo systemctl enable klipper-mcu.service
Autostart deaktivieren:
sudo systemctl disable klipper-mcu.service
2. Microcontroller flashen
1. In das Klipper Verzeichnis navigieren
cd ~/klipper/
2. Die Klipper Firmwareerstellung öffnen
make menuconfig
3. Als Microcontroller Architektur "Linux process" wählen
4. Den Klipper service Stoppen - Firmware flashen - Klipper Service starten
sudo service klipper stop
make flash
sudo service klipper start
3. Nutzer in TTY Gruppe anlegen
Wichtig:
"pi" wird hier als Nutzername gewählt. Habt ihr einen andern Nutzernamen, müsst ihr diesen anpassen.
sudo usermod -a -G tty pi
Pi neustarten
sudo reboot
4. Printer.cfg anpassen
Ihr müsst jetzt folgenden Eintrag in eurer Printer.cfg anpassen.
Wir empfehlen hier eine seperate printer.cfg anzulegen.
Kopiert euch einfach den Inhalt eurer standard printer.cfg in eine neu erstellte "backup.printer.cfg"
[include mainsail.cfg]
[mcu]
serial: /tmp/klipper_host_mcu
[printer]
kinematics: none
max_velocity: 1
max_accel: 1
Optional:
Printer.cfg per Command wechseln
1. kiauh installieren
2. gcode shellcommander installieren
3. Config Dateien anlegen
- default-mcu.cfg -> Das ist die normal config Datei
- klipper-mcu.cfg -> Das ist die config Datei ohne Drucker
- "[include shell_command.cfg]" muss in beiden cfgs vorhanden sein
4. Macros anlegen
[gcode_shell_command load_klipper_mcu]
command: cp /home/pi/printer_data/config/klipper-mcu.cfg /home/pi/printer_data/config/printer.cfg
timeout: 2.
verbose: True
[gcode_macro LOAD_KLIPPER_MCU]
gcode:
RUN_SHELL_COMMAND CMD=load_klipper_mcu
M117 Config changed to klipper-mcu .... Restart Firmware
FIRMWARE_RESTART
[gcode_shell_command load_default_mcu]
command: cp /home/pi/printer_data/config/default-mcu.cfg /home/pi/printer_data/config/printer.cfg
timeout: 2.
verbose: True
[gcode_macro LOAD_DEFAULT_MCU]
gcode:
RUN_SHELL_COMMAND CMD=load_default_mcu
M117 Config changed to default-mcu .... Restart Firmware
FIRMWARE_RESTART