Folding@Home-Statistiken auf LED-Display anzeigen

Seite 2: Die Verkabelung

Inhaltsverzeichnis

Wenn man sich die Module anschaut, sieht man, dass an einer Seite eine abgewinkelte Pinleiste bereits angelötet ist. Auf der anderen Seite könnte man eine solche Leiste, die mitgeliefert wird, selber festlöten. Danach könnte man die Displays über die ebenfalls mitgelieferten Kabel verbinden. Leider bekommt man mit dieser Methode keine zwei Displays nahtlos nebeneinander. Wenn man aber von einem Display die Pins vorsichtig nach unten umbiegt, kann man sie bei dem anderen Display von oben durch die Platine schieben und auf der Rückseite festlöten. Dazu kann man das letzte LED Modul einfach aus den Sockeln der Platine rausziehen. Aber Achtung:

  • Immer von allen Seiten gleichzeitig und vorsichtig hebeln, damit sich die Pins nicht verbiegen.

  • Merken Sie sich die Ausrichtung des LED Moduls, damit es danach wieder richtig herum aufgesteckt wird. Die seitlichen Beschriftungen aller LED Module zeigen in eine Richtung.

Die Eingangspins wurden nach unten umgebogen und von oben in die Lötstellen des ersten Moduls eingesteckt. Dazu wurde die letzte 8x8 LED Matrix aus dem Sockel gehoben. Beide Module wurden mit zwei Tropfen Heißkleber fixiert.

(Bild: Karl Pelzer)

Wenn alles passt, kann man zusätzlich die Platinen noch mit ein paar Tropfen Heißkleber fixieren, bevor man das LED-Modul wieder in den Sockel steckt. Fertig ist das extralange Display-Modul.

Die umgebogenen Pins wurden an der Unterseite des Moduls verlötet.

(Bild: Karl Pelzer)

Display Bezeichnung Pin Raspi Bezeichnung
VCC
+5V 2 5V
GND Masse 6 GND
DIN Data In 19 GPIO 10 = MOSI
CS Chip Select 24 GPIO 8 = SPI CE0
CLK Clock 23 GPIO 11 = SPI CLK

Das Beispielprogramm fragt über die Folding@Home API die Statistiken für das eigene Donor-Konto ab und baut aus verschiedenen Inhalten des JSON-Dokuments einen String, der als Laufschrift auf den Displays ausgegeben wird. Denken Sie daran, in der URL ihr eigenes Donor-Konto einzutragen. Die Schritte sind im Programm dokumentiert. Das Programm können Sie nach Ihren Wünschen anpassen und verbessern.

# Programm zum Auslesen und Anzeigen von
# Folding@Home Statistiken auf 8x8 LED Arrays
# Autor Karl Pelzer 03/2020

import requests
import re
import time
import argparse
import locale
locale.setlocale(locale.LC_ALL, 'de_DE.utf-8')

from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.virtual import viewport
from luma.core.legacy import text, show_message
from luma.core.legacy.font import proportional, CP437_FONT, TINY_FONT, SINCLAIR_FONT, LCD_FONT

# SPI initiaisieren 
serial = spi(port=0, device=0, gpio=noop())
# LED Matrix initialisieren
#   cascaded ist die Anzahl der 8x8 Display Matrizen
#   block_orientation ggfs. anpassen
device = max7219(serial, cascaded=8, block_orientation=-90,
                 rotate=0, blocks_arranged_in_reverse_order=False)

# 10 Schleifendurchl�ufe
i = 1
while i<=10:
    msg = "Folding @ Home"
    print(msg)
    show_message(device, msg, fill="white", font=proportional(LCD_FONT))
# Abfrage der F@H Statistik f�r den Donor    
    r = requests.get('https://stats.foldingathome.org/api/donor/FamilieP')
    donor = r.json()
    print (donor)
    print (r)
# die f�r die Ausgabe relevanten Felder extrahieren
    last = donor["last"]
    wus = donor["wus"]
    rank = donor["rank"]
    credit = donor["credit"]
    name = donor["name"]
# die numerischen Felder in Strings mit 1000er Trennzeichen "." umwandeln    
    wusstr = str(locale.format_string('%d', wus, grouping=True))
    rankstr = str(locale.format_string('%d', rank, grouping=True))
    creditstr = str(locale.format_string('%d', credit, grouping=True))
# den String zur Ausgabe zusammenbauen
    msg = name + " --- Letztes Update: " + last + " --- Work Units: " + wusstr + " --- Credits: " + creditstr + " --- Rank: " + rankstr
# F�r Debugging-Zwecke den Text einfach mal ausgeben
    print(msg)
# ...und dann auf dem Display ausgeben
    show_message(device, msg, fill="white", font=proportional(LCD_FONT))

    print(i)
    i += 1

Hier können Sie den Python-Code für das Folding@Home-Display runterladen. (rehu)