Klipper

Hier findest du viele Artikel zu Klipper, die wir erstellt haben

Klipper Einrichtung

Klipper Einrichtung

Klipper - Neopixel einrichten und nutzen

Habt Ihr Probleme bei der Einrichtung oder Benutzung euer Neopixel. Dann zeigen wir euch wie alles funktioniert.
Konfiguration in Klipper einbinden
Folgende Konfiguration müsst ihr in eure printer.cfg inkludieren oder direkt einfügen.
In der Printer.cfg :
[include ./neopixel_pin.cfg]
Benutzt den Namen der CFG, den ihr hinterlegt habt
Pin (Schnittstelle) definieren:
[neopixel sb_leds]
pin: 
Mit dem Parameter "pin" definiert Ihr die Schnittstelle zu eueren LED. Diesen müsst ihr natürlich für euer Board entsprechend rausfinden.

Für den Vyper gilt zum Beispiel: Extended Board am Toolhead -> pin: PA13
Wie viele LEDs sind vorhanden
[neopixel sb_leds]
chain_count: 3
In diesem Beispiel besteht der LED Strand aus insgesamt 3 LEDs.
Welche LEDs sind verbaut
[neopixel sb_leds]
color_order: GRBW
Hier müsst ihr schauen, was Ihr euch gekauft hat. Grundlegend gibt es zwei Typen. WS2812B = GRB und SK6812 = GRBW.
Farbe bei Hochfahren
initial_RED: 0.0
initial_GREEN: 0.0
initial_BLUE: 0.0
initial_WHITE: 0.0

Mit diesen Werten könnt ihr die Farbe nach dem Boot festlegen. Setzt dafür einfach den wer zwischen 0.0 und 1.0. In der Regel nimmt man 0.0 für aus und 1.0 für ein.
Ansteuerung
Konsolenbefehl zur Anteuerung

SET_LED LED=sb_leds RED=1 GREEN=1 BLUE=0 WHITE=0 INDEX=1 TRANSMIT=1
  • 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
In dem oben genannten Beispielt wird die LED 1 mit der Farbe Gelb angesteuert (Rot + Grün) Hier sind einige Farbbeispiele in einer Konfig. hinterlegt. (Neopixel - Farben) [include ./neopixel_farben.cfg]
Benutzt den Namen der CFG, den ihr hinterlegt habt
Statusmeldungen im Gcode
[include ./neopixel_status.cfg]
Hier könnt ihr folgende Meldungen einfach in einen Gcode eurer Wahl einbinden.

# 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 Einrichtung

Klipper zu spezifischen Druckern

Anycubic Vyper

Anycubic Vyper Modifikationen

Anycubic Vyper allgemein

Anycubic i3 Mega

Anycubic i3 Mega

Creality - Ender 3 S1/ Pro / Plus

Creality - Ender 3 S1/ Pro / Plus

Elegoo - Neptune 3

Elegoo - Neptune 3

Voron

Voron

Klipper Einrichtung

Klipper - Z-Offset richtig einstellen

hr habt den PROBE_CALIBRATE durchgeführt und nach dem ACCEPT mit einem klicken auf SAVE_CONFIG eure Config gespeichert ?
Sehr gut ... doch wie geht es nun weiter ?

Nun ist es daran, euren Z-Offset Live "On the Fly" fein zu tunen, mit den sogenannten Babysteps.
Als erstes erstellt Ihr euch im SuperSlicer eine Datei, die die Höhe eurer ersten Schicht hat. Dafür geht Ihr mit Rechtsklick auf die Baufläche im SuperSlicer und fügt eine Form (Box) hinzu.

image.png

Nun müsst Ihr die Höhe eurer ersten Schicht aus dem Slicer ermitteln.

image.png

