Hausboot gratis ab 170 Euro
LEGO Online Shop
🇩🇪 Deutschland | 🇦🇹 Österreich | 🇨🇭 Schweiz

LEGO Modelle lebendig beleuchten: Zweiter Teil

Es geht voran! Der Beleuchtung zweiter Teil. | © Johann Härke

Heute geht es mit dem Beleuchten unserer LEGO MOCs und Sets los: Wir schreiben erste Programme und bringen LEDs zum Leuchten!

In meinem ersten Artikel zur lebendigen Beleuchtung von LEGO-Sets und MOCs bin ich erst einmal auf verschiedene mögliche Lösungen eingegegangen und habe euch meinen Ansatz der Beleuchtung aus einzelnen technischen Komponenten vorgestellt. In diesem Artikel soll es jetzt richtig losgehen: Wir testen zuerst die Komponenten und bauen einen ersten kleinen Stromkreis auf. Dann schreiben wir unser erstes Programm und lassen eine LED blinken.

Benötigte Komponenten

Kleine Sammlung

Die benötigten Komponenten habe ich schon im ersten Artikel aufgelistet, zur Übersichtlichkeit seht ihr sie hier noch einmal. Die Verlinkungen führen jeweils zum „Funduino-Shop“, mit dem ich in der Vergangenheit sehr gute Erfahrungen gemacht habe.

  1. Ein Breadboard oder Steckbrett (die Farbe ist dabei unerheblich)
  2. Einen ersten Vorrat an LEDs. Hier kommt es ebenfalls darauf an, welchen Einsatzzweck ihr wählen wollt. Für die Innenbeleuchtung reicht die Tüte mit 100 großen LEDs locker aus. Wollt ihr euch in Zukunft mit einem Lötkolben an feingliedrigere Beleuchtungen wie Scheinwerfer von Autos setzen, würde ich euch diesen Kasten empfehlen – dort sind auch die kleineren 3mm LEDs enthalten.
  3. Stecker-Buchsen-Kabel für die Verbindung. Hier müsst ihr selber aber abschätzen, welche Entfernungen ihr zurücklegen wollt. Eventuell müsst ihr längere Kabel nehmen. Pro LED werden zwei Kabel benötigt. Für einige Modulars würde ich euch empfehlen, den 40er Pack an 30cm Kabeln zu nehmen. Notfalls kann man auch zwei Kabel ineinander stecken. Wichtig: Es muss der Typ „Male-Female“ (Stecker-Buchse) gewählt werden.
  4. Dann benötigen wir noch Widerstände verschiedener Stärken
  5. Mit einem Taster wird die Steuerung hinterher leichter. Zwingend notwendig ist er jedoch nicht.
  6. Einen Mikrocontroller, der für uns die Ansteuerung übernimmt. In dieser Anleitung verwende ich den Nodemcu ESP 8266.
  7. Um den Controller zu betreiben, benötigen wir noch eine Stromquelle. Das oben verlinkte Modell verfügt über einen Micro-USB-Anschluss, wie ihn auch viele andere technische Geräte ihn heute besitzen. Als Stromquelle eignet sich beispielsweise eine Powerbank, an die dann ein USB zu Micro-USB Kabel angeschlossen wird. Grundsätzlich kann auch das Netzteil eines Smartphones in eine Steckdose gesteckt und angeschlossen werden.
  8. Ohne ein kleines bisschen Programmierung geht es nicht: Es wird die „Arduino IDE“ benötigt, die man sowohl auf Windows-Computern (Windows 7, 8 oder 10) als auch auf Macs (10.10 oder neuer) und Linux-Rechnern (32 und 64 bit) installieren kann.

Test der Hardware

Bevor wir zum Programmieren kommen, sollten wir zuerst die grundsätzliche Funktionsfähigkeit des Mikrocontrollers überprüfen und unsere erste LED verkabeln.

Das Steckbrett

Das Steckbrett, häufig auch Breadboard genannt, bildet sozusagen die „Grundplatte“ für unsere weiteren Versuche. Eine Reihe von Steckplätzen ist dabei parallel geschaltet. Ich habe das hier einmal eingezeichnet:

Steckbrett

Wenn also unser Controller auf das Steckbrett aufgesteckt wird, werden die Reihen, wie unten eingezeichnet, mit der jeweils vom Ausgang ausgegebenen Spannung versorgt. Die gegenüberliegende Reihe ist davon aber unabhängig, was gleich noch wichtig wird.

LEDs anschließen: Es werde Licht!

Jetzt kommen wir zum ersten Test. Unser Controller gibt, sobald er mit einer Stromquelle verbunden ist, an den Ausgängen, die mit „3v3“ beschriftet sind, ungefähr 3,3 Volt an Spannung aus. Diese 3,3 Volt können auch an den anderen Ausgängen ausgegeben werden, dazu muss das Board allerdings programmiert werden. Dazu kommen wir später. Wichtig ist, dass die LEDs nicht direkt mit den Ausgängen verbunden werden, sondern ein Widerstand dazwischen geschaltet wird. Bei den 3,3 Volt Ausgängen reicht zunächst einmal für jede LED-Farbe ein Widerstand von 100 Ohm (Reihenfolge der Streifen: braun, schwarz, braun).

Vorgehen
  1. Wir stecken also unseren Controller auf das Steckbrett.
  2. Jetzt überbrücken wir die „Mitte“ des Steckbretts mit einem Widerstand, damit der Strom durch ihn hindurch fließen muss. Den Widerstand stecken wir in eine Reihe unseres Steckbrettes, an der die Erdung anliegt. In dieser Reihe muss ein Pin unseres Controllers stecken, der mit „GND“ (englisch Ground, also Erdung) beschriftet ist.
  3. Jetzt schließen wir das Kabel einmal in der Reihe, in die jetzt unser Widerstand „mündet“, an. In die Buchse des grünen Kabels stecken wir das kürzere „Beinchen“ unserer LED.

    Erster Stromkreis

  4. Das gelbe Kabel schließen wir in einer Reihe an, die wie angesprochen mit „3v3“ beschriftet ist.

Keine Angst: Wenn hier etwas nicht sofort richtig passt, ist das kein Problem. Im schlimmsten Fall leuchtet unserere LED nicht sofort auf. Jetzt können wir unseren Controller das erste Mal mit unserer Stromquelle verbinden. Das kann eine Powerbank, ein USB-Ausgang am PC oder Laptop oder ein Handy-Aufladegerät in der Steckdose sein. Dann sollte die LED aufleuchten.

Hat das nicht geklappt?

Hier ein paar Tipps, wo der Fehler liegen könnte. Ansonsten meldet euch in den Kommentaren, ich werde versuchen das Problem zu lösen.

  1. Probiert einmal, die LED anders herum einzustecken. LEDs leuchten nur dann, wenn sie richtig herum eingesteckt sind und das richtige Beinchen mit der Erdung verbunden ist.
  2. Stecken die Kabel tatsächlich in den richtigen Reihen? Die Reihen liegen recht dicht beieinander, sodass hier genaues Hinsehen gefragt ist.
  3. Habt ihr mit dem Widerstand die Mitte des Steckbrettes überbrückt? Ansonsten kann der Strom noch nicht fließen.

Damit haben wir das Board erfolgreich getestet. Grundsätzlich steht einer ersten Beleuchtung schon jetzt nichts mehr im Wege. Vor dem Einbau würde ich euch aber empfehlen, noch erste Programmiererfahrung zu sammeln.

Installation der Programmierumgebung

Bevor wir mit der Programmierung beginnen können, benötigen wir die Arduino IDE um den Code auf unseren Controller überspielen zu können.

Arduino IDE herunterladen

Die Arduino IDE steht auf verschiedenen Websites zum Download bereit. Direkt von den Entwicklern lässt sich die Software hier herunterladen. Es wird um eine Unterstützung der Entwickler gebeten, die Software kann aber auch kostenlos heruntergeladen werden. Die Installation gestaltet sich dann so wie bei vergleichbaren Computerprogrammen.

Einrichten des Programms für unsere Bedürfnisse

