Netzwerkfähiger 3D-Drucker in 10 Schritten

In diesem Post wird beschrieben, wie man den Ultimaker netzwerkfähig machen kann. Zudem soll eine Webcam installiert werden. In unserem Fall werden wir über Wlan mit dem Printserver kommunizieren. Wir verwenden dazu die Software Octoprint, die von Gina Häußge entwickelt wird. Vielen Dank!

Material bereitstellen

  • Raspberry Pi Version 2011.12 aufgesetzt mit Raspian (SD-Karte)
  • USB-Hub
  • Beliebiger Monitor (mit HDMI-Eingang)
  • Beliebige Maus
  • HDMI-Kabel
  • USB-Kabel (Typ A zu Typ B)
  • Micro Wlan USB-Adapter
  • Beliebige Web-Cam (USB)

Ultimaker Upgrade

Damit der Rasp mit dem Drucker kommunizieren kann, muss eine Custom-Firmware auf den Ultimaker geladen werden.

  1. Ultimaker per USB mit Laptop verbinden
  2. Cura starten
  3. Unter Expert – Run First Run Wizard… den First Rund Wizard starten
  4. Dreimal „Next“ drücken
  5. Button „Goto this page for a custom firmware“ drücken
  1. Einstellungen vornehmen:
  • Unter Software Basic die Baudrate auf 115200 stellen
  • Unter Hardware-Addons die rot eingerahmten Checkboxen anwählen
  1. Button „Build Marlin!“ drücken

  2. Datei als Zip herunterladen und entpacken (zoberst auf der Seite zum Download bereit)

  3. Batch „upload.bat“ ausführen (Achtung: Drucker muss über USB angeschlossen sein) Achtung: COMPort muss angegeben werden
    (Systemsteuerung-Gerätemanager-Anschlüsse(COM & LTP)-Arduino)
    Beispiel: „COM10“

  4. Die Firmware wird aktualisiert

Raspberry starten

Monitor über HDMI mit Raspberry verbinden. Maus, Tastatur, Drucker und Webcam über USB an Hub anschliessen. Hub über USB an Raspberry anschliessen. Wlan-Adapter über USB an Rasp anschliessen. SD-Karte mit Raspian einstecken. USB-Hub an Strom anschliessen.

Der Raspberry startet, sobald er genug Strom bekommt.

Raspberry Basic-Konfigurationen

  1. Raspi-config
  • configure_keyboard wählen
  • Einigermassen passendes Modell wählen
  • Im nächsten Schritt „Other“ wählen
  • Danach Schritte befolgen:
  • „German(Switzerland)“
  • Noch einmal „German(Switzerland)“
  • „The default for the keyboard layout“
  • „No compose key“
  • „No“
  • „Finish“
  1. Wenn nötig einloggen mit Default Login:
    Username: pi und Passwort:
raspberry
  1. GUI starten mit Befehl:
startx
  1. Mit WLAN verbinden:
  • WiFi Conig starten
  • Scan (WLAN muss vorhanden sein)
  • Doppelklick auf richtiges WLAN
  • Pre-Shared-Key eingeben, Save
  • Connect
  • Logout
  1. Updaten: (Das kann einen Moment dauern)
sudo apt-get update
sudo apt-get upgrade
  1. Den Vim-Editor mit folgendem Kommando installieren:
sudo apt-get install vim
  1. Root-Passwort neu setzen:
sudo passwd
  1. Rasp über Konsole neu starten mit Befehl:
sudo init 6

Octaserver konfigurieren starten

  1. Nach einloggen diese Befehle nacheinander (Zeile für Zeile) ausführen
cd
sudo apt-get install python-pip git
git clone https://github.com/foosel/OctoPrint.git
cd Octoprint
sudo pip install -r requirements.txt
  1. Mit Befehl Octoserver starten:
./run
  1. Mit Tastatur-Kombination Octoserver beenden:
    Ctrl+C

Webcam einrichten

  1. Befehle nacheinander ausführen:
cd
sudo apt-get install subversion libjpeg8-dev imagemagick libav-tools
wget -Omjpg-streamer.tar.gz http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer/mjpg-streamer/?view=tar  
tar xfz mjpg-streamer.tar.gz
cd mjpg-streamer
make
  1. Webcam-Server starten:
    Mit Befehl:
./mjpg_streamer -i „./input_uvc.so“ -o „./output_http.so“ 
  1. Testen:
    Im Browser folgendes eingeben: http://<your Raspi’s IP>:8080/?action=stream
    Alle 5 Sekunden sollte ein Bild der Webcam angezeigt werden
    Webcam beenden mit Tastenkombination Ctrl+C

  2. config.yaml anpassen:

cd
cd .octoprint
vim config.yaml

Zeilen einfügen oder anpassen:

webcam:
stream: /webcam/?action=stream
snapshot: http://127.0.0.1:8080/?action=snapshot
ffmpeg: /usr/bin/avconv

vim:
Insert-Mode mit „i“
Speichern und schliessen: ESC dann „:wq“

  1. Testen mit Octoprint:
  • OctoPrint-Server starten (siehe Punkt 4)
  • Mit Ctrl+Alt+F2 auf zweite Konsole wechseln
  • Sich mit dem Default-User einloggen
  • Webcam-Server starten (siehe Punkt 6)
  • URL: http://<your Raspi’s IP>:5000 aufrufen
  • Unter dem neuen Register Webcam sollte eine Live-Abbildung vorhanden sein

Alles über Port 80 laufen lassen

  1. HaProxy installieren
sudo apt-get install haproxy
  1. /etc/haproxy/haproxy.cfg anpassen
    Konfiguration wie folgt übernehmen:
global
maxconn 4096
user haproxy
group haproxy
daemon
log 127.0.0.1 local0 debug
defaults
log     global
mode    http
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
use_backend webcam if { path_beg /webcam/ }
default_backend octoprint

backend octoprint
reqrep ^([^ :]*) /octoprint/(.*)     1 /2
server octoprint1 127.0.0.1:5000

backend webcam
reqrep ^([^ :]*) /webcam/(.*)     1 /2
server webcam1  127.0.0.1:8080
  1. /etc/default/haproxy anpassen
    ENABLE auf 1 setzen

  2. /.octoprint/config.yaml anpassen
    Option einfügen

server:
host: 127.0.0.1
  1. HA-Proxy starten
sudo service haproxy start
  1. Testen
    Octo-Server neu starten
    Im Browser nur IP vom Raspberry eingeben -> Web-Gui sollte erscheinen

Shutdown und Reboot über Web-Gui

  1. Sudo-Rule erstellen
sudo -s
cat > /etc/sudoers.d/octoprint-shutdown

eingeben:

pi ALL=NOPASSWD: /sbin/shutdown

Eingabe mit Ctrl+D beenden

  1. Skript berechtigen
cd /etc/sudoers.d
chmod 744 octoprint-shutdown
exit
  1. Config-File „config.yaml“ anpassen
cd .octoprint
vim config.yaml

folgende Zeilen einfügen oder anpassen:

system:
actions:
name: Shutdown
command: sudo shutdown -h now
action: shutdown
confirm: You are about to shutdown the system.
name: Reboot
command: sudo shutdown -r now
action: reboot
confirm: You are about to reboot the system

Octoprint und Webcamserver neu starten und testen (Neben Settings sollte ein Menu „System“ erscheinen)

Automatischer Start

  1. Skript erstellen
sudo -s
mkdir bin
cd bin
vim octoprint

Folgendes einfügen:

#!/bin/sh
OCTOPRINT_HOME=/home/pi/OctoPrint
MJPEG_STREAMER_HOME=/home/pi/mjpg-streamer

# start mjpeg streamer
$MJPEG_STREAMER_HOME/mjpg_streamer -i "$MJPEG_STREAMER_HOME/input_uvc.so -r SXGA -f 15" -o "$MJPEG_STREAMER_HOME/output_http.so" &

# start the webui
$OCTOPRINT_HOME/run
  1. Skript ausführbar machen
chmod +x /home/pi/bin/octoprint
  1. /etc/rc.local bearbeiten
    Folgende Zeile vor dem exit0 einfügen:
sudo -u pi /home/pi/bin/octoprint

Das Ganze sollte jetzt beim Raspberry-Start automatisch gestartet werden

Webgui zugreifen und Druckauftrag starten

Mit der IP vom Raspberry kann jetzt über einen Browser auf das Webgui zugegriffen werden.

Beispiel: 192.168.1.35
Mit der Funktion „Upload“ kann jetzt ein gcode-File hochgeladen werden. Um es für den Druck vorzubereiten, muss noch auf das Ordner-Symbol gedrückt werden. Mit dem Befehl „Print“ kann jetzt das Modell gedruckt werden. Optional: Fixe IP für Rasp vergeben

Optional eine fixe IP konfigurieren mit dem Befehl

sudo nano /etc/network/interfaces:

anstatt
iface eth0 inet dhcp neu eintragen (Adressen nach Netzwerk anpassen):

iface eth0 inet static  
address 192.168.1.99  
netmask 255.255.255.0  
network 192.168.1.0  
broadcast 192.168.1.255  
gateway 192.168.1.1