So wird aus einem Lego-Raumschiff eine Uhr mit LEDs

Mit einem LED-Kit von Ebay und einem Raspberry Pi lässt sich jedes Lego-Set in eine schicke Uhr verwandeln, die alle Viertelstunde die Zeit anzeigt.

In Pocket speichern vorlesen Druckansicht 122 Kommentare lesen
Lego-Figuren neben einem Raumschiff mit Lichtern.
Lesezeit: 13 Min.
Von
  • Tobias Hübner
  • Helga Hansen
Inhaltsverzeichnis

Erinnern Sie sich an ihr erstes Lego-Set? Meins war ein Raumschiff, das Ende der 70er Jahre erschien und bis vor kurzem in Einzelteile zerlegt auf dem Dachboden lag. Ich hatte es schon längst vergessen, bis ich mit meinen Neffen den Lego-Film sah. Darin rief Benny der Raumfahrer „Raumschiff, Raumschiff, RAUMSCHIFF!“ Alte Kindheitserinnerungen wurden wach und seitdem steht das gute Stück als Erinnerung an meine glückliche Kindheit wieder auf dem Schreibtisch.

Einige Tage später sah ich, dass Drittanbieter bei Ebay für viele Lego-Sets Bausteine mit winzig kleinen LEDs anbieten. Die Idee kam auf, das Raumschiff zu beleuchten – gesagt, getan! Begeistert von dem Ergebnis ging ich noch einen Schritt weiter und überlegte, ob sich die LEDs nicht mit dem Einplatinenrechner Raspberry Pi ansteuern lassen. Auch das funktioniert und da sogar ein Pi Zero in das Set hineinpasst, beschloss ich, mit den LEDs auf dezente Art und Weise jede Viertelstunde die Zeit anzuzeigen.

Mehr Infos

Kurzinfo

  • Lego mit Elektronik kombinieren
  • LEDs in Python ansprechen
  • Blinkende Uhr nach dem Vorbild von Kirchenglocken programmieren

Checkliste

  • Zeitaufwand: ab einer Stunde
  • Kosten: circa 40 Euro
  • Programmieren: Grundkenntnisse Python
  • Löten: Grundkenntnisse

Material

  • Lego-Set, nach Wahl
  • LED-Set für Lego, hier für den VW Käfer (Nr. 10252)
  • Raspberry Pi Zero W, je nach Größe des Projekts auch ein anderer Raspberry Pi
  • Micro-SD-Karte, bzw. bei alten Modellen eine SD-Karte
  • Spannungsversorgung, für den Zero reicht ein USB-Kabel, neuere Modelle benötigen meist ein spezielles Netzteil
  • Seitenschneider zum Trennen und Abisolieren der Kabel
  • Lötkolben und etwas Lötzinn
  • 3V-CR2032-Knopfzellenbatterie zum Testen der LEDs
  • Computer oder Maus & Tastatur für die Programmierung des Raspberry Pis
  • ggf. Adapter und USB-Hub, wenn ein Zero verwendet wird

Das Projekt ist nicht besonders schwer und eignet sich auch für Bastel-Laien, die noch keine Erfahrung mit der Ansteuerung von Hardware mit dem Raspberry Pi haben. Die größte Hürde besteht darin, die LEDs an den Raspberry Pi anzulöten. Dafür braucht es eher Mut als Können, denn selbst ohne Löterfahrung ist das Befestigen der Kabel eine lösbare Aufgabe.

Die Zeitangabe der Lego-Uhr funktioniert ähnlich wie bei einer Kirchenglocke, die alle 15 Minuten die Zeit angibt. In der Regel schlägt der Gong um 13 Uhr einmal, um 14 Uhr zweimal und so weiter. Dieses Glockenläuten zur Zeitangabe stammt übrigens noch aus einer Zeit, in der es keine mechanische Uhren mit Zifferblatt zur optischen Zeitangabe gab.