Mit der Arduino IDE können grundsätzlich viele verschiedene Arten von Mikrocontrollern programmiert werden. Daher müssen wir zuerst einmal den NodeMCU als unser bevorzugtes Board einrichten. Das müssen wir nur beim ersten Mal tun, danach ist das vom Programm gespeichert und wir können sofort mit der Programmierung starten.

  1. In der oberen Leiste „Datei“ anklicken, dann „Voreinstellungen“

    Schritt 1

  2. Hier den folgenden Link in das Feld „Zusätzliche Boardverwalter-URLs“ eintragen:
    http://arduino.esp8266.com/stable/package_esp8266com_index.json 

    Schritt 2

    Mit „OK“ bestätigen.

  3. Jetzt in der oberen Leiste „Werkzeuge“ anklicken, dann auf „Board“ und „Boardverwalter“.

    Schritt 3

  4. Es erscheint jetzt ein neues Fenster, in die obige Suchleiste jetzt „ESP8266“ eingeben und das erscheinende Paket installieren.

    Schritt 4

  5. Zuletzt müssen wir nur noch das Board auswählen: „Werkzeuge“, „Board“, „ESP8266 Boards“, „NodeMCU 0.9 (ESP-12 Module)“

    Schritt 5

  6. Geschafft! Jetzt können wir unseren Mikrocontroller programmieren. Solange ihr die Arduino IDE nicht deinstalliert, müsst ihr diese Schritte auch kein zweites Mal durchlaufen. Das Programm merkt sich jetzt unser verwendetes Modell.

Erster Programmiertest

Bevor wir uns wieder den bunten Steinen zuwenden, solllte noch einmal getestet werden, ob die Einrichtung so weit geklappt hat. Außerdem lässt sich so schon einmal das erste Programm für die Beleuchtung schreiben.

Der Überblick über die Programmierung

Das Programmieren mit der Arduino IDE ist recht simpel. Der Code besteht immer aus zwei Teilen, die schon beim ersten Öffnen angelegt sind.

  1. Im void setup() Teil werden die Voreinstellungen für das Projekt getroffen. Beispielsweise werden hier die verwendeten Ausgänge definiert, an denen LEDs angeschlossen werden.
  2. Der void loop() Teil bezeichnet den eigentlichen Code. Hier können wir beispielsweise bestimmen, welche LEDs an- und welche ausgeschaltet sein sollen. Der Code wiederholt sich dabei solange, bis wir das Board von der Stromquelle trennen. Oder die Powerbank leer ist.

Erstes Programm: LED blinken lassen

Zuerst wollen wir eine einzelne LED blinken lassen. Wir verwenden dabei den selben Aufbau wie in unserem „Beleuchtungstest“, mit dem Unterschied, dass wir das erste Kabel nicht mit einem „3v3“ Ausgang verbinden, sondern mit dem Ausgang „D1“. Das sollte so aussehen:

Jetzt zum Code: Im void setup()-Teil legen wir den Pin D1 als Ausgang fest.


void setup() {
pinMode (D1, OUTPUT);
}
void loop() {
digitalWrite(D1, HIGH);
delay(2000);
digitalWrite(D1, LOW);
delay(2000);
}

Im void loop()-Teil lassen wir die LED zuerst aufleuchten. Dazu schalten wir den Ausgang auf HIGH. Dies geschieht mit dem Befehl digitalWrite();. Dann warten wir zwei Sekunden und schalten die LED aus, den Ausgang also auf LOW. Dann warten wir wieder zwei Sekunden, bevor der Code wieder von vorne beginnt. Wichtig: Die Arduino IDE rechnet in Tausendstelsekunden. Der Befehl delay(2000); sorgt also für eine  Wartezeit von 2000 Tausendstelsekunden oder zwei Sekunden. Den vollständigen Code könnt ihr abtippen oder per Copy und Paste kopieren.

Im Programm sollte das ganze so aussehen:

Jetzt müssen wir nur noch den Code auf unseren Mikrocontoller hochladen, und die blaue LED sollte zu blinken anfangen. Dazu müssen wir ihn mithilfe eines Mikro-USB Kabels an den Computer oder Laptop anschließen. Anschließend muss der „Pfeil-Button“ am oberen linken Rand angeklickt werden. Zuerst muss ein Speicherort für das Programm auf eurem Computer ausgewählt werden, damit ihr auch hinterher wieder auf das Projekt zurückgreifen könnt. Jetzt heißt es etwas Geduld haben, das Übertragen kann etwas Zeit in Anspruch nehmen. Dann sollte es aber klappen und unsere LED leuchten. Falls sie nicht leuchtet: Zuerst wieder die Polarität prüfen: Die LED einmal „umdrehen“ und die Beine in die jeweils andere Buchse stecken.

Zweites Programm: LED Dimmen

Neben einem zeitverzögerten An- und wieder Ausschalten liegt der Vorteil einer programmierten Beleuchtung noch darin, dass auch unterschiedliche Helligkeitsstufen möglich sind. Das ist zum Beispiel bei einem Kamin- oder Lagerfeuer interressant: Das brennt ja auch nicht ununterbrochen auf höchster Stufe. Bevor unsere Minifiguren sich wärmen und /oder Stockbrot backen können, braucht es nur wenige Zeilen zusätzlichen Code. Die obige Schaltung lassen wir völlig unverändert. Statt dem Befehl digitalWrite();, mit dem nur An und Aus möglich ist, verwenden wir jetzt analogWrite();. Hier kann die LED auf Werte von 0 (aus) bis 255 (volle Helligkeit) gesetzt werden. Mit dem folgenden Code wird die LED schrittweise heller und beginnt danach wieder von vorne:

void setup() {
  pinMode(D1, OUTPUT);
}

void loop() {
  analogWrite(D1, 50);
  delay (1000);
  analogWrite(D1, 100);
  delay (1000);
  analogWrite(D1, 150);
  delay (1000);
  analogWrite(D1, 200);
  delay (1000);
  analogWrite(D1, 250);
  delay (1000);
}

Nach dem Kopieren des Programms wieder den Mikrocontroller an den Computer oder Laptop anstecken und per Knopfdruck übertragen.

Ausblick

Damit haben wir unsere ersten zwei kleinen Programme geschrieben. und eine LED zum Blinken gebracht. Was das Programmieren und die Verkabelung angeht, wird es nicht mehr viel anspruchsvoller, wenn euch ein zeitversetztes An- und wieder Ausgehen der Beleuchtung genügt. Darum soll es im nächsten Beitrag gehen. Ich werde das Pariser Restaurant von oben bis unten mit LEDs bestücken und euch den Code vorstellen. im Dachzimmer werden wir ein Kaminfeuer und in der Küche eine Leutstoffröhre mit charakteristischen Einschaltflimmern realisieren.

Ich hoffe euch hat der kleine Ausflug in die Welt der Mikrocontroller heute Spaß gemacht. Ich freue mich schon auf den nächsten Beitrag!

Eure Meinung!

Hat das Übertragen bei euch funktioniert? Welche Lösung habt ihr zum Beleuchten gefunden? Waren meine Anleitungen zu anspruchsvoll oder gut verständlich? Über eure Rückmeldungen in den Kommentaren freue ich mich wie immer sehr.

Johann Härke

Interessiert sich für LEGO Harry Potter, Modular Buildings und Beleuchtung seiner Stadt.

