Was gibt’s Neues: dein Raspberry Pi Dashboard

In diesem Guide zeigen wir dir, wie du ganz einfach mit einem E-Ink Display ein Raspberry Pi Dashboard umsetzten kannst. Viele kennen das Problem: alle 5 Minuten ein Griff zum Handy, um wirklich nur ganz kurz die neuesten Tweets zu lesen. Mindestens ein Browsertab mit einer Social Media Website oder Meme Page ist ständig geöffnet und bereit, um (mit Vorliebe während der Arbeitszeit) für Ablenkung zu sorgen. Die Mittel und Wege zur Prokrastination sind im digitalen Zeitalter endlos.

Oder vielleicht ist dir gerade diese Fülle an Informationen zu viel? Deine Lieblings-Nachrichtenseiten zeigen alles, nur nicht das, was dich interessiert?

In beiden Fällen liefert dieses Projekt Abhilfe: bastle dir ein Raspberry Pi E-Ink Dashboard, das dir ganz bequem und automatisch genau die Dinge zeigt, die du sehen willst.

Mithilfe verschiedener, kostenloser APIs werden Nachrichten, Witze oder Bilder aus den Tiefen des Netzes zusammen getragen und auf einem Waveshare E-Ink Display präsentiert.

Ein E-Ink Display bietet hier nicht nur den Vorteil, dass es an eine klassische Zeitung aus Papier erinnert: “Electronic Ink Displays” verbrauchen nur dann Strom, wenn sie aktualisiert werden. Und selbst wenn keine Stromversorgung vorliegt, bleibt die Anzeige erhalten.

Außerdem lässt sich das Ganze gut in einem Bilderrahmen verpacken und beispielsweise auf dem Schreibtisch platzieren, damit man alles schön im Blick hat.

Das brauchst du für das Projekt

WARENKORB

Alle für dieses Projekt notwendigen Artikel (außer Lötkolben) landen mit einem Klick auf den Button direkt in deinem Warenkorb, sofern sie in unserem Shop verfügbar sind. Kontrolliere daher deinen Warenkorb genau!

Raspberry Pi Dashboard: Schritt für Schritt

Bevor es losgeht: für dieses Projekt werden verschiedene Abhängigkeiten und Python-Bibliotheken benötigt, ein gewisses Python- und Kommandozeilengrundwissen ist also von Vorteil. Auch Vorwissen zum Raspberry Pi schadet nicht.

Raspberry Pi vorbereiten:

Falls noch nicht geschehen, wird zuerst ein Betriebssystem für den Raspberry Pi installiert. Welches System gewählt wird, ist dabei zweitrangig, solange alle Abhängigkeiten problemlos installiert werden können. Der Einfachheit halber wird für diesen Artikel das anfängerfreundliche Raspberry Pi OS verwendet.

