RailFX Effekte für Modellbahn und Modellbau mit Arduino

RailFX – Effekte für Modellbahn und Modellbau mit Arduino Nano

Das Miniatur-Wunderland in Hamburg hat mich wirklich fasziniert. Natürlich sind die ganzen Züge und Gleise schon genial, aber der wahre Zauber ist der Detailgrad und nicht zuletzt die Beleuchtung und die Effekte, die verbaut sind. Und natürlich wollte ich so etwas mit Arduino nachbauen und euch zur Verfügung stellen. Ich habe dabei besonderen Wert auf Anpassbarkeit und einfaches Nachbauen gelegt. Das System habe ich RailFX getauft, da ich es in Zukunft immer mehr erweitern möchte.

Wir benötigen Ihre Zustimmung um den Inhalt von YouTube laden zu können.

Mit dem Klick auf das Video werden durch den mit uns gemeinsam Verantwortlichen Youtube [Google Ireland Limited, Irland] das Video abgespielt, auf Ihrem Endgerät Skripte geladen, Cookies gespeichert und personenbezogene Daten erfasst. Damit kann Google Aktivitäten im Internet verfolgen und Werbung zielgruppengerecht ausspielen. Es erfolgt eine Datenübermittlung in die USA, diese verfügt über keinen EU-konformen Datenschutz. Weitere Informationen finden Sie hier.

Jmx0O2RpdiBjbGFzcz0mcXVvdDtudi1pZnJhbWUtZW1iZWQmcXVvdDsmZ3Q7Jmx0O2lmcmFtZSB0aXRsZT0mcXVvdDtSYWlsRlggVcyIYmVyYmxpY2sgJm5kYXNoOyBFaW4gRWZmZWt0ZS1TeXN0ZW0gZiZ1dW1sO3IgTW9kZWxsYmFobiB1bmQgTW9kZWxsYmF1JnF1b3Q7IHdpZHRoPSZxdW90OzEyMDAmcXVvdDsgaGVpZ2h0PSZxdW90OzY3NSZxdW90OyBzcmM9JnF1b3Q7aHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMVRhYnJ1RG5JdjA/ZmVhdHVyZT1vZW1iZWQmcXVvdDsgZnJhbWVib3JkZXI9JnF1b3Q7MCZxdW90OyBhbGxvdz0mcXVvdDthY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlJnF1b3Q7IGFsbG93ZnVsbHNjcmVlbiZndDsmbHQ7L2lmcmFtZSZndDsmbHQ7L2RpdiZndDs=

Das System RailFX

Ich habe das RailFX-System so geplant, dass es aus Einzelkomponenten besteht, die über ein zentrales Element, das Control-Modul, eine gemeinsame Uhrzeit erhalten, denn wie auch beim Miniatur-Wunderland soll es bei RailFX nach einer einstellbaren Zeit Tag und Nacht werden. Diese Funktion übernimmt ein kostengünstiges Arduino Nano, das in einstellbarem Intervall eine Zahl von 0 bis 23 an alle Module des Systems sendet. Diese Module nutzen ebenfalls das Arduino Nano als Plattform. Je nach Projekt (z. B. Jahrmarkt, Baustelle, Siedlung, etc.) sind weitere Komponenten integriert. Auch hier habe ich auf Einfachheit und geringe Kosten geachtet, wobei beides bitte in Relation gesehen werden muss. Auch wenn ich versucht habe, die Anwendung so einfach wie möglich zu gestalten, handelt es sich doch um ein Projekt für Menschen mit etwas Erfahrung im Umgang mit Arduino. Dazu empfehle ich mein E-Book »Arduino für Anfänger und Anfängerinnen«. Darin gibt es alle Grundlagen, die man für den Start benötigt.

Control-Modul-Schaltplan

RailFX Control Modul Arduino Modellbahn Modelleisenbahn Schaltplan

Das Control-Modul besteht aus einem Arduino Nano dessen Pin D18 (A4) mit allen anderen Modulen am Pin D18 verbunden ist. (Das grüne Kabel im Bild ist überflüssig.) Darüber hinaus gibt es ein zentrales Netzteil, dass alle Module miteinander verbindet (5V+ und GND).

Control-Modul-Bauteile

Control-Modul-Code

Das Control-Modul verwendet die TM1637Display-Bibliothek. Diese muss erst installiert werden. Gehe dafür im Arduino-Menü auf Sketch>Bibliothek einbinden>Bibliothek verwalten … und suche im Suchfeld nach TM1637. Installiere die aktuelle Version der TM1637 Bibliothek von Avishay Orpaz.

Dieses Programm muss auf das Control-Modul geladen werden. Dazu muss zuerst im Menü der Arduino-Software unter Werkzeuge>Board das Arduino Nano ausgewählt werden. Dann muss man unter Werkzeuge>Prozessor »ATmega328P (Old Bootloader)« und zuletzt unter Werkzeuge>Port den Port auswählen, an dem das Arduino-Nano angeschlossen ist.

/* Code des railFX Control Moduls von StartHardware.org */
#include <TM1637Display.h>

/* ***** ***** Einstellungen ***** ***** ***** *****  ***** ***** ***** *****  ***** ***** ***** ***** */

long theTimeout = 6;  // so viele reale Sekunden sind eine Modellbau-Stunde (Minimum ca. 6)

/* ***** ***** Ab hier beginnt der Programmcode, der nicht angepasst werden muss ***** ***** ***** ***** */

int sendPin = 18;
long theTimer = 0;
int hours = 19;
int minutes = 50;

/* ***** ***** Segment-Anzeige ***** ***** */
#define numberOfSeconds(_time_) ((_time_ / 1000) % 60)
#define numberOfMinutes(_time_) (((_time_ / 1000) / 60) % 60)

/* Control-Modul */

#define NODE_MAX_NUMBER 127
#define PAYLOAD_SIZE 2

int nodePayload[NODE_MAX_NUMBER][PAYLOAD_SIZE];
TM1637Display display(2, 3);                      // Segmentanzeige an D2 und D3

void setup() {
  Serial.begin(115200);
  pinMode(sendPin,OUTPUT);
  // Set brightness
  display.setBrightness(0x0c);
}
void loop() {
  if (theTimer + ((theTimeout)*1000/60) < millis()) {
    theTimer = millis();
    minutes++;
    if (minutes >= 60) {
      hours++;
      minutes = 0;
      if (hours >= 24) hours = 0;
        sendeDaten();
    }


  }

  showTime(hours, minutes);  // Ausgabe auf Segmentanzeige
  delay(10);
}

void sendeDaten() {
  for (int i=0; i<24; i++){
    if (hours>=i) digitalWrite(sendPin, LOW);
    delay(1);  
    digitalWrite(sendPin, HIGH);
    delay(1);
  }
 
}


/* Segmentanzeige */
void showTime(int theHour, int theMinute) {
  display.showNumberDecEx(theMinute, 0, true, 2, 2);
  display.showNumberDecEx(theHour, 0b01000000, true, 2, 0);
}

Im Code kann man nun in der Sektion Einstellungen bestimmen, wie viele Sekunden (theTimeout) in der echten Welt eine Stunde in der Modellbau-Welt entsprechen sollen.

Nach der Einstellung kann man den Code einfach auf das Arduino-Nano übertragen und das war es auch schon.


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs


2 Gedanken zu „RailFX – Effekte für Modellbahn und Modellbau mit Arduino Nano“

Schreibe einen Kommentar

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

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.