Ein Kraken macht Druck

Nach dem ich mir letztes Jahr einen Creality3D CR-10 3D-Drucker zugelegt habe, soll dieser heute einen Octoprint Druckserver bekommen, natürlich mit einem eigenen Display, damit man nicht ständig den PC anwerfen muß, um mal wieder ein „Benchi“ zu Vorführungszwecken zu drucken.

Als Hardware-Komponenten habe ich mir folgende Teile zusammen gesucht.

  • Raspberry 3B+
  • Waveshare 5 Inch Display
  • 16 GB MircoSD (oder größer)
  • Gehäuse von Thingverse
  • Schrauben und Kleinteile

 

Das Waveshare 5″ Display hatte sich bei anderen Projekten schon als sehr brauchbares Touchdisplay erwiesen.

Als erstes muss die OctoPrint OctoPi-Druckserver Software herunter geladen werden. Das Installationspaket kann auf der Projekt-Website heruntergeladen werden. Ich beziehe mich in der Anleitung hier auf die Version 0.17.0. Ein kurze Anleitung, wie man das Image auf die Speicherkarte bekommt, findest Du auch auf der Projekt-Website.

So bin ich vorgegangen.

Im Download-Verzeichnis liegt die Datei octopi-buster-lite-0.17.0.zip. Die Datei wird ausgepackt und man bekommt die Image-Datei2019-09-26-octopi-buster-lite-0.17.0.img. Diese Image-Datei wird mit einem entsprechenden Tool auf die MicroSD-Karte geschrieben.

Jetzt kann die eigentliche Konfiguration des OctoPrint Server (OctoPi) beginnen.

Bevor die MicroSD-Karte im Raspberry verbaut wird, müssen noch zwei Dateien bearbeitet werden. Das geht einfacher auf dem PC/Mac.

Als erstes ist die config.txt an der Reihe.

Die Datei sollte wie folgt aussehen:

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# uncomment if you get no picture on HDMI for a default "safe" mode


#hdmi_safe=1


# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan


#disable_overscan=1


# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border

#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16




# uncomment to force a console size. By default it will be display's size minus
# overscan.

#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output

#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)

#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes

#hdmi_drive=2




# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display

#config_hdmi_boost=4


# uncomment for composite PAL
#sdtv_mode=2


#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800


# Uncomment some or all of these to enable the optional hardware interfaces


#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on


# Uncomment this to enable infrared communication.


#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18


# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on




[pi4]

# Enable DRM VC4 V3D driver on top of the dispmanx display stack

dtoverlay=vc4-fkms-v3d
max_framebuffers=2




[all]

#dtoverlay=vc4-fkms-v3d
# enable raspicam

start_x=1
gpu_mem=128


Die grün markierten Zeilen/Bereiche müssen jetzt wie folgt angepasst werden (orange):

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border

overscan_left=16
overscan_right=16
overscan_top=16
overscan_bottom=16


# uncomment to force a specific HDMI mode (this will force VGA)

#hdmi_group=1
#hdmi_mode=1

hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes

#hdmi_drive=2
hdmi_drive=1


[pi4]

# Enable DRM VC4 V3D driver on top of the dispmanx display stack

# dtoverlay=vc4-fkms-v3d
max_framebuffers=2





Jetzt muß noch die Datei octopi-wpa-supplicant.txt bearbeitet werden. Sie enthält die Informationen für den WLAN Zugriff. Wenn Du den Raspberry Pi über Netzwerkarte ans Netz anbinden willst, muss die Datei nicht geändert werden.

# Use this file to configure your wifi connection(s).
#
# Just uncomment the lines prefixed with a single # of the configuration
# that matches your wifi setup and fill in SSID and passphrase.
#
# You can configure multiple wifi connections by adding more 'network'
# blocks.
#
# See https://linux.die.net/man/5/wpa_supplicant.conf
# (or 'man -s 5 wpa_supplicant.conf') for advanced options going beyond
# the examples provided below (e.g. various WPA Enterprise setups).
#
# !!!!! HEADS-UP WINDOWS USERS !!!!!
#
# Do not use Wordpad for editing this file, it will mangle it and your
# configuration won't work. Use a proper text editor instead.
# Recommended: Notepad++, VSCode, Atom, SublimeText.
#
# !!!!! HEADS-UP MACOSX USERS !!!!!
#
# If you use Textedit to edit this file make sure to use "plain text format"
# and "disable smart quotes" in "Textedit > Preferences", otherwise Textedit
# will use none-compatible characters and your network configuration won't
# work!