Die folgenden Einstellungen müssen nun noch im Slicer vorgenommen werden, damit Ihr die richtigen Maße für die Form habt.
  • Als erstes Klickt Ihr auf der rechten Seite auf das Schloss. Dies sollte nun "offen" dargestellt werden.
  • Als zweites tragt Ihr die Werte (je nach Bettgröße oder bedarf) ein. Wichtig ist, das der letzte Punkt eurer ersten Schichthöhe entspricht. (in meinem Fall, 0.24mm)


    image.png

Nun kann die Datei gesliced und an den Drucker geschickt werden.
Beginnt nun mit dem Drucken und stellt den Offset Live über Mainsail ein. Dies geschieht über diese Toolbar

image.png

image.png

image.png

  • 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")
Wenn Ihr nun soweit seid, dass Ihr die für euch beste Einstellung gefunden habt, ist es sehr wichtig, dass Ihr die Config erneut abspeichert.
Geht dafür einfach über den Save Config Button oben rechts neben dem NOTAUS, oder schreibt SAVE_CONFIG in die Konsole und bestätigt mit Enter.
Die Firmware macht nun einen Neustart.
Klipper Einrichtung

Klipper - Kiauh installieren

Hier ist unsere Anleitung zur Installation von kiauh

Klipper Einrichtung

Klipper - Deutsche Übersetzung


Klipper Einrichtung

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.

image.png

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:

Vom Slicer werden die Parameter BED und EXTRUDER dem Start_Print Makro zur Verfügung gestellt.

Beispiel aus Gcode:

image.png

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:

  1. Ein Objekt slicen und Gcode Exportieren
  2. Gcode mit einem Editor öffnen
  3. Mit der Sucher (STRG+F) nach eurem Start_Print Startcode suchen
  4. Prüfen ob für Extruder und Bed auch eine Temperatur eingetragen wurde
Beispiel Codeausschnitt

image.png

Klipper Einrichtung

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.


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)


Einrichtung FW Retract im Slicer:

SuperSlicer

fw_retract_SuperSlicer.png

PrusaSlicer

fw_retract_PrusaSlicer.png

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.

printer_settings_addon_cura.png

Orca Slicer

fw_retract_OrcaSlicer.png


GCODE Kontrolle ob FW retract geschrieben wurde


GCODE slicen und exportieren. Danach mit einem Editor öffnen und nach G10 oder G10 suchen

fw_retract_kontrolle.png

fw_deretract_kontrolle.png


Retract über die Mainsail Oberfläche einstellen:

Ihr könnt jetzt den Retract im "Extruder" Menü einstellen. 

Hier ein Beispiel:


fw_retract_kontrolle mainsail.png


Filamentabhängiger Retract


1. Slicer für die Weitergabe der Variable einrichten

Richtiger Filamenttyp im Slicer setzten

grafik.png

Wie sieht jetzt die Variable aus?

grafik.png

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

So soll es aussehen

grafik.png

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)

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
Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)

Internal Error on Command: SDCAR_PRINT_FILE

Lösung: Keine Sonderzeichen im GCODE Namen
Sprich ä,ö,ü oder spezielle Symbole.
Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)

Move exceeds maximum extrusion

Diese Fehlermeldung tritt meist beim Extrudieren von Filament auf. Standardmäßig ist eine Maximale Länge von 50mm einstellt. Wenn ihr jetzt mehr fördern wollt, kann diese Meldung auftreten.

Lösung:
In der printer.cfg den Wert max_extrude_cross_section: anpassen.

[extruder]
max_extrude_cross_section: 60.0
Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)

Printer is not ready

Verbindung mit Putty aufbauen

ls /dev/serial/by-id
Beispiel Ausgabe : "usb-1a86_USB_Serial-if00-port0"
Diesen Port in eurer Printer.cfg eingragen

Beispiel:

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command

Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)

Unknown Command M486

Hier die Lösung für den oben beschrieben Fehler

Unknown_Command_M486.jpg

Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)

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.

image.png

