Leapfrog Administration

Der aus dem Keller wiederbelebte 3D-Drucker ist ein Leapfrog Creatr von 2014. Dieses Modell hat bekannte Kinderkrankheiten, von denen einige beim Nachfolger Creatr HS ausgebügelt wurden. Wie weit wir mit dem Original und eventuell Modifikationen kommen, wird sich zeigen.

Motherboard

Auf der Seite von Leapfrog gibt es eine Übersicht über die Anschlüsse des Motherboards:

Frosch-Icon

Zahnriemen

  • Die Zähne der Original-Zahnriemen haben einen Abstand von 3.0 mm → DIN 7721-2, Teilung AT3
  • AT3 ist recht selten. Ersatz ist im Prinzip erhältlich bei Keiper oder Continental Synchroflex bei Zahnriemen24.de
  • Üblich ist die Teilung GT2. Endlose Riemen gibts bei roboterbausatz.de . Geschlossene Riemen verkauft robotdigg
  • Bei Thingiverse gibt es einen Riemen-Spicer

OctoPi

OctoPi ist Octoprint auf einem RaspberryPi3

  1. Zip auspacken: unzip octopi-*.zip
  2. Das Ziel-Device erkunden: lsblk
  3. Image auf SD-Karte schreiben (eventuell if und of anpassen):

sudo dd if=octopi-0.18.0-1.8.6-20221018093204.img of=/dev/sdg bs=64k oflag=dsync status=progress sync umount /dev/sdg1 umount /dev/sdg2

Erster SSH-Login:

  • User: pi
  • PW: raspberry
  • PW von pi mit passwd geändert und im passwordstore auf dc1 abggelegt → 3dprinter/leapfrog/pi

System lokalisieren

sudo raspi-config

→ Localisation → Locales → de_DE.UTF-8 und en_UK.UTF-8 → Localisation → Keyboard → Generic 105 key (intl) → German (no dead keys) → Localisation → Timezone → Europe → Berlin

sudo für pi

In /etc/sudoers.d/010_pi-nopasswd die Einstellung für den user pi entkommentieren sudo chmod u+w /etc/sudoers.d/010_pi-nopasswd sudo vi /etc/sudoers.d/010_pi-nopasswd sudo chmod u-w /etc/sudoers.d/010_pi-nopasswd

apt in Gang bringen

sudo apt update sudo apt upgrade

Ein-zwei Kommandozeilenwerkzeuge

sudo apt install vim
sudo apt install locale
sudo updatedb

WWW-Browser-Login

  • User: octoadmin
  • PW: im passwordstore auf DC1 abgelegt
  • In OctoPrint Settings (Maulschlüssel-Icon) einen API-Key für den User octoadmin erzeugen mit dem application identifier “octoprint”
  • Ein lokaler User als Ausweichlösung, wenn LDAP nicht funktional ist:
    • User: iqo
    • PW: im passwordstore auf dc1

Kamera

Logitech C922 wird von Octopi unmittelbar erkannt und benutzt, stellt aber auf irgendwas scharf.

Plusonic PSH36 lässt sich auf eine feste Entfernung einstellen, ist aber ansonsten ziemlich lausig.

Also doch die Logitech-Kamera und im Plugin auf eine feste Brennweite und geeignete Belichtung konfigurieren. Die Parameter als Default beim Neustart laden lassen. Die Linse der Logitechkamera vibriert gerne mit, wenn der Drucker beim Drucken wackelt. Das ergibt durch die zeilenweise Auslesung kräftige Wellen im Bild. Mit der Fokussierung ganz im vorderen Anschlag wird das erheblich weniger. → Mit externer Lesebrille den Fokus auf die Mitte des Druckbetts verschieben.

Plugins

Settings → Plugin_Manager → Get_more oder https://plugins.octoprint.org/