Auch bei der Lego-Uhr leuchten alle fünf verbauten LEDs – und zwar um 13 Uhr einmal, um 14 Uhr zweimal usw. Zu jeder Viertelstunde wird zunächst wieder die volle Stunde mit den grünen LEDs angezeigt. Danach leuchten die roten LEDs: einmal um viertel nach, zweimal um halb und dreimal um viertel vor. Hier ist die Funktionsweise in einem kurzen Video erklärt.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Fangen wir damit an, uns das Lego-LED-Set genauer anzusehen. Das folgende Set ist für den VW-Käfer gedacht. Ich habe es auf Ebay für ca. 15,- Euro gekauft. Die Sets werden für verschiedene Lego-Projekte angeboten, die über den Suchbegriff „LEGO LED“ zu finden sind. Meist handelt es sich um weiße LEDs in farbigen, transparenten Lego-Steinen, so dass der Austausch bzw. Einbau in andere transparente Steine sehr einfach ist. Die LEDs sind so klein, dass sie sich ohne weitere Umbauten zwischen zwei LEGO-Teilen einklemmen lassen. Auch die Kabel sind so dünn und robust, dass sie dabei keinen Schaden nehmen. Die Sets enthalten oft einen Batteriehalter mit USB-Anschluss.

Es handelt sich nicht um ein offizielles Lego-Produkt, sondern um ein handgefertigtes Set. Dies wird besonders deutlich, wenn man sich den USB-Anschluss zur Spannungsversorgung genauer ansieht.

Die Kabel sind einfach an den 5V- und Ground-Anschluss eines USB-Kabels gelötet. Die beiden Widerstände reduzieren den Strom, werden aber für den Anschluss an den GPIO-Port des Raspberry Pi nicht benötigt, da dieser nur 3,3 Volt bereitstellt. Die LEDs selbst sind so klein, dass sie sich problemlos in einer LEGO-Noppe verstauen lassen.

Wer eine andere Farbe als die gelieferten Steine nutzen möchte, kann die LEDs in andere Lego-Teile einbauen. Hierzu bohrt man ein kleines Loch in die Seite, die Kabel lassen sich jedoch im Notfall auch einfach zwischen zwei Teilen einklemmen.

Um die LEDs an den Pi anzulöten, schneidet man die Kabel möglichst lang ab – gekürzt werden können sie später immer noch. Dabei sollte man aufpassen, dass man das Kabel nicht aus Versehen von der LED ablöst.

Für mein Projekt habe ich vier kleine LEDs für die Flügel bzw. Seiten des Raumschiffs sowie ein 3-LED-Stück für die Innenbeleuchtung verwendet.

Zur Ansteuerung der LEDs müssen diese mit dem Pi verbunden werden. Am einfachsten geht dies mit dem Raspberry Pi Zero W (ab 16,49 €), der statt aufgelöteter Pins 40 Löcher in der Platine besitzt, an die Kabel ganz einfach angelötet werden können. Außerdem unterstützt er WLAN, sodass sich die Uhr über das Internet aktualisieren lässt. Eine eingebaute Uhr haben Raspberry Pis dagegen nicht. Nach jedem Neustart vergessen sie, wie spät es ist.

Jede LED muss an einen GPIO-Pin (im Bild blau) und einen Ground-Pin (im Bild schwarz) angeschlossen werden. Ich habe die folgenden Pins verwendet:

  • 3-LED-Stein für die Innenbeleuchtung: GPIO 21
  • rote LED auf dem linken Flügel: GPIO 16
  • grüne LED auf der linken Seite: GPIO 12
  • rote LED auf dem rechten Flügel: GPIO 25
  • grüne LED auf der rechten Seite: GPIO 4

Um herauszufinden, welches der beiden Kabel zum Plus- und welches zum Minus-Pol der LED führt, isoliert man ein Stück der Ummantelung ab und hält die Enden an die beiden Pole einer Knopfzellen-Batterie. Leuchtet die LED, merkt man sich, welches Kabel an den Plus- und welches an den Minuspol gehalten wurde. Leuchtet sie nicht, wechselt man die beiden Kabel – keine Angst, die LED wird dabei nicht beschädigt.

Nun können die Kabel passend gekürzt und an den Raspberry Pi angelötet werden, indem man das Kabel durch das entsprechende Loch des GPIO-Pins führt, die Stelle anschließend mit dem Lötkolben erhitzt und das Kabel mit dem Lötzinn dauerhaft befestigt. Überschüssige Enden sollten mit dem Seitenschneider abgeschnitten werden, damit kein ungewollter Kontakt zwischen den Pins entsteht.