# WPA/WPA2 secured
#network={
#  ssid="put SSID here"
#  psk="put password here"
#}


## Open/unsecured
#network={
#  ssid="put SSID here"
#  key_mgmt=NONE
#}


## WEP "secured"
##
## WEP can be cracked within minutes. If your network is still relying on this
## encryption scheme you should seriously consider to update your network ASAP.

#network={
#  ssid="put SSID here"
#  key_mgmt=NONE
#  wep_key0="put password here"
#  wep_tx_keyidx=0
#}




# Uncomment the country your Pi is in to activate Wifi in RaspberryPi 3 B+ and
# above. For full list see: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

country=GB # United Kingdom
#country=CA # Canada
#country=DE # Germany
#country=FR # France
#country=US # United States



### You should not have to change the lines below #####################

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

Die grün markierten Bereiche müssen wie folgt angepaßt werden:

# WPA/WPA2 secured
network={
  ssid="Mein WLAN SSID"
  psk="MeinPa$$wort"
}

# Uncomment the country your Pi is in to activate Wifi in RaspberryPi 3 B+ and
# above. For full list see: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

#country=GB # United Kingdom
#country=CA # Canada
country=DE  # Germany
#country=FR # France
#country=US # United States

Nach dem Speichern kannst Du die SD-Karte in den Raspberry stecken und starten. Auf dem Bildschirm sollte ein normaler RaspBerry-Bootvorgang zu sehen sein. Am Ende sollte auch eine IP-Adresse angezeigt werden, unter der der PI zu erreichen ist.

Sollte hier nichts zusehen sein oder keine IP-Adresse zu sehen sein, musst Du die Konfigurationsdateien noch einmal prüfen. Achte darauf das alle notwendigen # gelöscht sind.

Jetzt melden wir uns mit Putty auf der angezeigten IP-Adresse an.

Der Benutzer ist: pi
Das Passwort ist: raspberry

Um eventuellen Problemen aus dem Weg zu gehen, bringen wir den PI auf aktuellen Stand.

sudo apt-get update
sudo apt-get upgrade 

Nach dem Update-Vorgang sollte ein

sudo reboot

ausgeführt werden. Jetzt ist der Raspberry auf aktuellem Stand.

Jetzt müssen wir erst einmal aus dem Raspberry Pi einen OctoPi machen. Wir wechseln auf einen Webbrowser und geben die IP-Adresse oder den URL: „https://octopi.local“ ein.

Setup Wizard

Es wird ein Setup Wizard angezeigt. Führe ihn durch und schon haben wir einen OctoPi (fast)fertig.

Als nächstes wird ein Update angezeigt. Dieses muss ebenfalls installiert werden.

Der OctoPi Server startet sich neu. Nach der Anmeldung muss jetzt noch ein Addon geladen werden. Klicke dazu auf den Schraubenschlüssel im Menü. 

Scroll unter PLUGINMANAGER ganz nach unten und klick auf MEHR und

Addon

suche das Plugin TouchUI und installiere es.

 

 

 

 

 

 

 

Im Anschluss sollte ein Neustart des Printserver durchgeführt werden.

Jetzt wechseln wieder mit dem Putty anmelden und folgende Installation durchführen.

git clone https://github.com/BillyBlaze/OctoPrint-TouchUI-autostart.git ~/TouchUI-autostart/

sudo ~/TouchUI-autostart/helpers/install

Das Installations-Script führt jetzt eine XServer installation durch.

Außer das man vielleicht Usernamen und ein Passwort eingeben muss, ist die Installation recht einfach und unspektakulär. Wichtig ist, das Script NICHT zu unterbrechen, Putty zu schließen oder ähnliches.

Am Ende muss der Octoprint-Server neugestartet werden. Auf dem Display sollte eine Web-Oberfläche angezeigt werden.

Wenn man jetzt noch Maus und Tastatur am OctoPi angeschlossen hat, kann man theoretisch die ersten Druckaufträge an den Druckserver schicken.

3D-Drucker über USB anschließen und es kann losgehen.

Aber wir wollen den OctoPi ja über Touch(UI) benutzen. Also muss der Touchtreiber von Waveshare installiert werden.

Als erstes führen wir über Putty ein

sudo reboot

durch.

Nach dem reboot, melde Dich mit Putty an und führe folgende Befehle aus.

git clone https://github.com/waveshare/LCD-show.git
cd LCD-show/
chmod +x LCD5-show
./LCD5-show 

Nach der Installation der Treiber wir ein Reboot durchgeführt.