installiert

  • OctoPrint-LDAP → nicht im offiziellen Plugin-Repo, aber trotzdem funktional
  • Auth LDAP → Login mit Institutscredentials
  • Bed Leveling Plugin → Ergänzt Knöpfe, mit denen man alle Ecken und die Mitte des Druckbereichs anfahren kann.
    • Die Koordinaten der Eckpunkte müssen im Plugin konfiguriert werden. Für den Aufbau von Januar 2023:
      • vorne-links: 5 / 5
      • vorne-rechts: 210 / 5
      • hinten-rechts: 180 / 230
      • hinten-links: 5 / 260
      • Mitte: 100 / 120
  • Camera Settings → Kamera-Parameter einstellen
  • Classic Webcam → Kompatibilität mit der “alten” Webcam-Technik
  • Cura Thumbnails → Vorschaubilder von Jobs, die mit Cura erstellt wurden
  • Dashboard → Eine Zusammenfassung im UI
  • DeleteMoveAfterPrint → Löscht automatisch den Gcode nach n Tagen
  • DisplayLayerProgress → Zeigt an verschiedenen Stellen die aktuelle Lagen-Lage an. → In den Einstellungen “Show_printer_display_on_desktop” deaktivieren, denn das bewirkt ein nerviges Mini-Fenster.
  • DisplayZ → Höhe der Z-Achse anzeigen während der Drucker druckt
  • HeaderAnnouncements → Ansagen für alle oben im Web-Interface
  • OctoApp → Automatisches Login mit der Android-App OctoApp
  • OctoDash Companion → Unterstützung für ein lokales Touch-Display
  • Preheat Button → Ein Knopf zum Vorheizenm auf die im Gcode eingetragenen Temperaturen
  • PrintTimeGenius → genauere Schätzung der verbleibenden Druckzeit
  • Slicer Thumbnails → Vorschaubilder, die mit PrusaSlicer oder SuperSlicer erstellt wurden
  • UI Customizer → Deutlich besseres Browser-UI auf Smartphones. Und auch auf dem Desktop ist das UI ein Stück angenehmer.

Auf jeden Fall ausprobieren

  • Arc Welder → Macht aus Polygonzügen echte Bogen-Befehle im Gcode
  • ☐ DryRun → Probelauf ohne Extrusion und Grundplattenheizung
  • ☐ Simple Emergency Stop

Klingt interessant

  • OctoBuddy → common printer actions to be performed with physical buttons via GPIO
  • OctoPrint Micro Panel → Simple control and status paired with a physical button panel and OLED display
  • USB keyboard → Octoprint mit Tastatur steuern
  • AutoLogout
  • OctoPrint-BetterHeaterTimeout → Turns off heaters after specified time being on and unused
  • ShutdownPrinter → Drucker am Ende des Jobs herunterfahren
  • M300_Player → Piept im Web-Interface, wenn fertig
  • OctoPrint-Display-ETA → Zeigt die vorhergesagte Fertig-Zeit an. (Ist das im Default nicht enthalten?)
  • OctoPrint-Hardwarepwm → Damit die Lüfter angepasst laufen lassen?
  • OctoPrint-InfluxDB → Logging auf log(?)
  • OctoPrint-Thingiverse
  • OctoPrint-TranslateModel → A plugin to move models around without re-slicing.
  • Preheat Button → Automatically preheat to the printing temperature of the current gcode file
  • Printer Statistics und/oder PrintJobHistory
  • Procastinator → Erst zu einer bestimmten Zeit drucken
  • Stateful Sidebar → Stellt die Sidebar beim nächsten Login in den alten Zustand
  • TemperatureLegendMover → Legende für den Temperatur an eine nettere Stelle verschieben
  • ChangeFilament → Unterstützt den Filament-Wechsel

Lokales Touch-Screen mit Octodash

Octodash bringt ein Octoprint-UI für ein kleines Touch-Screen, das direkt am RaspberryPi hängt. Anzeige: Das offizielle 7”-Display von Raspberry mit zugehörigem Gehäuse.

