Skip to end of metadata
Go to start of metadata

Jeder, der schon mal einen 3D-Drucker bedient hat, kennt das Spielchen: entweder der 3D-Drucker hängt über ein USB-Kabel direkt am Arbeitsplatz-Rechner und lärmt einen für Stunden beim Arbeiten am Rechner zu, oder der 3D-Drucker wird über SD-Karten mit neuen Druckdateien befüttert und steht in einem anderen Raum, in dem er niemanden nerven kann.

Eine tolle Alternative bietet da OctoPrint. OctoPrint ist eine opensource Fernsteuerungs-Software, mit Hilfe derer man einen Linux-Rechner dazu verwenden kann, den 3D-Drucker aus der Ferne bedienen zu können. Als Schmankerl besteht auch noch die Möglichkeit, sich über ein Live-Kamerabild ein Bild von der Realität im Druckraum zu machen.

 

Hardware

Als Linux-Rechner reicht bereits ein RaspberryPi (meine Empfehlung ab RaspberryPi 2) aus, um den Drucker problemlos mit Daten zu versorgen. Dieser benötigt natürlich Netzzugang, entweder über WLAN oder LAN drahtgebunden, die neueren RaspberryPi-Modelle (3) haben bereits onboard WLAN und können dieses dafür verwenden.

Wenn man ein Livebild haben will, kann man entweder aus einer Vielzahl von USB-Webcams auswählen, oder man nimmt einfach ein RaspberryPi-Kamera-Modul (RaspiCam).


Delta-Printer mit montiertem RaspberryPi und Kamera-Modul

Software

Hier geht es zum download: OctoPrint - The snappy web interface for your 3D printer

Für den RasberryPi ist OctoPi der richtige Download, dort bekommt ihr ein fertiges Image, dass ihr nur auf SD-Karte schreiben müsst und schon könnt ihr mit der Konfiguration loslegen. Vorteil bei diesem Image ist auch, dass es schon viele Erweiterungen und PlugIns mitbringt, z.B. für ein RaspberryPi-Display und auch STL-Dateien kann das integrierte Cura-PlugIn zu GCode slicen.

OctoPi lässt sich gut den eigenen Bedürfnissen anpassen und erweitern. 

Grundfunktionalitäten

Bedient wird OctoPrint über eine Weboberfläche, also im Browser Deines Rechners oder Smartphones. 

Hier können Druck-Dateien hochgeladen und verwaltet werden. Man erhält eine grafische Ansicht des geslicten Modells (GCode), Anzeige von Temperaturverläufen. Man hat ein GCode-Terminal, in dem auch manuell mal einen GCode absetzen kann. Der Druckkopf kann manuell über ein Control-Panel verfahren werden. Bei installiertem Kameramodul hat man sowohl ein Live-Bild integriert, als auch einen extra Reiter für Zeitraffer-Aufnahmen. Somit ist es z.B. möglich, für jede neue Z-Schicht des Druck-Modells ein Einzelbild anfertigen zu lassen und OctoPrint generiert am Schluss ein fertiges Filmchen, bei dem man das Druckobjekt gleichmäßig wachsen sieht.

Meine Modifikationen

Filamentwechsel

Da ich bei meinem Delta-Drucker einen 90cm-bowden-Schlauch habe und die Marlin-Firmware meines Druckers den Extruder nur sehr eingeschränkt und langsam manuell bedienen lässt, musste ich bisher beim Filamentwechsel immer mit einem kleinen Handrädchen die 90cm Filament von der Nozzle zum Extruder zurückkurbeln. Diese Prozedur war sehr mühsam und langwierig. Daher wollte ich diesen Prozess vereinfachen und habe durch zwei Erweiterungen im OctoPrint-Steuermenü den Wechsel vereinfacht.

Mithilfe dieser zwei Erweiterungen kann ich nun per click das Filament automatisch auswerfen lassen und per weiterem click ein neu angesetztes Filament automatisch einziehen lassen - ohne Gekurbel etc.!

Die zwei Erweiterungen habe ich wie folgt gestrickt:

Im controls-Bereich der config.yaml kommen folgende Einträge hinzu:

- commands:
- M117 F-RETRACT...
- G28
- M109 S210.000000
- G91
- G1 E15 F50
- G4 P1000
- G1 E-930 F3000
- G90
- M104 S180.000000
- M18
- M117 done...
name: Filament wechseln
- commands:
- M117 F-FEED...
- G28
- M109 S210.000000
- G91
- G1 E930 F3000
- G90
- M104 S0.000000
- M18
- M117 done...
name: Filament einziehen

Bei "Filament wechseln" fährt der Druckkopf als erstes in die home-Position, dann erhitzt sich die Nozzle auf 210° C, danach wird 1,5 cm Filament aus der Nozzle gedrückt (damit der Rückzug nicht hakt), 1 Sekunde gewartet und schlussendlich werden dann 93 cm Filament zügig zurückgezogen. Danach wird die Nozzle-Temperatur auf 180° C reduziert.