(zu finden unter https://www.raspberrypi.org/software/ , enthält auch Installationshinweise auf Englisch)

Dann in der Raspberry Pi Commandline die Konfiguration mit

sudo raspi-config

aufrufen und unter Interface Options → SPI “yes” auswählen, um SPI zu aktivieren.

Danach werden Raspberry Pi und Display entweder über den mitgelieferten Aufsatz oder mithilfe der acht Kabel verbunden.

Für die Kabel:

Display Raspberry Pi
VCCpin17
GNDpin 20
DINpin 19
CLKpin 23
CSpin 24
RSTpin 11
BUSYpin 18

Anschließend holen wir uns die benötigten Abhängigkeiten (hier für Raspberry Pi OS, für andere OS anpassen):

sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-numpy
sudo apt-get install python3-pil
sudo pip3 install Rpi.GPIO
sudo pip3 install spidev

Falls bis zu diesem Punkt alles funktioniert hat, wird es Zeit, das Display einem ersten Test zu unterziehen.

Dafür brauchen wir nur noch das Waveshare e-Paper GitHub Repository:

git clone https://github.com/waveshare/e-Paper.git
cd e-Paper/RaspberryPi_JetsonNano/python/examples
ls

Im examples-Ordner befinden sich Beispiele für verschiedenste Display-Varianten. Alle beginnen mit “epd” gefolgt von der Größe des Displays (in unserem Fall 7in5) und ggf. einer Abkürzung für die Display-Art: das Beispiel für das hier verwendete schwarz-weiß-rote 7.5 HD Display versteckt sich hinter “epd_7in5b_HD_test.py”.

Für eine kurze Demo wird also folgender Befehl eingegeben:

python3 epd_7in5b_HD_test.py

Dann ein wenig Geduld, E-Ink Displays punkten mit geringem Energieverbrauch, Schnelligkeit zählt nicht zu ihren Stärken.

Im besten Fall zeigt das Display jetzt einige Beispiel-Ausgaben von Waveshare (oder es passiert gar nichts, in diesem Fall stehen wir gerne mit Rat und Tat zur Seite).

Ran an den Code!

Nachdem alle Vorbereitungen abgeschlossen sind, ist es an der Zeit, sich die Hände schmutzig zu machen.

Für unser Raspberry Pi Dashboard werden exemplarisch folgende APIs verwendet:

– die Twitter API, um die neuesten Tweets von drei IT-Nachrichtenseiten anzuzeigen

– die GitHub API, damit man sich über jedes neue Sternchen für ein Repo freuen kann

– die Dad Jokes API, da jede gute News Seite auch eine Witze-Kategorie braucht

– außerdem ein zufällig ausgewähltes Pokemon (braucht man einen Grund für ein Pokemon?)

Der Großteil dieser APIs ist frei, kostenlos und ohne Key oder Account zugänglich. Nur für die Twitter API wird ein Twitter Devleoper Account benötigt, um API Keys und Tokens zu generieren. (siehe https://developer.twitter.com/en/docs).

Um unseren Beispiel-Code zu verwenden, kannst du dir einfach das GitHub Repository des Projekts herunterladen:

git clone https://github.com/BerryBase-de/raspi-dashboard.git

Im Ordner befindet sich das Python-Programm für das Dashboard (dashboard.py), ein Unterordner “pics” für Bilder und ein Unterordner “fonts” für Beispielschriftarten.

Alle Zeilen, in denen du persönliche Anpassungen machen kannst, sind im Code durch Kommentare gekennzeichnet. Persönliche Twitter Keys und Tokens müssen vor Start des Programms eingetragen werden, sonst ist es nicht lauffähig (Achtung: teile niemals diese Keys mit anderen, stelle sicher, dass deine Keys gelöscht sind, falls du den Code weiterteilst)

Falls du es aber kaum erwarten kannst, deine eigenen Ideen umzusetzen, ist hier ein Grundgerüst für das Display:

# EPD Klasse initialisieren
epd = epd2in7b.EPD()
epd.init()

# erstmal ein weißer Hintergrund
epd.Clear()

# eine Font auswaehlen, im fonts-Ordner des GitHub-Repos sind Beispiel-Schriftarten
# 'Font.ttc' dementsprechend anpassen
font24 = ImageFont.truetype(os.path.join(font_dir, 'Font.ttc'), 24)

# jeweils leere schwarze und rote Layer erstellen
HBlackimage = Image.new('1', (epd.height, epd.width), 255)
HRedimage = Image.new('1', (epd.height, epd.width), 255)

# schwarzes Bild rendern, Text einfuegen
# auch hier Fonts anpassen
black_draw = ImageDraw.Draw(HBlackImage)
black_draw.text((1, 1), top_text, font=FONT_LARGER, fill=0)

# rotes Bild rendern, Text einfuegen
# auch hier Fonts aendern
red_draw = ImageDraw.Draw(HRedImage)
red_draw.text((1, top_depth), bottom_text, font=FONT_SMALLER, fill=0)

epd.display(epd.getbuffer(HBlackImage), epd.getbuffer(HRedImage))

In diesen Code-Snippet können nach Herzenslust eigene Funktionen eingefügt werden. Damit sich nichts davon “einbrennt”, ist zu beachten, dass das Display regelmäßig aktualisiert werden muss. Waveshare empfiehlt spätestens alle 10 Tage eine Auffrischung, mit einer täglichen Aktualisierung solltest du auf der sicheren Seite sein.

Fertig!

Alternativen zu den ausgewählten APIs wären beispielweise eine Wetteranzeige, aktuelle Covid-Infektionszahlen, dein persönlicher Kalender oder deine ToDo-Lists.

Falls du nach mehr Inspiration für witzige oder nützliche APIs suchst, findest du hier eine geekige Auwahl:

https://www.hpe.com/us/en/insights/articles/9-apis-for-the-geekiest-1905.html

Und wie immer: falls du Fragen, Anmerkungen oder Verbesserungen hast, hinterlass’ uns einfach einen Kommentar.

Falls du noch Interesse an mehr Raspberry Pi Tutorials und Guides hast, schau am besten hier vorbei.

Die mobile Version verlassen