cd /tmp
wget -qO- https://github.com/UnchartedBull/OctoDash/raw/main/scripts/install.sh > install_octodash.sh
chmod u+x install_octodash.sh
sudo ./install_octodash.sh
  • Im Web-Interface von Octoprint einen API-Key für Octodash erzeugen.
  • In Octoprint in der Konfig für das API die Funktion CORS erlauben.
  • Beim ersten Start von Octodash keine der angebotenen URLs nehmen, sondern manuell http://127.0.0.1:5000 eingeben.
  • API-Key manuell eintragen.

Hakeleien beim Einrichten:

  • In zusammengeschraubtem Zustand passen Raspi und Display nicht ins Gehäuse. Lösung: Vor Ort, im Gehäuse zusammen schrauben.
  • Mit Display brach die Versorgungsspannung ein. Lösung: Eine eigene Versorgung des Displays mit einem eigenen USB-Kabel.
  • Das Display stand auf dem Kopf. Lösung: In /boot/config.txt die Zeile “lcd_rotate=2” einfügen.
  • Die GUI-Knöpfe für vor-zurück waren vertauscht. Lösung: In den Einstellungen des Octodash-GUI lassen sich die Achsen invertieren.
  • ☑ Eine Halterung, die das Display in angenehmer Höhe bereit hält.

Slicer

Cura

In Debian

Cura ist in Debian nur in ziemlich alter Version 4.13 enthalten (aktuelle Debian-Lage): sudo apt install cura

  • Auf github gibt es ein Octoprint-Plugin für Cura. Das Plugin muss nach /usr/lib/cura/plugins kopiert werden.
  • Der Leapfrog Creatr kommt im Menü nicht vor. Aber man kann ihn mit diesen Parametern als “Custom FFF Printer” einbinden.
  • In den Preferences des FFF-Printers → Connect_OctoPrint
    • Eine Zeile für den Leapfrog erzeugen
    • Click auf “request” bei API-Key → Nach Login in OctoPi wird der oben erzeugte API-Key übertragen
    • Eventuell: edit → Port_Number: 443
    • Eventuell: Show_reverse_proxy_options → Haken bei “Use_HTTPS”, “user name” und “password” freilassen
    • close → Wenn der Drucker läuft, sollte er automatisch erkannt werden.
  • Im “Marketplace” gibt es ein Plugin, mit dem FreeCAD-Modelle importiert werden können (müssen die Endung ‘.fcstd’ haben)

Cura selber bauen

Cura als Appimage

Prusa Slicer

Ist ganz normal in Debian enthalten.

Empfehlenswerte Einstellungen in Prusa-Slicer

  • Das Project Notebook von Bob George erzählt, wie die diversen Konfigurationen zusammenarbeiten
  • Vorschau-Bild in Octoprint: Anleitung im Prusa-Forum
  • Avoid crossing perimeters
  • Druckobjekt automatisch zentrieren: Configuration → Preferences → General → Auto_center_parts
  • Automatisches Slicing im Hintergrund: Configuration → Preferences → General → Background_Processing
  • Einstellungen in einem eigenen Fenster: Configuration → Preferences → GUI → Layout_Options = Settings_in_non_modal_window
  • Weniger raumgreifende Icons: Configuration → Preferences → GUI → use_custom_sized_icons ankreuzen. Dann Toolbar_icon_size = 60%
  • Travel und Retractions im Vorschaubild anzeigen lassen → Option unten im Vorschaubild

