Benutzer-Werkzeuge

Webseiten-Werkzeuge


anleitungen:oled:display-steuerung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
anleitungen:oled:display-steuerung [2025/10/25 17:28] – [Anschluss der Displays] raily74anleitungen:oled:display-steuerung [2025/12/07 15:27] (aktuell) – [Erste Übertragung auf den ESP32] fbstr
Zeile 3: Zeile 3:
  
 Zur alten Anleitung (v2.1): [[display-steuerung_v2.1|zur Vorgängerplatine]] Zur alten Anleitung (v2.1): [[display-steuerung_v2.1|zur Vorgängerplatine]]
- 
-<WRAP round alert 80%> 
-Hier entsteht die Anleitung zur überarbeiteten Display-Steuerung für Zugzielanzeiger in Version v3.\\ 
-Die alte Anleitung ist oben verlinkt. \\ 
-**Die Platine ist in Planung und wird erst nach ausgiebigen Tests veröffentlicht.** 
-</WRAP> 
- 
 ==== Aller guten Dinge sind drei ==== ==== Aller guten Dinge sind drei ====
 Mit der ZZA Steuerung v3 wird aus den einzelnen Komponenten endlich ein vollständiges System. \\ Basierend auf Ideen von Tobias, [[https://www.stummiforum.de/t131472f21-Zugzielanzeiger-f-r-den-Bahnsteig-mit-Arduino-2.html#msg1848960|Klaus,]] und Fredddy entwickelte Hardi 2019 einen optimierten Sketch, mit dem es erstmals möglich war, 0,87“ und 0,91“ Monochrom-Displays per DCC-Befehl zu aktualisieren. \\ Mit der ZZA Steuerung v3 wird aus den einzelnen Komponenten endlich ein vollständiges System. \\ Basierend auf Ideen von Tobias, [[https://www.stummiforum.de/t131472f21-Zugzielanzeiger-f-r-den-Bahnsteig-mit-Arduino-2.html#msg1848960|Klaus,]] und Fredddy entwickelte Hardi 2019 einen optimierten Sketch, mit dem es erstmals möglich war, 0,87“ und 0,91“ Monochrom-Displays per DCC-Befehl zu aktualisieren. \\
Zeile 24: Zeile 17:
 Neu ist auch die Funktion zur Bildung von Display-Gruppen, wodurch mehrere Displays mit nur einem DCC Befehl dasselbe Zugziel empfangen, egal, ob links- oder rechtsseitige Ausrichtung. \\ Was im alten Sketch der Befehl „Vorheriges/Nächstes OLED wählen“ war, wird somit zu „Vorherige/Nächste Gleisgruppe wählen“. Neu ist auch die Funktion zur Bildung von Display-Gruppen, wodurch mehrere Displays mit nur einem DCC Befehl dasselbe Zugziel empfangen, egal, ob links- oder rechtsseitige Ausrichtung. \\ Was im alten Sketch der Befehl „Vorheriges/Nächstes OLED wählen“ war, wird somit zu „Vorherige/Nächste Gleisgruppe wählen“.
  
-==== Aufbau der Platine ====+Gegenüber dem Vorgänger können nun endlich alle vorhandenen OLED-Adapter verwendet werden. Dazu gehören die Display-Adapter (750) in zwei- und vierfacher Ausführung sowie die Kofferplatine (760). 
 + 
 +===== Aufbau der Platine =====
 Zum Aufbau gibt es nicht viel zu sagen. Die Platine ist nahezu komplett vorbestückt. Lediglich 21 Teile müssen gelötet werden und abgesehen von der Richtung kann hier prinzipiell nichts vertauscht werden. \\ Zum Aufbau gibt es nicht viel zu sagen. Die Platine ist nahezu komplett vorbestückt. Lediglich 21 Teile müssen gelötet werden und abgesehen von der Richtung kann hier prinzipiell nichts vertauscht werden. \\
  
Zeile 35: Zeile 30:
 Im Anschluss kann direkt der Optokoppler eingesteckt werden. Hier bitte unbedingt auf korrekte Position von Pin 1 achten. Der Punkt auf dem IC zeigt wie im Bild nach unten links. Im Anschluss kann direkt der Optokoppler eingesteckt werden. Hier bitte unbedingt auf korrekte Position von Pin 1 achten. Der Punkt auf dem IC zeigt wie im Bild nach unten links.
  
-{{:bilder:anleitungen:bauanleitungen:740:740_display-steuerung_v3_parts02.jpg?640x420|}}+{{:bilder:anleitungen:bauanleitungen:740:740_display-steuerung_v3_parts02.jpg?600|}}
  
 **Schritt 3**\\ **Schritt 3**\\
-Die Versorgungsspannung (5V) erfolgt über den grünen Stecker mit 3,5 mm Rastermaß. +Die Versorgungsspannung (5V) erfolgt über den grünen Stecker mit 3,5 mm Rastermaß.\\ 
 +<WRAP round important 60%> 
 +**Achtung:** Die Polarität wurde an den MobaLedLib-Standard angepasst.\\ 
 +Bei der Vorgängerplatine war die Polarität vertauscht.</WRAP> 
  
 {{:bilder:anleitungen:bauanleitungen:740:740_display-steuerung_v3_parts03.jpg?600|}} {{:bilder:anleitungen:bauanleitungen:740:740_display-steuerung_v3_parts03.jpg?600|}}
Zeile 84: Zeile 83:
 Bei Zweifach-Displays können die Leitungen SCL, 3V3 und GND mit Y-Verbindungen aufgeteilt werden. \\ Bei Zweifach-Displays können die Leitungen SCL, 3V3 und GND mit Y-Verbindungen aufgeteilt werden. \\
 So können je Wannenstecker zwei Zweifach-Displays, also vier OLEDs betrieben werden (rot/grün). \\ So können je Wannenstecker zwei Zweifach-Displays, also vier OLEDs betrieben werden (rot/grün). \\
 +\\
  
 === Reihenfolge der Displays === === Reihenfolge der Displays ===
Zeile 126: Zeile 126:
 Das TextMessages Tool unterstützt bei der Eingabe der erforderlichen Daten. Dazu gehören in erster Linie die Zugziele, WLAN- und DCC-Einstellungen sowie die Zuordnung der Displays an die jeweiligen Gleise. Nach der Eingabe in die grafische Oberfläche wandelt das Tool die Daten in die benötigte Arduino-Sprache um.  Das TextMessages Tool unterstützt bei der Eingabe der erforderlichen Daten. Dazu gehören in erster Linie die Zugziele, WLAN- und DCC-Einstellungen sowie die Zuordnung der Displays an die jeweiligen Gleise. Nach der Eingabe in die grafische Oberfläche wandelt das Tool die Daten in die benötigte Arduino-Sprache um. 
  
-Mit dem Tool können mehrere JSON-Dateien angelegt, bearbeitet und exportiert werden. So lassen sich beispielsweise unterschiedliche Ziele je Bahnhof verwalten. Dabei kann der Sketch immer derselbe sein, bei dem lediglich die Text_Messages.h vor dem Upload ersetzt wird. +Mit dem Tool können mehrere JSON-Dateien angelegt, bearbeitet und in den Sketch umgewandelt werden. So lassen sich beispielsweise unterschiedliche Ziele je Bahnhof verwalten. Dabei kann der Sketch immer derselbe sein, bei dem lediglich die Text_Messages.h vor dem Upload ersetzt wird. 
 + 
 +Um das TextMessages Tool nutzen zu können, ist - sofern durch die MobaLedLib noch nicht geschehen - die Installation von Python erforderlich. \\ 
 +=> https://www.python.org/downloads/
  
 **Zugziele**\\ **Zugziele**\\
Zeile 133: Zeile 136:
 Im Reiter Zugziele werden alle gewünschten Ziele je Zuggarnitur definiert. Es empfiehlt sich, die Ziele an eine bestimmte Lokomotive zu binden, da das Steuerungsprogramm (z. B. iTrain) diese Lok abfragen kann. Um einen Überblick der zugeordneten Ziele zu erhalten, kann zu jedem Ziel der Name der jeweiligen Lok hinzugefügt werden. Nach diesem Namen kann man später auch suchen. Es empfiehlt sich, hier die Baureihe einzutragen.  Im Reiter Zugziele werden alle gewünschten Ziele je Zuggarnitur definiert. Es empfiehlt sich, die Ziele an eine bestimmte Lokomotive zu binden, da das Steuerungsprogramm (z. B. iTrain) diese Lok abfragen kann. Um einen Überblick der zugeordneten Ziele zu erhalten, kann zu jedem Ziel der Name der jeweiligen Lok hinzugefügt werden. Nach diesem Namen kann man später auch suchen. Es empfiehlt sich, hier die Baureihe einzutragen. 
  
-Die DCC Adressen werden vom Sketch fortlaufend vergeben. Daher bietet das Tool keine Möglichkeit zur Sortierung der Ziele (z. B. nach Baureihe), da die Neusortierung zu Abweichungen mit der Programmierung im Steuerungsprogramm führen würde. +Die DCC Adressen werden vom Sketch fortlaufend vergeben. Daher bietet das Tool keine Möglichkeit zur Sortierung der Ziele (z. B. nach Baureihe), da die Neusortierung zu Abweichungen mit der Programmierung im Steuerungsprogramm führen würde.
  
 +Die hier einzutragende Adresse für das erste Zugziel richtet sich nach der DCC Startadresse (n), die im Reiter „Einstellungen“ eingetragen wird und der Anzahl der angeschlossenen Gleise. Sie dient als Orientierung und hat keinen Einfluss auf das Programm. 
  
-**Einstellungen**\\+^ Gleise ^ DCC erstes Ziel ^ 
 +| bis zu 2 | n+4 | 
 +| bis zu 4 | n+6 | 
 +| bis zu 6 | n+8 | 
 +| … | | 
 +| bis zu 32 | n+34 | 
 + 
 +**Gleis Zuordnung**\\
 {{:bilder:anleitungen:bauanleitungen:740:zza_app_v4_tab2.png?800|}} {{:bilder:anleitungen:bauanleitungen:740:zza_app_v4_tab2.png?800|}}
 +
 +Der Reiter „Gleis Zuordnung“ ist so aufgebaut, dass er die Gleisgruppen selbst vorgibt. So ist keine Anpassung der Reihenfolge im Sketch mehr erforderlich. Jede Doppelspalte entspricht einem Gleis. Werden mehr als 16 Displays für ein Gleis benötigt, müssen diese in zwei benachbarten Doppelspalten eingetragen werden, damit sie zur selben Gleisgruppe gehören. Dieser Fall ist äußerst selten, weil für das zweite Gleis weniger als die Hälfte aller Displays übrig blieben. Mit der Ausrichtung [L/R] wird angegeben, ob die Gleisnummer links oder rechts im Display erscheinen soll. 
 +
 +Die SDA Anschlüsse werden entsprechend der vorgenommenen Verdrahtung angegeben (siehe „Reihenfolge der Displays“). Für ein vierfaches Doppeldisplay sind das in der Regel zwei Gleise mit jeweils zwei Ausrichtungen. Dieses vierfache Doppeldisplay belegt jeweils eine Reihe zweier Doppelspalten (z. B. SDA 0 und 2 für Gleis 1 L/R und SDA 3 und 1 für Gleis 2 L/R). Die Gleisseite lässt sich für zwei Doppelspalten auch in der Reihenfolge L/R/R/L eintragen, was von der Logik eher dem Aufbau der Adapterplatine (750) entspricht.
 +
 +Zum besseren Verständnis hier ein Beispiel für drei Gleise, die am Empfangsgebäude des Bahnhofs liegen. Gleis 1 wird mit einem doppelseitigen Einzeldisplay bedient, Gleis 2 und 3 werden über ein doppelseitiges Zweifachdisplay bedient. Das Einzeldisplay nutzt nur zwei der vier Anschlüsse des ersten Wannensteckers, das Zweifachdisplay nutzt alle vier Anschlüsse des zweiten Wannensteckers.
 +
 +{{:bilder:anleitungen:bauanleitungen:740:zza_sda-anschluss.jpg?480|}}
 +
 +
 +**Einstellungen**\\
 +{{:bilder:anleitungen:bauanleitungen:740:zza_app_v4_tab3.png?800|}}
  
 Im Reiter Einstellungen werden als erstes die WLAN Zugangsdaten eingegeben, um den Sketch kabellos übertragen zu können. Die erste Übertragung muss selbstverständlich per USB Kabel erfolgen, da die Zugangsdaten noch nicht übermittelt wurden. Da die MobaLedLib nach wie vor die Arduino IDE 1.8.19 voraussetzt, ist es zwingend erforderlich, dass der ESP32 erst nach dem Öffnen der Arduino IDE gestartet wird. Es empfiehlt sich daher, die ZZA Steuerung über ein Relais schaltbar zu machen, sofern man die Übertragung per WLAN nutzen möchte.  Im Reiter Einstellungen werden als erstes die WLAN Zugangsdaten eingegeben, um den Sketch kabellos übertragen zu können. Die erste Übertragung muss selbstverständlich per USB Kabel erfolgen, da die Zugangsdaten noch nicht übermittelt wurden. Da die MobaLedLib nach wie vor die Arduino IDE 1.8.19 voraussetzt, ist es zwingend erforderlich, dass der ESP32 erst nach dem Öffnen der Arduino IDE gestartet wird. Es empfiehlt sich daher, die ZZA Steuerung über ein Relais schaltbar zu machen, sofern man die Übertragung per WLAN nutzen möchte. 
Zeile 148: Zeile 171:
  
 Die Display-Rotation ist standardmäßig aktiviert, weil es zum einen der Ausrichtung auf der Adapterplatine (750) entspricht und zum anderen die schnellste Aktualisierung der Displays gewährleistet. Die Option ist für den Notfall gedacht, wenn das Display versehentlich über Kopf eingebaut wurde. Es wird daher empfohlen, die Ausrichtung der Displays vor dem festen Einbau zu prüfen.  Die Display-Rotation ist standardmäßig aktiviert, weil es zum einen der Ausrichtung auf der Adapterplatine (750) entspricht und zum anderen die schnellste Aktualisierung der Displays gewährleistet. Die Option ist für den Notfall gedacht, wenn das Display versehentlich über Kopf eingebaut wurde. Es wird daher empfohlen, die Ausrichtung der Displays vor dem festen Einbau zu prüfen. 
 + 
  
 +**Umwandeln**\\
 +Sind alle Einstellungen korrekt eingetragen, wandelt man mit dem Button „Umwandeln (.h)“ die Werte in die benötigte „Text_Messages.h“-Datei um und ersetzt diese im Verzeichnis „users/user/documents/Arduino/Zugzielanzeiger“. Die "Text_Messages.h" kann übrigens ohne Bedenken ersetzt werden, da das Programm automatisch ein Backup der letzten 20 Konfigurationen erstellt und die ältesten automatisch löscht. Ist die Arduino IDE in einem der beiden Standard-Verzeichnisse installiert, öffnet das Programm nach erfolgreicher Umwandlung sogar den Sketch in der Arduino IDE. Nach einem kurzen Neustart des ESP32 kann der veränderte Sketch nun per WLAN übertragen werden. 
 +===== Download und Installation des ESP Sketches =====
  
-**Gleis Zuordnung**\\ +<WRAP round box> 
-{{:bilder:anleitungen:bauanleitungen:740:zza_app_v4_tab3.png?800|}}+[[https://github.com/raily74/MobaLedLib/blob/main/OLED/Zugzielanzeiger/Sketch/Zugzielanzeiger.zip|{{:bilder:icons:github-mark.png?nolink&50 |}}]]Der Sketch ist hier zu finden:\\ 
 +https://github.com/raily74/MobaLedLib/blob/main/OLED/Zugzielanzeiger/Sketch/Zugzielanzeiger.zip \\ 
 +</WRAP>
  
-Der Reiter „Gleis Zuordnung“ ist so aufgebaut, dass er die Gleisgruppen selbst vorgibt. So ist keine Anpassung der Reihenfolge im Sketch mehr erforderlich. Jede Doppelspalte entspricht einem Gleis. Werden mehr als 16 Displays für ein Gleis benötigt, müssen diese in zwei benachbarten Doppelspalten eingetragen werden, damit sie zur selben Gleisgruppe gehören. Dieser Fall ist äußerst selten, weil für das zweite Gleis weniger als die Hälfte aller Displays übrig blieben. Mit der Ausrichtung [L/R] wird angegeben, ob die Gleisnummer links oder rechts im Display erscheinen soll. +==== Erste Übertragung auf den ESP32 ====
  
-Die SDA Anschlüsse werden entsprechend der vorgenommenen Verdrahtung angegeben (siehe „Reihenfolge der Displays“). Für ein vierfaches Doppeldisplay sind das in der Regel zwei Gleise mit jeweils zwei AusrichtungenDieses vierfache Doppeldisplay belegt jeweils eine Reihe zweier Doppelspalten (zBSDA 0 und 2 für Gleis 1 L/R und SDA 3 und 1 für Gleis 2 L/R)Die Gleisseite lässt sich für zwei Doppelspalten auch in der Reihenfolge L/R/R/L eintragen, was von der Logik eher dem Aufbau der Adapterplatine (750entspricht. +Es empfiehlt sich, vor dem ersten Übertragen **mindestens** die WLAN-SSID, das WLAN Passwort und den gewünschten ESP-Hostname im Text Messages Tool einzugeben und den Sketch mit diesen Daten **per USB-Kabel** auf den ESP32 zu übertragenNach dem Umwandeln der Eingaben in die "TextMessages.h" öffnet sich auf Wunsch die Arduino IDE. Vor dem ersten Upload auf den ESP32 müssen wie gewohnt über "Werkzeuge > Bibliotheken verwalten..." folgende Bibliotheken installiert werden: 
 +  * SparkFun I2C Mux Arduino Library 
 +  * Streaming 
 +  * U8g2 
 +  * WiFi 
 +  * Arduino_ESP32_OTA 
 +  * NmraDcc (wird bei Installation der MobaLedLib bereits installiert)
  
-**Export**\\ +Nachdem die Bibliotheken installiert wurdenmuss das richtige Board ausgewählt werden, damit die Arduino IDE den Sketch passend für den ESP32 kompilieren kann. \\ 
-Sind alle Einstellungen korrekt eingetragenwandelt man mit dem Button „Exportieren (.h)“ die Werte in die benötigte „Text_Messages.h“-Datei um und ersetzt diese im Verzeichnis „users/user/documents/Arduino/Bahnsteiganzeige_ESP32“. Die "Text_Messages.h" kann übrigens ohne Bedenken ersetzt werden, da das Programm automatisch ein Backup der letzten 20 Konfigurationen erstellt und die ältesten automatisch löscht. Ist die Arduino IDE in einem der beiden Standard-Verzeichnisse installiert, öffnet das Programm nach erfolgreichem Export sogar den Sketch in der Arduino IDE. Nach einem kurzen Neustart des ESP32 kann der veränderte Sketch nun per WLAN übertragen werden.  +Das geht über Werkzeuge > Board > ESP32 Arduino > DOIT ESP32 DEVKIT V1
-===== Download des ESP Sketches =====+
  
-<WRAP round box> +{{:bilder:anleitungen:bauanleitungen:740:esp32_doit_devkit_v1.png?600|}} 
-[[https://github.com/raily74/MobaLedLib/blob/main/OLED/Zugzielanzeiger/Sketch/Bahnsteiganzeige_Michael.zip|{{:bilder:icons:github-mark.png?nolink&50 |}}]]Der Sketch ist hier zu finden:\\ + 
-https://github.com/raily74/MobaLedLib/blob/main/OLED/Zugzielanzeiger/Sketch/Bahnsteiganzeige_Michael.zip \\ + 
-**Platzhalter** +Der erste Upload <wrap em>muss</wrapper USB-Kabel erfolgen, weil der ESP32 die WLAN-Daten noch nicht kennt und sich somit noch nicht im WLAN melden kann. Dazu muss unter "Werkzeuge > Port" der richtige serielle COM-Port eingestellt werden. Ab dem folgenden Upload kann hier dann auch unter Port auch die Netzwerk-Schnittstelle ausgewählt werden. Hier sieht man den ESP32 dann mit dem zuvor angegebenen ESP-Hostname.
-</WRAP>+
  
 +{{:bilder:anleitungen:bauanleitungen:740:esp32_wlan-port.png?510|}}
 ===== Steuerung per DCC ===== ===== Steuerung per DCC =====
 Der größte Clou der Zugzielanzeiger ist die Möglichkeit, den Anzeigentext vom einfahrenden Zug steuern zu lassen. Die Anzahl der benötigten DCC Adressen hängt von der Anzahl der Gleise und der Anzahl der Zugziele ab. Beides zählt der Sketch selbst und erzeugt damit die fortlaufenden Adressen.  Der größte Clou der Zugzielanzeiger ist die Möglichkeit, den Anzeigentext vom einfahrenden Zug steuern zu lassen. Die Anzahl der benötigten DCC Adressen hängt von der Anzahl der Gleise und der Anzahl der Zugziele ab. Beides zählt der Sketch selbst und erzeugt damit die fortlaufenden Adressen. 
Zeile 196: Zeile 230:
 Mit der oben gezeigten Tabelle ist das Erstellen einer Regel ganz einfach. Die Verknüpfung wird hier am Beispiel von iTrain gezeigt. Zur Erstellung einer „Wenn/Dann-Regel“ in anderen Programmen muss deren Anleitung zu Rate gezogen werden. Mit der oben gezeigten Tabelle ist das Erstellen einer Regel ganz einfach. Die Verknüpfung wird hier am Beispiel von iTrain gezeigt. Zur Erstellung einer „Wenn/Dann-Regel“ in anderen Programmen muss deren Anleitung zu Rate gezogen werden.
  
-===Neuen Aspekt* als Zubehör in iTrain definieren===+===== Verwendung im Steuerungsprogramm ===== 
 + 
 +==== iTrain ==== 
 +**Neuen Aspekt* als Zubehör in iTrain definieren**\\
   * Im Zubehöreditor von iTrain (Strg+F8) wird ein neues Zubehör vom Typ "Aspekt" erstellt. Diesem gibt man einen frei wählbaren, sinnvollen Namen (z.B. "ZZA Hauptbahnhof" oder wie im Bild "ZZA0").   * Im Zubehöreditor von iTrain (Strg+F8) wird ein neues Zubehör vom Typ "Aspekt" erstellt. Diesem gibt man einen frei wählbaren, sinnvollen Namen (z.B. "ZZA Hauptbahnhof" oder wie im Bild "ZZA0").
   * Als Adresse wählt man "Bereich (1...N)" und trägt bei 1 die zuvor in der Arduino IDE definierte Adresse "355" und bei N die Adresse 410 ein. Es werden automatisch 56 DCC Adressen reserviert.   * Als Adresse wählt man "Bereich (1...N)" und trägt bei 1 die zuvor in der Arduino IDE definierte Adresse "355" und bei N die Adresse 410 ein. Es werden automatisch 56 DCC Adressen reserviert.
Zeile 205: Zeile 242:
 {{:bilder:anleitungen:bauanleitungen:oled:740:zza_aspekt.png?direct&800|}} {{:bilder:anleitungen:bauanleitungen:oled:740:zza_aspekt.png?direct&800|}}
  
 +**Aktion mit Bedingungen erstellen**\\
 In einer Aktion werden nun die Bedingungen und die Ausführung miteinander verknüpft.  In einer Aktion werden nun die Bedingungen und die Ausführung miteinander verknüpft. 
  
Zeile 229: Zeile 267:
 Hinweise zur Vorgehensweise dieser Programme bitte gern im Forum posten.  Hinweise zur Vorgehensweise dieser Programme bitte gern im Forum posten. 
 </WRAP> </WRAP>
 +
 +
 +==== WinDigipet ====
 +Ich bitte um eure Unterstützung
 +
 +==== Train Controller ====
 +Ich bitte um eure Unterstützung
 +
 +==== RocRail====
 +Ich bitte um eure Unterstützung
  
 ---- ----
Zeile 244: Zeile 292:
 </WRAP> </WRAP>
  
 +===== Schaltplan ===== 
 +{{:bilder:anleitungen:bauanleitungen:740:schaltplan_zza_v3.png?800|}}
anleitungen/oled/display-steuerung.1761413322.txt.gz · Zuletzt geändert: von raily74