Die meisten Drucker sind heutzutage einfach im Netzwerk einbindbar und damit auch am Raspberry Pi benutzbar. Somit lassen sie sich von vielen Geräten bedienen und Dokumente oder Bilder damit drucken. Entweder können wir also einfache Textdokumente am Raspberry Pi drucken oder z.B. Bilder.
In diesem Tutorial installieren wir zunächst die Software, um vom Raspberry Pi aus etwas drucken zu können und nehmen die Konfiguration vor. Anschließend bauen wir uns eine „Instant Kamera“, indem wir per Knopfdruck ein Bild aufnehmen und dieses sofort an den Drucker senden.
Zubehör
Falls du lediglich Dateien, Bilder oder andere Dokumente mit dem Raspberry Pi drucken möchtest, so benötigst du nur folgendes:
- Raspberry Pi (Modell egal, aber ein CSI oder USB Anschluss sollte vorhanden sein)
- Netzwerkfähiger Drucker (optimal: mit Wlan/Wifi Funktion)
Welchen Drucker du dabei verwendest, spielt keine Rolle. Falls er über das Netzwerk erreicht werden kann, kannst du mehrere Geräte damit verbinden. Aber auch rein kabelgebunde Geräte sind in Ordnung.
Sofern auf Knopfdruck ein Bild aufgenommen werden und anschließend ausgedruckt werden soll, so sind zusätzlich folgende Teile nötig:
- Raspberry Pi Kamera
- Breadboard
- Widerstände (10kΩ)
- Jumper Kabel
- Taster / Druckschalter
Installation der Raspberry Pi Drucker Software
Die Voraussetzung, um einen kabellosen Drucker im Netzwerk mit dem Raspberry Pi erkennen zu können, ist, dass der Drucker bereits fertig konfiguriert wurde. Wie dies geht steht im Handbuch des Druckers und wird am besten per Computer vorgenommen.
Um unseren Drucker erkennen zu können, nutzen wir die Software CUPS von Apple, die für MacOS und andere Unix Systeme entwickelt wurde. Hier sind Treiber für alle möglichen Drucker vorhanden und auch die gesamte Konfiguration, das Einbinden, usw. wird davon gemanaged.
Wir starten mit der Installation, die einige Minuten dauern kann. Dazu rufen wir ein Terminal auf (am besten per Remotedesktopverbindung, da wir dies im Anschluss brauchen werden):
sudo apt-get update && sudo apt-get install upgrade sudo apt-get install cups --yes
Während der Installation wurden u.a. neue Usergruppen angelegt, in der wir unseren Nutzer (normalerweise: pi) hinzufügen:
sudo usermod -a -G lpadmin pi
Nun können wir bereits am Raspberry Pi den Browser öffnen (RDC) und folgende Adresse eingeben:
Es kommt eine Warnung, dass das (selbst-signierte) Zertifikat ungültig ist, welche wir aber ignorieren können (Advanced -> Continue):
Im nächsten Schritt navigieren wir zu Administration und werden nach den Zugangsdaten gefragt. Hier geben wir unsere Zugangsdaten des Users ein (Standard: pi / raspberry):
Nun bekommen wir verschiedene Drucker angezeigt. Dazu wählen wir den entsprechenden Eintrag aus. Oftmals haben Drucker mehrere Einträge, wobei ich die „Driverless“ Variante gewählt habe. Solltest du Probleme beim Druckvorgang haben, kannst du eine der anderen Optionen ausprobieren. In meinem Fall handelt es sich um einen HP Office Jet 4620 Multifunktionsdrucker (auf die Scan-Funktion können wir in einem anderen Tutorial näher eingehen).
Im Anschluss werden noch einige Einstellungen abgefragt (optimalerweise sharen wir den Drucker), woraufhin wir die Konfiguration speichern. Wir gelangen zur Übersicht, wo u.a. alle Druckaufträge (Print jobs) gelistet sind:
Zu Guter Letzt setzen wir den Drucker noch als default (Auswahl: „Set as Server Default“). Dadurch ersparen wir uns die Angabe des Drucker Namens, falls wir per Kommandozeile eine Datei der Warteschlange hinzufügen.
Erster Test des Druckers
Der Drucker ist eingerichtet, also machen wir unseren ersten Test: Wir wechseln dazu auf die Drucker Detailseite und wählen „Print Test Page“ aus oder nutzen einen Texteditor bzw. LibreOffice.
Rufe dazu das Menü oben Links auf: Accessories -> Text Editor, File -> Print und wähle den Drucker aus.
Der Druck sollte sofort beginnen. Ansonsten editierst du einfach die Einstellungen des Druckers.
Projekt: Auf Knopfdruck ein Bild aufnehmen und am Raspberry Pi drucken
In einem vorherigen Tutorial haben wir eine Kamera auf Knopfdruck gebaut. Dieses Setup möchten wir nun erweitern, sodass wir das Bild direkt danach drucken. Fangen wir also zunächst mit dem Aufbau an:
Als Trigger nutzen wir den GPIO 17 (Pin 11). Mehr Details zum Aufbau findest du im verlinkten Tutorial.
Bevor wir das Bild drucken, müssen wir es vorher noch in eine PDF Datei umwandeln. Diese kann dann gedruckt werden. Dafür nutzen wir das Python Package Pillow:
pip3 install Pillow
Nun erstellen wir das Skript, welches auf den Button wartet und anschließend das Bild der Kamera erstellt, daraus eine PDF erzeugt und anschließend das ganze druckt:
sudo nano camera_print.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# -*- coding: utf-8 -*- from RPi import GPIO from datetime import datetime import os, time from PIL import Image GPIOPin = 17 FILE_PATH = "/home/pi/img_%s.%s" def button_callback(gpio_number): print("Button pressed!") datetime_string = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") filename = FILE_PATH % (datetime_string, "jpg") os.system("raspistill -o %s" % filename) # convert image1 = Image.open(filename) im1 = image1.convert('RGB') pdf_filename = FILE_PATH % (datetime_string, "pdf") im1.save(pdf_filename) # send to printer os.system("lp %s" % pdf_filename) GPIO.setmode(GPIO.BCM) GPIO.setup(GPIOPin, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) GPIO.add_event_detect(GPIOPin, GPIO.RISING, callback=button_callback) try: while True: time.sleep(0.01) except: GPIO.cleanup() |
Speichere mit STRG+O und beende den Editor mittels STRG+X.
Interessant sind folgende Änderungen (alle Details und Erklärungen findest du im anderen Tutorial):
- Zeile 18-21: Das gespeicherte Bild wandeln wir in eine PDF Datei um und speichern diese.
- Zeile 24: Mit dem Befehl lp können wir Dateien der Druckwarteschlange hinzufügen. Du kannst den Befehl auch zunächst manuell in die Konsole eingeben und ggf. weitere Optionen (wie Auflösung, Größe, Standarddrucker, etc.) setzen. Sofern du mehrere Geräte eingerichtet hast oder keinen Standarddrucker eingestellt hast, so brauchst du den Parameter -d gefolgt vom Druckernamen.
Nun können wir das ganze bereits ausführen:
sudo python3 camera_print.py
Übrigens: Auch dieses Tutorial ist aufgrund einer der vielen Raspberry Pi Tutorial-Wünsche entstanden.