Settings

  • Settings-Level: “advanced” oder “expert”
  • Layers and Parameters → Quality → Avoid_crossing_perimerters = true
  • Skirt and Brim → Skirt → Loops = 3
  • Skirt and Brim → Skirt → Minimal_filament_extrusion_length = 50 mm
  • Skirt and Brim → Brim → Brim_type = Outer_brim_only
  • Output_options → Output_filename_format = KaiMartin_[input_filename_base].gcode (Offizielle Liste der möglichen Variablen: https://help.prusa3d.com/de/article/liste-der-platzhalter-variablen_205643 )
  • Notes → Spezialitäten des jeweiligen Einstellungs-Satz

Mit Octoprint verbandeln

Noch Anschauen:

  • Configuration Snapshots

Firmware

Auf dem Leapfrog läuft Marlin V1 Version-String (mit M115): FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:2

G-Code

Katalog der Marlin-Befehle: https://marlinfw.org/meta/gcode/

  • Zieltemperatur des Extruders auf 200°C einstellen: M104 S200
  • Zieltemperatur des Betts auf 60°C einstellen: M140 S60

PID einstellen

Alte Heizer-Werte (ausgelesen mit M301): p:6.80 i:0.24 d:48.15 c:0.13

Alte Bett-Werte (ausgelesen mit M304): → Nix. Da gibt es wohl keinen PID :-|

Autotune für 200 °C starten: M303 E0 S200 Parameter U und C scheinen in der Firmware des Leapfrog nicht aktiv zu sein. Es werden zwei PID-Parameter-Sätze empfohlen. Davon ist der zweite etwas schneller am Ziel.

Mit neuem Mk8-Hotend, 50W-Heizer, Silikonkleid, 60 mm-Lüfter, 200 °C
→ M301 P17.71 I1.29 D60.95

Mit neuem Mk8-Hotend, 40W-Heizer, Silikonkleid, 60 mm-Lüfter, 200 °C → M301 P16.10 I0.85 D76.25 Januar 2023: → M301 P18.4 I1.24 D69.97 Juni 2023: → M301 P13.29 I0.79 D56.19

Ins EPROM schreiben, ist in der Firmware nicht aktiviert. Also in Octoprint als Script vor jedem Druckjob eintragen: Octoprint_Settings → GCODE_Scripts → Before print job starts

Nach dem Druck den Kopf wegfahren

Cura schickt den Druckkopf am Ende vom Druck an den xy-Ursprung, bei gleich gelassener z-Koordinate. Der Ursprung liegt in der linken, unteren, vorderen Ecke des Druck-Volumens. Dadurch steht der Kopf für die Entnahme des fertigen Objekts etwas im Weg. Mit diesem kleinen Gcode-Script in Octoprint fährt der Kopf in die obere, linke Ecke des Bauvolumens (Octoprint_Settings → Printer → GCODE_Scripts → After print job completes)

; stop heating the bed
M140 S0
; stop heating the nozzle
M104 S0
; absolute  coordinates
G90
; move to home (front-left-top)
G28 X0 Y0 F1500

Nicht zu viel und nicht zu wenig

Von Haus aus schiebt der Leapfrog systematisch etwas zuviel Filament aus der Düse. Das überflüssige Volumen fällt besonders bei Formen mit 100% Füllung auf. Aber auch andere Drucke können dadurch Probleme bekommen. Am Boden gibt es “Elefantenfüße” und beim Dach rührt die Düse in der letzten Lage. Man könnte denken, dass eine Anpassung des Filament-Durchmessers bei den Drucker-Eigenschaften in Cura zu einer korrekten extrudierten Menge führt. Dieser Parameter hat allerdings (zumindest beim Leapfrog) keinen Einfluss auf die Druckqualität. Stattdessen kann man in den Einstellungen von Cura den “Flow” um einen Prozentsatz anpassen. Der Test-Würfel sieht bei 100% Füllung mit 85% am besten aus. Cura → Print_Settings → Material → Flow → 85%

Lochdurchmesser

Kleinere, senkrechte Löcher werden systematisch mit zu kleinem Durchmesser gedruckt. Der Grund ist, dass der extrudierte Kunststofffaden bei engen Kurven nicht ganz der Düse folgt. Er wird immer ein wenig nach innen gezogen. Dadurch wird das Loch kleiner als der Weg der Düse. Ein Loch im Testwürfel, das mit 3mm Durchmesser geplant war, schrumpfte auf diese Weise zu 2.6 mm Durchmesser. Cura → Print_Settings → Shell → Hole_Horizontal_Expansion → 0.4 mm

Geometrische Kalibrierung

Zertifikate einbauen

auf afs1 als root

Den Schlüssel, das Maschinen-Zertifikat und das LUH-Zertifikat in eine gemeinsame pem-Datei bündeln: cd /root/certs/leapfrog.iqo.uni-hannover.de cat leapfrog.iqo.uni-hannover.de.crt.pem /etc/ssl/luh_ca_chain.crt.pem leapfrog.iqo.uni-hannover.de.key.pem >leapfrog.iqo.uni-hannover.de.pem dos2unix leapfrog.iqo.uni-hannover.de.pem scp leapfrog.iqo.uni-hannover.de.pem pi@leapfrog.iqo.uni-hannover.de:/tmp

auf leapfrog als pi

Die pem-Datei an eine passende Stelle bugsieren und haproxy unterschieben: sudo mv /tmp/leapfrog.iqo.uni-hannover.de.pem /etc/ssl/ sudo chown root: /etc/ssl/leapfrog.iqo.uni-hannover.de.pem sudo chmod 600 /etc/ssl/leapfrog.iqo.uni-hannover.de.pem

In /etc/haproxy/haproxy.cfg die Zeile, wo vorher das snakeoil Zertifikat referenziert war, wie folgt ändern: bind :::443 v4v6 ssl crt /etc/ssl/leapfrog.iqo.uni-hannover.de.pem

Um HTTP auf HTTPS umzubiegen außerdem diese Zeile einfügen: ( https://www.haproxy.com/blog/redirect-http-to-https-with-haproxy/ ) http-request redirect scheme https code 301 unless { ssl_fc }

Ergebnis:

global
        maxconn 4096
        user haproxy
        group haproxy
        log /dev/log local1 debug
        tune.ssl.default-dh-param 2048
 
defaults
        log     global
        mode    http
        compression algo gzip
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        option http-server-close
        option forwardfor
        maxconn 2000
        timeout connect 5s
        timeout client  15min
        timeout server  15min
 
frontend public
        bind :::80 v4v6
        bind :::443 v4v6 ssl crt /etc/ssl/leapfrog.iqo.uni-hannover.de.pem
    http-request redirect scheme https code 301 unless { ssl_fc }
        option forwardfor except 127.0.0.1
        redirect scheme https if !{ hdr(Host) -i 127.0.0.1 } !{ ssl_fc }
        use_backend webcam if { path_beg /webcam/ }
        use_backend webcam_hls if { path_beg /hls/ }
        use_backend webcam_hls if { path_beg /jpeg/ }
        default_backend octoprint
 
backend octoprint
        acl needs_scheme req.hdr_cnt(X-Scheme) eq 0
 
        reqrep ^([^\ :]*)\ /(.*) \1\ /\2
        reqadd X-Scheme:\ https if needs_scheme { ssl_fc }
        reqadd X-Scheme:\ http if needs_scheme !{ ssl_fc }
        option forwardfor
        server octoprint1 127.0.0.1:5000
        errorfile 503 /etc/haproxy/errors/503-no-octoprint.http
 
backend webcam
        reqrep ^([^\ :]*)\ /webcam/(.*)     \1\ /\2
        server webcam1  127.0.0.1:8080
        errorfile 503 /etc/haproxy/errors/503-no-webcam.http
 
backend webcam_hls
        server webcam_hls_1 127.0.0.1:28126
        errorfile 503 /etc/haproxy/errors/503-no-webcam-hls.http

LDAP in Gang bringen

Das Plugin Octoprint-LDAP ist nicht im offiziellen Katalog enthalten. Download unter: https://github.com/gillg/OctoPrint-LDAP

Es braucht ein paar Extra-Abhängigkeiten: sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev

Defektes Plugin

Nach Upgrade von Octoprint scheiterte das LDAP-Plugin und zieht die User-Verwaltung mit herunter.

https://github.com/geneb/OctoPrint-Delta-Calibration/issues/1

Eine gepatchte Version konnte von der Kommandozeile aus installiert werden: sudo /home/pi/oprint/bin/pip install https://github.com/gillg/OctoPrint-LDAP/archive/refs/heads/master.zip

Empfehlenswerte Einstellungen

Cura

Plugins

  • “FreeCAD integration” / “Inventor integration” / “Solid Works integration”: Je nach bevorzugtem CAD-System
  • “OctoPrint Connection”: Um direkt von Cura aus den Octoprint auf leapfrog.iqo.uni-hannover.de ansprechen zu können
  • “Printjob naming”: Ein eigener Präfix für die Gcode-Datei

Einstellung in Cura: Extensions → Custom_Printjob_Naming → Set_name_options Der Default ist Prefix={printer_type}, der sich übersetzt in “CFFFP_”.
Empfehlung: Prefix=NAME, wobei NAME durch den eigenen Vornamen ersetzt wird. Dann ist im Web-Interface erkennbar, zu wem der jeweilige Job gehört.

  • “Settings Guide”: Ausführliche Beschreibung der diversen Optionen

Slicer-Optionen

  • Material / Printing_Temperature: 205 °C
  • Material / Printing_Initial_Layer: 215 °C
  • Material / Build_Plate_Temperature: 60 °C
  • Material / Build_Plate_Initial_Temperature: 70 °C
  • Speed / Print_Speed: 40 mm/s
  • Speed / Enable_Acceleration_Control: yes
  • Speed / Print_Acceleration: 1000 mm/s²
  • Speed / Enable_Jerk_Control: yes
  • Speed / Print_Jerk: 10 mm/s

Thingiverse und Multiverse

Youtube-Helden

Besondere Drucker

Tolle Antriebe

reddit-Disk über Alternativen zu odrive

  • moteus → 600 USD für ein Developer-Kit mit Motor
  • odrive → 200 € pro Driver. Leider nicht mehr wirklich Open Source
  • tinymovr → 200 USD für ein Developer-Kit mit Motor
  • simplefoc → Servomotor mit Arduino
  • spin-servo-drive → superfrisch. Ziele: 50 USD pro Motor. Servomotor für Klipper. Nutzt statt Schaltplan die Spezialprogrammiersprache atopile

Filamente

Höhere Temperatur

Es gibt Filamente, die sich “normal” drucken lassen, die aber erst bei höherer Temperatur weich werden.

  • GreenTec Pro → “temperaturbeständig bis 160 °C”. Etwa 60 €/kg
  • 3dktop → muss bei 110 °C getempered werden. Danach “hitzebeständig bis 230 °C”. Etwa 90 €/kg

Öko

Wie nachhaltig ist PLA Filament wirklich?

Filament-Trockner

Fertigkauf

Eigenbau

  • Tipp von richrap.blogspot: Ein einstellbarer Heizer, der normalerweise für Reptilien gedacht ist.

Trocken-Lagerung

Betthaftung

Upgrade-Schmerzen

Upgrade auf 1.9.3 und ein paar Plugins

Problem mit UI Customizer to 0.1.9.9: “The update did not finish successfully. Please consult octoprint.log and plugin_softwareupdate_console.log for details.”

Backup

Clone the SD card

A clone of the SD card provides the most comprehensive backup possible.

Instructions on howto clone raspberry pi are available in this blog.

Octoprint-Configuration

Octoprint can save its configuration in a file. This makes a restore from scratch a little less painful. The saved file includes the list of plugins and their parameters. Howto use the backup facility in the octoprint documentation.

List of available configurations:

Automatic Backup

The tool raspiBackup provides a means to automatically save a backup of the current Raspberry Pi install at regular intervals. The backup gets saved at a network attached storage location. Backups can be full or incremental.