20 Kommentare Kommentar hinzufügen

  1. Johann, ein Wahnsinnsartikel! Falls ich es je versuchen wollen sollte, fühlte ich mich mit Deiner detaillierten Anleitung gut aufgehoben und sicher begleitet. Ganz ganz herzlichen Dank!

  2. Perfektes Timing: Letzte Woche sind die bestellten Teile eingetroffen, es ist Sonntag mit Regenwetter und dann dein Post! Da werd ich mich heute Nachmittag gleich ans Ausprobieren machen und dann berichten, wie deine Anleitung funktioniert hat…
    Gruss Pascal

  3. Super, habe mir jetzt die Teile bestellt und werde damit loslegen, danke 🙂

  4. So cool! Das macht echt Spass! Habe deine Anleitung nun Schritt für Schritt befolgt und bin nur beim Hochladen des Scripts einmal gestolpert. Bei mir war der Port falsch eingestellt. Das Blinklicht wollte meine Beats Kopfhörer ansteuern 🙈. Habs dann gemerkt , diesen umgestellt und anschliessend hat alles problemlos funktioniert. Ich freue mich bereits auf die weiteren „Tutorials“! Hast du einen Tippp, wie ich mich noch mehr in diese Arduino Programmierung einlesen kann (wollte heute am liebsten noch weitertüfteln…)
    Übrigens ist mein Bord mit G anstelle von GND beschriftet. Hat dann aber auch geklappt 😉
    Grosses Kompliment für die 1A-Anleitung und gerne mehr!
    Liebe Grüsse aus der Schweiz
    Pascal

    • Wow, deine Rückmeldung freut mich gerade ungemein, da merke ich doch, dass der Aufwnd sich gelohnt hat. Das mit dem Port habe ich auch schon einmal gelesen. Bei mir am Laptop hat es das Programm immer richtig aufgespielt, egal an welchen USB-Anschluss ich den Microcontroller angeschlossen habe. Dahe habe ich das im Artikel nicht näher beleuchtet, ich dachte das wäre nur ein Ausnahmeproblem. Das mit den Beschriftungen kann natürlich immer mal vorkommen, ich hoffe es gibt da keine größeren Abweichungen. Auf deren Shopseite ist der Aufbau so wie bei meinem abgebildet, daher hatte ich angenommen, dass sich nichts verändert hat. Zu weiteren Anleitungen: Empfehlen kann ich die Sete funduino.de, die Betreiber haben erst hinterher ihren Shop darangehängt. Dort gibt es eine Reihe von Anleitungen zu verschiedenen Projekten, die auch immer sehr gut erklärt sind.

  5. Hy Johann
    Vielen Dank für den Tipp mit den Anleitungen auf Funduino. Ich konnt‘s nicht lassen und hab dein „geteasertes“ Kaminfeuer auch mal ausprobiert. Hmm, wie könnte das funktionieren? 🤔 Zunächst mit ca. 20 verschiedenen Befehlen ‚analogWrite‘ und ‚delay‘ aus dem vorherigen Beispiel rumexperimentiert, was zu einem sehr „berechenbaren“ Feuerchen geführt hat 😂. Dann habe ich natürlich etwas recherchiert und mich bereits ein wenig mit Variablen und ‚random‘ vertraut gemacht… (muss an dieser Stelle ergänzen, dass ich auch schon ein wenig programmiert habe – allerdings noch nie mit Arduino – und mich deshalb einigermassen schnell zurecht finde). Ich bin aber nach wie vor extrem auf die Fortsetzung gespannt. Das Pariser Restaurant ist schon mal entstaubt und wartet nun auf Teil 3 deiner tollen Arbeit!

    • Ja, für das Feuer wollte ich auch ein bisschen mit random arbeiten. Einfache Schleifen sieht man da recht schnell. Freue mich schon drauf, der nächste Teil kommt bald!

    • Hallo Johann, vielen Dank für Deinen Bericht.
      Das Internet und meine Ungeduld haben mich schon so weit fortschreiten lassen das ich den Teil 2 überspringen konnte. Bin aber sehr gespannt auf Teil 3 in dem hoffentlich meine Fragen beantwortet werden die ich bisher über das Netz noch nicht gelöst habe. 9 LED die gleichzeitig unterschiedliche Dinge tun ohne aufeinander zu warten bis der vorhergehende Befehl abgewartet wird… verstehst Du was ich meine?
      Auf jeden Fall ganz vielen Dank für Deine Inspiration und bitte gib Gas mit Teil 3(lach)
      Viele Grüße aus Flensburg
      Sören

  6. Arbeite schon etwas länger mit Arduino.
    Verwende als Board meist den ArduinoNano oder den ArduinoProMini die haben kleinere Abmessungen.
    AZ-Delivery ist dafür eine Quelle mit guten Angeboten (versendet aus Bayern)
    Deine Idee das hier zu veröffentlichen find ich super den es macht die Lego-Modelle einfach noch attraktiver weiter so.

  7. Vielen Dank für diesen interessanten Artikel! Das Thema Beleuchtung interessiert mich schon lange! Und ich suche eben nach einer Möglichkeit meine Modular City optimal zu beleuchten! Insofern noch einmal vielen Dank, Johann! Freue mich schon auf die Fortsetzung!

    Eine Frage an die Redaktion! Wird der Artikel hier auch irgendwo archiviert, damit ich ihn später wieder aufrufen kann? Vielen Dank für eine Info!

    • Der artikel sollte sich über die „Suchen“ Funktion natürlich immer noch finden lassen. Ich kann hier aber noch einmal nachhaken, ob wir die Anleitungen noch etwas besser auffindbar ablegen.

  8. Hallo Johann,
    ich habe mir direkt die benötigten Teile bestellt und ausprobiert. Ich musste allerdings erst noch den Port des ESP8266 von Bluetooth auf USB umstellen. Dank deiner Anleitung hat dann alles weitere super geklappt. Vielen Dank für deine Arbeit! Ich freue mich schon auf die Anleitung für das Pariser Restaurant.

  9. Hi,
    erst einmal vielen Dank für den super Artikel! Genau so etwas habe ich schon länger gesucht, da ich was Elektronik angeht leider ein echter Noob bin. Habe mir die Teile aus eurem Artikel bestellt und bin schon fleißig am rumspielen mit den Teilen.
    Zu dem Mikrocontroller habe ich allerdings eine paar Fragen. Es sind Ausgänge von D0-D8 angegeben. Heißt das ich kann max. 9 LEDs anschließen? Oder gibt es auch eine Möglichkeit die andere Seite des Mikrocontrollers zu benutzen (ich bin mir eigentlich sicher das es gehen muss, ich weiß nur nicht wie :-D)
    Ich glaube ich kann die LEDs mit diesem Mikrocontroller nicht in Reihe schalten, oder? Die Spannung an den Pins beträgt etwas mehr als 3 V, und für 2 LEDs bäruchte ich einen 6 V Ausgang, richtig? Und das kann der Mikrocontroller glaube ich nicht.
    Was mir auch schon aufgefallen ist, wenn ich den Ausgang D4 mit einem Befehl belege, dann fängt die blaue LED am Mikrocontroller durchgehend an zu leuchten, kann man das umgehen, oder sollte man den Ausgang D4 einfach nicht belegen?

    Zu meinem eigentlichen Projekt, ich bin dabei das Ewok Village mit Licht auszustatten, dafür habe ich bereits LEDs in die Fackeln eingesetzt, sodass das Lego Feuer Element von unten beleuchtet wird, sodass es aussieht, als würde das Teil selber leuchten. Insgesamt habe ich 12 LEDs verbaut und versuche gerade alle gleichzeitig zum Leuchten zu bringen. Wenn ich es irgendwann geschafft haben sollte (Mithilfe eurer großartigen Artikel) werde ich euch auch ein paar Bilder schicken 🙂

  10. Moin, wann kommt denn der 3. Teil?

  11. Ou ja! Ich hab das Pariser Restaurant schon lange entstaubt und bereitgestellt (muss wahrscheinlich bald wieder mit dem Staubpinsel dahinter 😉) Freu mich und bin gespannt auf Teil 3!

  12. Hallo Johann,
    kannst du schon absehen, wann es weitergeht? Es liegen alle Teile bereit 😉 Bin schon gespannt, wie du die Beleuchtung im Restaurant gelöst hast. Vor allem die Programmierung von den verschiedenen Lichteffekten.

    • Ja der nächste Teil folgt in den nächsten Tagen. Tut mir leid für die Verzögerung, ich hatte in den letzten wochen viel um ie Ohren und habe es nicht schneller hinbekommen.

  13. Super Artikel. Ich habe mir das „Kevin allein zu Haus“ Set gekauft. Dieses würde ich natürlich gerne beleuchten. Langt mir das Set was du bereits im ersten Artikel vorgeschlagen hast oder bräuchte ich da mehr? Würde halt gerne die außenlichterkette beleuchten. Würde mich über eine Antwort sehr freuen 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.