Bei "Filament einziehen" fährt der Druckkopf als erstes in die home-Position, dann wird die Nozzle auf 210° C aufgeheizt, dann werden 93 cm zügig eingezogen.

Fertig (smile)

Druckerstromzufuhr fernsteuern

Um über OctoPrint auch die Stromzufuhr aus der Ferne an- und abschalten zu können, habe ich eine kleine Relais-Box realisiert. Über diese kann das Netzteil des Druckers vom Strom getrennt werden. 

Die Relais-Box wird über zwei Python-Scripte angesteuert und hängt beim RaspberryPi am GPIO-Port (an den PINs: +5V, GND, GPIO23)

 

Die beiden Python-Scripte werden wie folgt eingebunden:

enable-power:

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
# to use Raspberry Pi board pin numbers
GPIO.setmode(GPIO.BOARD)
# set up GPIO output channel
GPIO.setup(16, GPIO.OUT)
# set RPi board pin 16 high
GPIO.output(16, GPIO.HIGH)

disable-power:

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
# to use Raspberry Pi board pin numbers
GPIO.setmode(GPIO.BOARD)
# set up GPIO output channel
GPIO.setup(16, GPIO.OUT)
# set RPi board pin 16 low
GPIO.output(16, GPIO.LOW)

Im system-Bereich der config.yaml kommen folgende Einträge hinzu:

- action: poweron
command: /home/pi/scripts/enable-power
confirm: 3D-Drucker wirklich anschalten?
name: Enable Printer Power
- action: poweroff
command: /home/pi/scripts/disable-power
confirm: 3D-Drucker wirklich abschalten?
name: Disable Printer Power

Automatisches Abschalten am Ende eines Druckjobs

Des weiteren habe ich im Event-Bereich der config.yaml konfiguriert, dass OctoPrint nach dem Beenden eines Druckjobs automatisch den Drucker abschaltet.

Dies geschieht mit folgendem Eintrag:

Im event-Bereich der config.yaml kommt folgender Eintrag hinzu:

- command: /home/pi/scripts/disable-power
event: PrintDone
type: system

 

Notifications

Da ich meinen 3D-Drucker in meinem separatem "HottiLab" stehen habe und ich aber trotzdem zeitnah mitbekommen möchte, wenn ein Druck fertig ist, habe ich meine OctoPrint-Installation um MQTT-Funktionalität erweitert. 

So kann ich, egal wo ich bin (Netzwerk vorausgesetzt) immer meinen selbst gebauten notifyMe-Stecker in eine Steckdose im Blickfeld stecken und sobald es eine Statusänderung am 3D-Drucker gibt, werde ich sofort optisch darüber informiert. Jeder Status hat seine eigene Farbe, z.B. grün = Druck ist fertig. 

 

 

 

 

____________________________________________________________________________________________________________________________

Zugriff und Fernsteuerung von OctoPrint übers Internet:

dazu habe ich kaum nutzbare Tutorials gefunden! In Ergänzung zur mangelhaften Anleitung von OctoPrint selbst hier ein grober Überblick zu den Arbeitsschritten bei Fritz Box oder ähnlichen Routern:

>im Browser "fritz.box" eingeben, einloggen (ist anderes Kennwort als das WLAN Kennwort ;- )

>auf fritz.box in der Liste der verbundenen Geräte nachschauen: hat mein octopi eine vierstellige IP Zahlenreihe oder eine sechsstellige (IPv4 oder IPv6)?
z.B. 192.186.723.163 = vierstellig

Bei IPv4 (vierstelliger IP):
>gehe auf www.spdyn.de (oder ähnlichen Service) und lege einen Dynamic-DNS-Service an. Er soll deinen Zugriff vom Internet über deine fritz.box auf deinen OctoPi weiterleiten (z.B. Adresse anlegen "FabiansOctoPrint.spDNS.de" die man dann später vom Internet aus aufruft).

>In fritz.box einloggen und dort einen "Port aufmachen" oder "Port weiterleiten", selbständige Freigabe, komplette Freigabe (exposed host).
Eintrag: Port 80 (kann auch verschieden sein je nach Konfiguration)

 

____________________________________________________________________________________________________________________________

 

 

 

 

 

 

 

 

 

3 Comments

  1. Cool!

    Wir wollten das auch im Fablab (z.B. am X400) installieren, die Untätigkeit in letzter Zeit hab ich zu verantworten, sorry (sad)

    Anyway: Es gibt auch noch die Möglichkeit mit dem Raspi einige Funksteckdosen zu schalten. Näheres hier:

    Projekt Fernüberwachung 3D-Drucker

     

     

     

  2. Octoprint ist Super. Habe mir das kürzlich ebenfalls eingerichtet. und würde es gern mit der Druckerstromzufuhr fernsteuerung erweitern! heinrich gibt es noch eine detailliertere Anleitung ? - z.b. wie verkabeln und wie Python Script einfügen und ausführen?
  3. ...oder internetfähige Steckdose kaufen, ca. 40€...