Jetzt ist der Druckserver einsatzbereit.

Die Installation und die Einrichtung hat ca. 30 Minuten gedauert.

Jetzt kann ich nur noch viel Spaß mit dem OctoPi wünschen.

 

 

 

 

 

 

 

 

 

Eine feste IP für den Raspberry Pi

Die aktuelle Raspbian Jessie bzw. Jessie Lite Version verfügt wie Windows über einen DHCP Client Daemon (DHCPCD), der mit DHCP-Servern von Routern kommunizieren kann. Über die Konfigurationsdatei des DHCP Client Daemons lässt sich die private IP-Adresse des Raspberry Pi einstellen und langfristig festlegen. Im Folgenden geben wir dem Raspberry Pi eine feste IPv4-Adresse mit 32 Bit (nicht zu verwechseln mit einer IPv6-Adresse, die über 128 Bit verfügt).

Bevor Du mit der Einrichtung einer statischen privaten IP-Adresse für den Raspberry Pi beginnst, prüfe zunächst über den folgenden Befehl, ob DHCPCD bereits aktiviert ist:

sudo service dhcpcd status

Sollte der Dienst nicht aktiviert sein, kannst Du dieses wie folgt nachholen:

sudo service dhcpcd start
sudo systemctl enable dhcpcd

Nun stelle sicher, dass die Konfiguration der Datei /etc/network/interfaces den Auslieferungsstatus besitzt. Hierfür muss bei den Schnittstellen die Konfiguration „iface“ auf „manual“ stehen. Die Datei sollte so oder so ähnlich aussehen:

#   interfaces(5) file used by ifup(8) and ifdown(8)

#   Please note that this file is written to be used with dhcpcd
#   For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

#   Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual


#   onboard wlan Raspberry Pi 3 or USB adapter

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


#   additonal USB wlan adapter

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Nun musst Du die Konfigurationsdatei des DHCPCDs mit folgendem Befehl bearbeiten:

sudo nano /etc/dhcpcd.conf

Nun erfolgt die Konfiguration der festen IP-Adresse. Wenn Dein Raspberry Pi via Ethernet/Netzwerkkabel mit dem Internet verbunden ist, bearbeite den Eintrag mit „interface eth0“; sollte dies über WLAN geschehen, nutze hingegen den Befehl „interface wlan0“.

Für die Zuweisung einer IP-Adresse an den Raspberry Pi verwende den Eintrag „static ip_address=“, gefolgt von der gewünschten IPv4-Adresse und dem Zusatz „/24“ (eine Abkürzung der Subnetzmaske 255.255.255.0). Wenn Du Deinen Raspberry Pi beispielsweise mit der IPv4-Adresse 192.168.115.41 verknüpfen möchtest, muss das Kommando „static ip_address=192.168.115.41/24“ lauten. Dabei ist selbstverständlich zu beachten, dass die verwendete Adresse noch nicht anderweitig genutzt wird. Genauso wenig darf sie sich im Adresspool eines DHCP-Servers befinden.

Anschließend musst Du noch die Adresse Deines Gateways und Domain-Name-Servers festlegen (für gewöhnlich ist beides der Router). An die Gateway-Adresse wendet sich der Raspberry Pi, wenn eine IP-Adresse, an die er etwas senden will, außerhalb der Subnetzmaske liegt (im Beispiel also außerhalb des Bereichs 192.168.115.xxx). Im nachstehenden Beispiel wird für Gateway und DNS-Server exemplarisch die IPv4-Adresse 192.168.115.1 verwendet.

#   Static IP configuration for eth0
interface eth0
static ip_address=192.168.115.41/24
static routers=192.168.115.1
static domain_name_servers=192.168.115.1

Um einem WLAN-Adapter eine feste IP zuzuweisen muss die Konfiguration wie folgt aussehen. Im Beispiel verwende ich die IP 192.168.115.42 für das Interface wlan0:

#   Static IP configuration for wlan0
interface wlan0
static ip_address=192.168.115.42/24
static routers=192.168.115.1
static domain_name_servers=192.168.115.1

Die komplette Konfiguration mit festen IPs für Netzwerkkarte und WLAN-Adapter könnte dann so aussehen:

#   Use the hardware address of the interface for the Client ID.
clientid
#   or
#   Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# duid 

#   Persist interface configuration when dhcpcd exits.
persistent

#   Rapid commit support.
#   Safe to enable by default because it requires the equivalent option set
#   on the server to actually work.
option rapid_commit

#   A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes

#   Most distributions have NTP support.
option ntp_servers
#   Respect the network MTU.
#   Some interface drivers reset when changing the MTU so disabled by default.
# option interface_mtu

#   A ServerID is required by RFC2131.
require dhcp_server_identifier

#   Generate Stable Private IPv6 Addresses instead of hardware based ones
slaac private

#   A hook script is provided to lookup the hostname if not set by the DHCP
#   server, but it should not be run by default.
nohook lookup-hostname

#   Static IP configuration for eth0
interface eth0
static ip_address=192.168.115.41/24
static routers=192.168.115.1
static domain_name_servers=192.168.115.1

#   Static IP configuration for wlan0
interface wlan0
static ip_address=192.168.115.42/24
static routers=192.168.115.1
static domain_name_servers=192.168.115.1

#   Static IP configuration for wlan1
interface wlan1
static ip_address=192.168.115.43/24
static routers=192.168.115.1
static domain_name_servers=192.168.115.1

Nach einem Neustart des Pi kannst Du mit einem Ping überprüfen, ob der Raspberry Pi mit seiner neuen IP-Adresse im Netzwerk erreichbar ist:

C:\>ping raspberrypi.local -4

Ping wird ausgeführt für raspberrypi.local [192.168.115.41] mit 32 Bytes Daten:
Antwort von 192.168.115.41: Bytes=32 Zeit=3ms TTL=64
Antwort von 192.168.115.41: Bytes=32 Zeit=2ms TTL=64
Antwort von 192.168.115.41: Bytes=32 Zeit=2ms TTL=64
Antwort von 192.168.115.41: Bytes=32 Zeit=2ms TTL=64

Ping-Statistik für 192.168.115.41:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 2ms, Maximum = 3ms, Mittelwert = 2ms

C:\>

Ob die Verknüpfung der IP-Adresse erfolgreich war, siehst Du daran, dass Du den Pi unter der neu vergebenen IP-Adresse mit einem Ping erreichen kannst.

Die Qual der Wahl. Welche SD-Karte ist die Richtige.

Die Raspberry Pi 2 und 3 nutzen als Speichermedium microSD-karten. Eigentlich kann man jede Karte verwenden und es keine speziellen Anforderungen an die Karten. Einige Dinge sollte man a trotzallem beachten:

  1. Wähle eine Karte mit mindestens 4 GByte, besser 8GByte Speicher. Je nach Version des Raspberry werden bis zu 64 GByte Karten unterstützt. Wenn Du Noobs mit mehreren Betriessystemen nutzen willst, darf es ruhig ein Wenig mehr Speicher sein.
  2. Die Geschwindigkeit wird bei SD-Karten in Klassen definiert. Je höher die Klasse, desto höher ist auch die Schreib / Lesegeschwindigkeit der Karte. Du solltest immer SD-Karten der Klasse 10 verwenden.
    Preislich ist da heute kaum ein Unterschied.  Die Karten haben den Vorteil, dass der SoC und die Fast-Ethernetkarte dann die limitierenden Elemente des Raspberry Pi sind.
  3. Sollte wiedererwartend mal ein SD-Karten Typ nicht funktionieren, probiere einen anderen Hersteller.

 

 

Wie ermittle ich die IP-Adresse des Pi

Wenn man unter Windows seine IP-Adresse abfragen will, öffnet man den Command-Prompt und gibt den Befehl ipconfig ein. Nicht viel anders, ist es unter Rasbian.

Man öffnet das LXTerminal und gibt de Befehl ifconfig ein, und schon erhält man die gewünschte Information.

pi@raspberrypi:~ $ ifconfig
eth0      Link encap:Ethernet  
          Hardware Adresse b8:27:eb:61:ce:6e
          inet Adresse:192.168.115.136  
          Bcast:192.168.115.255     
          Maske:255.255.255.0
          inet6-Adresse: fe80::82db:8d7f:bc1c:e725/64 
          Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:62031 errors:0 dropped:17618 overruns:0 frame:0
          TX packets:3421 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000
          RX bytes:3784320 (3.6 MiB)  TX bytes:325940 (318.3 KiB)
 
lo        Link encap:Lokale Schleife
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:65536  Metrik:1
          RX packets:200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1
          RX bytes:16656 (16.2 KiB)  TX bytes:16656 (16.2 KiB)
 
pi@raspberrypi:~ $

ETH0 verweist auf die erste Netzwerkkarte. Hinter dem Eintrag inet Adresse steht die gesuchte IP-Adresse (hier 192.168.115.136).