Wie kann ich jetzt die moonraker.conf bearbeiten?!
1. Möglichkeit: FTP Client -> Über FTP Client (Filezilla, WinSCP) home/pi/klipper_config/moonraker.conf per Drag&Drop auf den Pc und bearbeiten. Danach wieder per Drag&Drop hochlanden
2. Möglichkeit: Putty
cd klipper_config ; nano moonraker.conf ; STRG+X ; Y -> Enter

Welche Fehler sind zu beheben:

[server] anpassen

[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

Angepasste moonraker.conf

Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)

Unknown command:"DEFINE_OBJECT"

Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)

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:


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.

Fehlermeldungen - Problembehebung - FAQ (Häufig gestellte Fragen)

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:
sudo nano /boot/config.txt
dtoverlay=vc4-fkms-v3d

Achtet auf das "f" bei fkms. Das kann in manch einer Konfig fehlen

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

2. Eintrag in der Xwrapper.config einfügen
3. Calibration Matrix setzten
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
4. Wenn die vorherigen Einträge nicht geholfen haben, probiere noch das
sudo nano /usr/share/X11/xorg.conf.d/40-libinput.conf
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 - 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?!



1. Slicer für die Weitergabe der Variable einrichten

Richtiger Filamenttyp im Slicer setzten

grafik.png

Wie sieht jetzt die Variable aus?

grafik.png


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

So soll es aussehen

grafik.png


4. Abfrage in euerem Makro hinterlegen

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
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:

  1. Legt einen Ordner "druck" an.
  2. Lege eine cfg an "startcode.cfg"
  3. inkludiere die Datei in der printer.cfg mit 
    [include ./druck/startcode.cfg]
  4. Start die FW neu

Bei Fragen schaut gerne auf unserem Discord vorbei:

button.png

Youtube - Dokumente zu den Videos

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
  1. Raspberry Pi Imager download + installieren
  2. OS auswählen: "Löschen" auswählen
  3. SD Karte wählen -> Klicky eure Karte an
  4. 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
  1. Raspberry Pi Imager download + installieren
  2. OS auswählen:
    • Betriebssystem "OS wählen"
    • "Other specific-purpose" OS
    • 3D printing
    • Mainsais OS -> 32bit
  3. SD Karte wählen -> Wählt eure SD Karte aus
  4. 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


Raspbian OS als Betriebssystem:

Möglichkeit 2: Raspbian OS + Klipper (empfohlen)
  1. Raspberry Pi Imager download + installieren
  2. OS auswählen:
    1. Betriebssystem "OS wählen"
    2. Raspberry Pi OS (other)
    3. Raspberry Pi OS Lite (32bit)
  3. SD Karte wählen -> Klicky eure Karte an
  4. 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
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

Navigation in Kiauh

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:

 2 Mooraker:

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.


Vyper

Vyper_klipper.jpg

Neptune 3

Neptune_Firmware.png

Kingroon KP3S

KP3S_Firmware.png

Voron BTT Octopus

voron firmware.png



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
  1. Schalte den Drucker + Pi aus
  2. Ziehe das Verbindungskabel zum Pi ab
  3. Warte 10 Sekunden
  4. Stecke die SD Karte ein
  5. Schalte den Drucker ein
  6. Warte 30 Sekunden (Je nach Druckermodell gibts hier Töne)
  7. Schalte den Drucker aus
  8. Entferne die SD Karte (Beim Voron bleibt diese im Board drin)
  9. Verbinde den Drucker über das Verbindungskabel mit dem Pi
  10. 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:

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 - Dokumente zu den Videos

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

  1. Ein Drucker mit der Klipper Firmware
  2. Natürlich einen Pi der mit dem Drucker erfolgreich verbunden ist
  3. Ein Android Smartphone oder Tablet
  4. 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.

grafik.png

 

XSERVER Manuell über apk installieren (Für ältere Geräte)