Nun wird alles in das LEGO-Set eingefügt, wobei darauf geachtet werden muss, Platz für den Anschluss des Kabels zur Stromversorgung zu lassen.

LED-Steine im Lego-Raumschiff (3 Bilder)

Wie kann ich feststellen, ob ich bis hierhin alles richtig gemacht habe?

Dazu schließen wir den Raspberry Pi an einen Monitor an und verbinden ihn mit Maus und Tastatur. Ist auf der SD-Karte schon das Betriebssystem Raspbian installiert, kann der Rechner gebootet werden. Ansonsten hilft unsere Anleitung bei der Installation von Raspbian weiter. Wenn der Desktop erscheint, öffnen wir ein Terminal-Fenster und starten die Programmiersprache Python mit dem Befehl: python

Nun sollte >>> auf dem Monitor zu sehen sein. Zum Testen der LEDs können (jeweils ohne die frei vorangestellten Größer-als-Zeichen) folgende Befehle eingetippt werden:

>>> from gpiozero import LED
>>> a = LED(21)
>>> a.on()
>>> a.off()

Der Befehl a.on() schaltet die LED, die an den GPIO-Port 21 angeschlossen ist, ein, a.off() schaltet sie wieder aus. Die anderen LEDs lassen sich nach dem gleichen Prinzip testen. Soll zum Beispiel die LED an Pin 16 getestet werden, gibt man Folgendes ein:

>>> a = LED(16)
>>> a.on()
>>> a.off()

Die Bibliothek gpiozero ermöglicht es zudem, eine LED beim Einschalten erst nach und nach heller werden zu lassen. Dieses Pulse-Feature lässt sich mit folgendem Code aktivieren:

>>> from gpiozero import PWMLED
>>> a = PWMLED(16)
>>> a.pulse()
>>> a.off()

Nun haben wir sämtliche Hardware für unser Projekt beisammen und funktionsbereit und wir können uns um die Programmierung der Uhr kümmern.

Hierzu benötigen wir eine weitere Python-Bibliothek names datetime. Um deren Funktionsweise zu demonstrieren, fangen wir einfach an, das Uhr-Programm zu schreiben. Wer sich für die Details der Programmierung nicht interessiert, kann das fertige Programm herunterladen und einsetzen. Um Änderungen im Code vornehmen und so die Software optimal an das eigene Projekt anpassen zu können, sollte man den Aufbau des Programms anhand der folgenden Schritte kennenlernen.

Wer sich noch in der Python-Konsole befindet, drückt zunächst die Tastenkombination STRG-D, um diese zu beenden. Dann gibt man im Terminal den Befehl nano Uhr.py ein. Dieser Befehl öffnet den Editor nano und lässt uns die Datei Uhr.py bearbeiten. Dorthin kann der folgende Code kopiert werden:

from gpiozero import PWMLED
from time import sleep
import datetime
Cockpit = PWMLED(21)
rot_links = PWMLED(16)
gruen_links = PWMLED(12)
rot_rechts = PWMLED(25)
gruen_rechts = PWMLED(4)
while True:
Zeit = datetime.datetime.now().strftime("%H:%M”)
if (Zeit == "01:00") or (Zeit == "13:00”):
Cockpit.pulse()
rot_links.pulse()
gruen_links.pulse()
rot_rechts.pulse()
gruen_rechts.pulse()
sleep(2.04)
Cockpit.off()
rot_links.off()
gruen_links.off()
rot_rechts.off()
gruen_rechts.off()
sleep(60)
sleep(0.5)

Nach dem Import der benötigten Bibliotheken versehen wir die fünf LEDs (PWMLED) mit aussagekräftigen Namen wie Cockpit. Mein Raumschiff verfügt über zwei rote und zwei grüne LEDs sowie die LEDs in der Innenraumbeleuchtung.

Solange es läuft, ruft das Programm regelmäßig die aktuelle Uhrzeit ab und schreibt diese in dem angegebenen Format in die Variable Zeit. Anschließend prüft eine if-Anweisung, ob es 01:00 Uhr oder 13:00 Uhr ist. Ist eins von beidem der Fall, leuchten alle LEDs einmal auf. Sie leuchten deshalb nur einmal, weil das Programm 2,04 Sekunden wartet – die Zeit für einen „Pulse“ der LED. Anschließend werden die LEDs ausgeschaltet und das Programm wartet weitere 60 Sekunden. Ansonsten würde die Uhr die Zeit nicht nur einmal anzeigen, sondern mehrfach.

Nach jeder Ausführung wartet das Programm eine halbe Sekunde, bevor es von vorn beginnt, die Zeit und die if-Anweisung zu überprüfen.

Das Programm speichern wir mit der Tastenkombination STRG-X und bestätigen die anschließende Abfrage mit J. Um es auszuführen geben wir python Uhr.py ein.Sofern es gerade nicht zufällig 1 oder 13 Uhr ist, passiert nach Aufruf des Programms allerdings nichts. Um den Code zu testen, müssen wir die Uhrzeit umstellen. Dafür öffnet man ein neues Terminal-Fenster und schaltet zunächst die Internet-Synchronisierung der Uhrzeit aus:

sudo timedatectl set-ntp 0

Anschließend ändert man die Uhrzeit mit dem Befehl:

sudo date -s "2019-01-01 01:00:00”

Wenn nun die LEDs blinken, funktioniert alles nach Plan. Nach dem Test sollte die Synchronisierung der Systemuhr über das Internet wieder aktiviert werden:

sudo timedatectl set-ntp 1

Als Nächstes bringen wir dem Uhr-Programm bei, die Uhrzeit auch um viertel nach eins anzuzeigen. Dafür ergänzen wir das Programm um die folgenden Zeilen:

 elif (Zeit == "01:15") or (Zeit == "13:15”):
gruen_links.pulse()
gruen_rechts.pulse()
sleep(2.04)
gruen_links.off()
gruen_rechts.off()
rot_links.pulse()
rot_rechts.pulse()
sleep(2.04)
rot_links.off()
rot_rechts.off()
sleep(60)
sleep(0.5)

Um viertel nach zeigen zunächst die grünen LEDs die Stunde an und anschließend die roten LEDs die Minuten. Beide LEDs blinken um 01:15 Uhr (bzw. 13:15 Uhr) also jeweils einmal.

Wer sich die Arbeit ersparen möchte, alle anderen Uhrzeiten per Hand einzutragen, lädt am besten einfach das fertige Programm herunter. Mit dem Programm-Code als Basis lassen sich auch weitere Projekte realisieren, zum Beispiel die Nutzung der LEDs als Wecker. Hierzu könnte noch ein Buzzer an die GPIO-Ports angelötet werden.

Dazu muss man lediglich den Befehl sudo crontab -e eingeben. Anschließend wählt man seinen bevorzugten Editor aus (ich verwende wieder nano) und navigiert mit den Pfeiltasten ans Ende der Datei. Wurde die Datei Uhr.py im Home-Verzeichnis des Raspberry Pi gespeichert, gibt man folgende Zeile ein:

@reboot sudo python /home/pi/uhr.py &

Nun speichert man die Datei (STRG-X und die Abfrage mit J bestätigen) und kann den Raspberry Pi herunterfahren. Bei jedem Hochfahren startet die Uhr nun automatisch.

Hier sind noch einige weitere Projektideen, zum Beispiel eine Spielkonsole aus LEGO.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier eine Vimeo-Video (Vimeo LLC) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Vimeo LLC) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.


Oder ein motorisierter WALL-E, der mit einer Nintendo Wii-Fernbedienung gesteuert wird:

Man kann sich auch einfach aus einem LEGO-Set ein schicken Gehäuse für den Pi basteln:

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier eine Vimeo-Video (Vimeo LLC) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Vimeo LLC) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.


Oder eine kleine Erinnerungshilfe für den nächsten Urlaub:

Und nun viel Spaß beim Basteln! Meine LEGO-Uhr steht mittlerweile auf meinem alten Apple IIe und zeigt mir an, wie viele Stunden ich bereits mit meinem Avatar in Britannien verbracht habe. Wofür sonst könnte man die LEGO LED-Uhr einsetzen? Ich freue mich über jeden Kommentar mit Ideen, Lob oder Verbesserungsvorschlägen!

(hch)