https://sourceforge.net/projects/libsdl-android/files/apk/XServer-XSDL/XServer-XSDL-1.11.40.apk/download

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:

Wo findet ihr die IP-Adresse eures Android Gerätes

grafik.png

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 - Dokumente zu den Videos

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:

NEU: Kalibrierungsmakro 3.0

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

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

image.png


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

image.png

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:

m.png

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)

KIAUH Menü

image.png

Wähle 8 (G-Code Shell Command)

KIAUH Menü

image.png

Bestätige mit Y

KIAUH Menü

image.png

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:

    1. Calibrate (beinhaltet den Verweis auf euer Start- und Endmakro)
    2. PA Makro (beinhaltet die Kalibrierung des Pressure Advance)
    3. 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.)

image.png


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:

image.png

PRESSURE ADVANCE

Folgende Werte können vor dem Start abgeändert werden (Hinterlegt sind die default Werte):

image.png

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.

pa_calibration.png

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:

pa_calibration_band_count.png

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):

image.png

flow_calibration.png

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

Anleitung und Auswertung

BELT SHAPER

Anleitung und Auswertung

VIBRATION

Anleitung und Auswertung

Youtube - Dokumente zu den Videos

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

http://gphoto.org/doc/remote/

Ö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
Screenshot

image.png

oder

image.png

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

image.png

Mit diesem Kommando wird das Image auf den Raspberry Pi übertragen.

gphoto2 --auto-detect --capture-image-and-download
Speicherort

 Der Snapshot wird unter /home/pi abgelegt.

image.png

Prüfe die möglichen Speicherorte deiner Kamera:

gphoto2 --get-config capturetarget
Putty Fenster

image.png

Ä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)

KIAUH Menü

image.png

Wähle 8 (G-Code Shell Command)

KIAUH Menü

image.png

Bestätige mit Y

KIAUH Menü

image.png

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 

image.png

Mainsail Oberfläche

image.png

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

image.png

6. Makros einstellen und testen

Passe die Werte im Makro TAKE_SNAPSHOT nach deinen Bedürfnissen an

TAKE_SNAPSHOT

image.png


Es sollten unter der Makro Sektion neue Makros sichtbar sein

image.png

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.

Youtube - Dokumente zu den Videos

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.


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)


Einrichtung FW Retract im Slicer:

SuperSlicer

fw_retract_SuperSlicer.png

PrusaSlicer

fw_retract_PrusaSlicer.png

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.

printer_settings_addon_cura.png

Orca Slicer

fw_retract_OrcaSlicer.png


GCODE Kontrolle ob FW retract geschrieben wurde


GCODE slicen und exportieren. Danach mit einem Editor öffnen und nach G10 oder G11 suchen

fw_retract_kontrolle.png

fw_deretract_kontrolle.png


Retract über die Mainsail Oberfläche einstellen:

Ihr könnt jetzt den Retract im "Extruder" Menü einstellen. 

Hier ein Beispiel:


fw_retract_kontrolle mainsail.png


Filamentabhängiger Retract


1. Slicer für die Weitergabe der Variable einrichten

Richtiger Filamenttyp im Slicer setzten

grafik.png

Wie sieht jetzt die Variable aus?

grafik.png

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

So soll es aussehen

grafik.png

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 - Dokumente zu den Videos

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>
Screenshots

image.png

image.png

image.png

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

image.png

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:

image.png

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:

image.png

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/*

image.png

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.

image.png

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 - Dokumente zu den Videos

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.

308a90ac702b6e251512a270bbf36cb4ff5419b7.png
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

Link: https://raw.githubusercontent.com/Piezoid/klipper/work-peraxis/klippy/kinematics/limited_cartesian.py

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 auf limited_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 auf false 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 - Dokumente zu den Videos

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
"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 - Dokumente zu den Videos

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
=================

20230729_092059.jpg                              20230729_092047.jpg

 

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 - Dokumente zu den Videos

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

  1. County Name: DE
  2. State: Mainsail
  3. Locality Name: Mainsail
  4. Organisation: Mainsail
  5. Oraganizational UNit Name: Mainsail
  6. Common name: Mainsail
  7. 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

Orca Slicer Beispiel

Vor die IP gehört jetzt ein https://

image.png

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
  1. Ö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!

image.png

image.png

4. Passwortschutz Moonraker vorbereiten

Füge folgendes in deiner moonraker.conf ein

[authorizations]
force_logins: true
5. Geschützes Login Fenster

image.png

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 - Dokumente zu den Videos

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

image.png

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
Bild nach der Installation

image.png

Bild nach "docker run hello-word"

image.png

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
  )}
Beispiel Spoolman auf der Weboberfläche

image.png

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 - Dokumente zu den Videos

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.

image.png

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.

image.png

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.

image.png

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
  1. 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.

image.png

Führe danach

devices

aus.

 Es wird euch nun der Nevermore Kontroller angezeigt. Kopiert euch nun die Bluetooth ID.

image.png

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:

image.png

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.

image.png

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!

Schaltplan

1000038656.jpg

image.png

Firmware

image.png

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 - Dokumente zu den Videos

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

image.png

Modifizierte 5015 Radial Version für Stepdown modul + Step files:
https://www.printables.com/de/model/338763-bentobox-2x5015-bottom-exhaust/files

image.png

Normale 5015 Lüfter:
https://www.printables.com/de/model/272525-bentobox-v20-carbon-filter-for-bambu-lab-x1c-enclo

image.png

 

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 

Klipper/Mainsail/Moonraker

Klipper/Mainsail/Moonraker

!!! WICHTIG !!! Klipper Änderung vom bed_mesh

Bei einer bevorstehenden Änderung an Klipper wird die Standardkonfiguration bed_meshnicht mehr automatisch beim Start geladen. 

Wenn Sie heute eine bed_meshKonfiguration verwenden, wird empfohlen, BED_MESH_PROFILE LOAD=defaultIhrem 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.

button (1).png

Klipper/Mainsail/Moonraker

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 %}

image.png

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}
Klipper/Mainsail/Moonraker

Der Drucker geht während des Drucks auf Pause

Häufigste Fehlerquelle:

Lösung:

Einfach abstecken und aus der Printer.cfg aus kommentieren.

#[filament_switch_sensor runout]
#pause_on_runout: True
#switch_pin: PA5

Klipper/Mainsail/Moonraker

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

Klipper/Mainsail/Moonraker

Drucker lässt sich nicht korrekt verbinden (ständiger Disconnect)

Drucker anstecken und dann "sudo dmesg" idProduct Merken

nano /etc/udev/rules/99-ch341.rule
SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="$gemerkte idProduct", MODE:="0666"
systemctl restart udev

Klipper/Mainsail/Moonraker

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

Navigation in Kiauh

Klipper/Mainsail/Moonraker

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/Mainsail/Moonraker

Klipper Pin Vorzeichen

pin: PA1
pin: !PA1 (negiert)
pin: ^PA1 (pullup)
pin: ~PA1 (pulldown)

Allgemein
Ein Pullup- oder Pulldown-Widerstand wird dazu verwendet, einen Eingang auf einen definierten Wert zu "ziehen". Normalerweise befindet sich der Eingang im Zustand "schwebend/hochohmig", welcher sich irgendwo zwischen High und Low befindet. Nun sind Schaltungen leider nicht komplett ohne Störsignale, und durch Einstrahlungen von Signalen kann es nun passieren, dass kurzzeitig mal ein Wert über- oder unterschritten wird und der Eingang plötzlich ein High- oder Lowsignal bekommt. Dies führt dann zu unerklärlichen und unregelmäßig auftretenden Fehlern, die einen Neuling zur Verzweiflung treiben können.

Pullup-Widerstand
Um dies zu vermeiden wird, während nichts am Eingang passiert, dieser auf High gezogen (pullup). Will man also einen Taster haben, der Low schaltet, so will man für den Rest der Zeit High am Eingang liegen haben. Dies kann man erreichen, indem man den Eingang fest mit VCC verbindet. Vom Eingang geht nun eine Leitung nach VCC und eine über den Taster nach GND. Leider würde dies zu einem Kurzschluss führen sobald man den Taster drückt und die Schaltung könnte (und würde höchstwahrscheinlich) Schaden nehmen. Deshalb wird nun zwischen VCC und dem Eingang ein hochohmiger Widerstand eingesetzt, der Pullup-Widerstand. Bei geschlossenem Taster wird nun der Strom über den Pullup-Widerstand nach GND fließen und der Input liegt auf GND (0V).


Pulldown-Widerstand
Der Pulldown-Widerstand funktioniert analog zum Pullup-Widerstand, nur dass nun VCC geschaltet werden soll und somit der Eingang auf GND gezogen werden muss. Dies geschieht in gleicher Weise wie beim Pullup, nur dass der Pulldown-Widerstand nun zwischen GND und dem Eingang platziert wird. Schließt man nun wieder den Taster, liegt am Eingang Vcc an --> High.

Klipper/Mainsail/Moonraker

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)


Klipper/Mainsail/Moonraker

Pi Auslastung prüfen

htop

Ist htop nicht installiert sudo apt-get install htop

Klipper/Mainsail/Moonraker

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

image.png


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:

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

Klipper/Mainsail/Moonraker

Vyper Firmware aktualisieren / installieren

SSH Verbindung aufbauen (Putty) und Firmware erstellen

cd ~/klipper
make menuconfig

image.png

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

Klipper/Mainsail/Moonraker

Vyper flashen

  1. ssh zum pi
  2. cd klipper
  3. make menuconfig
  4. richtige Einstellung wählen und speichern
    Vyper_klipper.jpg
  5. make clean
  6. make
  7. FTP verbindung aufbauen
  8. klipper/out/klipper.bin auf SD Karte
  9. Umbenennen "main_board_20200512.bin"
    (Zahlenfolge ist das Datum und muss immer unterschiedlich zum Vorgänger sein)

Klipper/Mainsail/Moonraker

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



    image.png

Ebenfalls könnt ihr auf dem Mainsail Dashboard in den Einstellungen unter Webcam Einstellungen die FPS mal höher stellen.

image.png


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.

image.png

Videogeräte prüfen

v4l2-ctl --list-devices

image.png

crowsnest.conf prüfen

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 

image.png

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
RTSP Cam in ioBroker + MotionEye einbinden

image.png

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

 


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   

crowsnest_1_videodevice.jpg

 


 

Kamera in Mainsail einfügen:


Öffne das Menü über die Zahnräder oben rechts auf der Weboberfläche:

image.png

Navigiere über die Auswahlreiter zu Webcam.

Hier ist ein Beispiel meiner Konfiguration

 


 

image.png

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.

 

Klipper/Mainsail/Moonraker

Wo finde ich Log Dateien

image.png

Klipper/Mainsail/Moonraker

Z-Tilt / Quad Gantry Level

Was ist Z-Tilt und Quad Gantry Level (QGL)

Erklärung
Hier zeige ich euch kurz, was genau die oben genannten Kommandos machen und was der Zweck davon ist.
Kurz gesagt gleicht das Z-Tilt (Für 2 Z-Motoren) und das Quad Gantry Level (4 Motoren) doe Lage der "Gantry" oder auch X Führung des Druckkopfes aus.
Es werden meist die äußeren Punkte des Druckbettes angefahren und so die Achse parallel zum Bett gestellt.

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.

Klipper Dokumentation

Klipper/Mainsail/Moonraker

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