Angefangen hat das Scannen von S88 Modulen mit den Ar­duino Boards Uno und Nano. Das habe ich in mei­nem Blog „S88 Scanner mit Arduino“ be­schrieben. Mit dem PC (Roc­rail) wurde zu­nächst noch über USB mit dem Littfinski HSI 88 Protokoll kom­mu­ni­ziert.

Als der Umbau meines Hosenträgers auf WLAN mit Z21 Protokoll anstand, wurde der vor­han­dene Ar­duino Uno und große Teile der Software weiter­verwendet und der bestehende Shield mit der S88N Buchse (SJ45) um ein WLAN Modul ESP-01 erweitert.

Arduino Uno mit Shield, RJ45/S88N-Buchse und ESP8266-01

Die Komponente S88 Scanner ist aus zwei Teilen aufgebaut. Der eigentliche Scanner ist ein Ar­dui­no Uno, der mithilfe der Arduino Bi­blio­thek FlexiTimer2 die S88 Signale CLOCK, LOAD und RESET erzeugt. Über den PIN 2 werden die S88 DATA eingelesen und in einen Buffer ge­packt. Nach einem ersten Durch­gang (n x 16 Clocks) werden die Daten über USB zum PC übertragen.

ESP 8266-01 als Schnittstelle zum WLAN

Der Arduino überträgt die S88 Da­ten seriell auf einen ESP 8266-01, der sie unter Ver­wen­dung des Z21 Ethernet Protokolls auf das Gate­­way (auf die Bridge) weiter­leitet. Vom Gate­way kom­men über WLAN und Z21 Ether­net Pro­to­koll die An­fra­gen zum ESP. Sie gehen von dort seriell in den Ar­­dui­­no. Z21 An­fra­gen, wie zum Bei­spiel LAN_RMBUS_GET_DATA wer­den kor­rekt be­­ant­­wor­tet und auch der Broad­cast Me­­cha­­nis­­mus funk­tio­niert wie im Protokoll be­­schrie­­­ben. Ist also das ent­spre­chende RM-Bus-Broad­cast-Flag ge­setzt, werden alle Ver­­än­­de­­run­­gen am S88 Bus auto­ma­tisch ge­mel­det.

Der ESP8266-01 ist auf einem Loch­ras­ter Shield auf­ge­baut. (2-rei­hige, 8-po­lige Buch­­­se). Da der ESP8266-01 keinen USB­-Port hat, ist zum La­den des Sket­ches ein FTDI232 USB-Adapter er­for­­der­­lich, der den Shield und dem WLAN Mo­dul auch mit 3,3 V ver­sorgt. Eine Steck­­brücke zwi­schen GPIO2 und GND ist zum Laden der Soft­ware er­forderlich. Für den normalen Betrieb wird die Steck­brücke ent­­fernt. Der FTDI232 Baustein fin­det auf einer 6-poligen Buch­sen­leiste Platz und kann nach dem Laden der Soft­ware ent­fernt wer­­den. Der Code kann auch mit einer DEBUG Op­tion kompi­liert wer­den, was aber den nor­ma­len Betrieb – wegen der seriellen Über­tra­gung – ausschließt.

Die serielle Übertragung verwendet eine Bi­blio­thek „PacketSerial“ von https://github.com/bakercp/PacketSerial.

In der Z21 Variante ist die Ein­ste­llung der An­­zahl der S88 Mo­dule noch nicht mög­lich. Der Code nimmt immer 10 16-Bit S88 Mo­du­le an.

10 Module bedeutet 160 Bit Feedback und dürfte für die meisten An­lagen mehr als reichen. Diese Ein­schrän­kung ist auf die Roco Phy­sik mit dem RMBUS und maximal 20 8-Bit RM-Mo­du­len 10787 zu­rück­zuführen. Der S88 Scanner kann min­des­tens 32 Module ab­arbeiten, aber lei­der nur 10 davon mit dem Z21 Pro­to­koll LAN_RMBUS_DATACHANGED wei­ter­­geben.

Der S88 Scanner in der hier be­schrie­be­nen Form funk­tio­nier­te pro­blem­los, hatte aber den Nach­­­teil, dass die serielle Schnitt­stelle für die Kom­­mu­ni­ka­tion mit dem ESP-01 ver­wen­det wird und nicht zeit­­gleich auch für den seriellen Moni­tor der Ar­dui­no IDE verwendet werden kann. Außerdem gab es zu viele Schnitt­stel­len, 2 Programme und einen relativ kom­pli­zier­ten Auf­bau. Deswe­gen fasste ich den Plan, den Scanner auf eine ESP32 Ent­­wick­­lungs­platt­form komplett neu aufzu­set­zen. Bei der Ent­wicklung der Software gab es diverse Heraus­forderungen:

1.   Ticker Biblothek

Der S88 Scanner sollte auf ein ESP32 De­velop­ment Board umgesetzt werden. An­stel­le der Arduino Bi­bliothek „FlexiTimer2“ sollte die ESP32-Ticker Bibliothek Verwen­dung finden. Die Soft­ware lief ei­gent­­lich auf An­­hieb, aber mir fielen irgend­wann „S88 Geister­mel­dun­gen“ auf. Auf dem Oszilloskop waren im S88 CLOCK Signal re­gel­mäßig An­häu­fun­­gen von Impulsen, gefolgt von längeren Pau­sen zu sehen. Re­du­zierung der Modu­le von 10 auf 2 führte zum Ab­sturz des ESP. Zur Lösung des Problems habe ich auf eine hard­ware­­nahe Lösung aus dem FreeRTOS Bereich zurückgegriffen. Ab da war ein stabiler Lauf zu beobachten.

2.   ESP32 Dual Core / Aufteilung auf 2 Kerne

Die Aufteilung des Codes auf 2 Prozessorkerne ver­sprach ebenfalls einen Vorteil. Es machte aber den Code unnötig komplex und war eigentlich bei der erzielten Geschwindigkeit auch gar nicht not­wen­dig. Eine definitive Umstellung auf getrennte Kerne für S88 Ver­ar­beitung und Netzwerk-Kommunikation steht deswegen noch aus . . . .


S88 Scanner für herkömmliche S88 Rückmelder

Das ESP32 Entwicklungsmodul wurde auf einer Platine mit Strom­versorgung, S88N Buchse und 3,3 nach 5V Pegelwandler aufgebaut und unter dem Hosenträger in Betrieb genommen.

S88 Scanner mit ESP32 und CD4501 als Pegelwandler
Der Baustein CD 4501 wandelt die 3,3 V Pegel des ESP32 in 5V oder 7-12V Pegel

Eigenschaften:

  • Verwendet ein preisgünstiges und super­schnel­les ESP32 NodeMCU Ent­wick­lungs­modul.
  • RJ45 Buchse für S88-N für eine störsichere Verkabelung der S88 Module. Wahlweise 5 oder 7 – 12 Versorgungs­spannung der S88 Module.

entweder mit:

  • Roco Z21 Ethernet Protokoll: Bis zu 10 16-Bit S88 Module (ins­gesamt 160 Bit) entsprechend 2 x 10 Roco 10787 RM Module.
  • Verwendet das Roco Z21 LAN_RMBUS_DATACHANGED Tele­gramm
  • Als NextGen Version für den Betrieb mit einem Mediator oder als Ursprungsversion für den Betrieb mit einem Gateway

oder mit:

  • Märklin cs2-Can Protokoll für bis zu 32 16-Bit S88 Module.
  • Verwendet das Märklin Rückmelde-Event mit der CAN-ID 23.
  • Mit UDP für den Betrieb an einer Gleisbox mit CAN2WLAN Bridge oder eine (ältere) Variante mit TCP für den Betrieb an einer CS2.

Protokolle

Zuerst wurde, wie beim Vorgänger mit ESP8266-01, das Z21 Pro­to­koll implementiert. Das er­for­­derte noch ein Gateway, das die Rück­meldungen an einen PC weiterreicht und zugleich dem PC eine Z21 vorspiegelt.

Später wurde auch das Märklin cs2-CAN Proto­koll implementiert, das den Vorteil hat, dass man ohne Gate­way und auch ohne PC aus­kommt.

Die notwendige Konfiguration des Netzwerkes und der wichtigsten Parameter erfolgt bei bei­den Proto­kol­len über ein Web-Interface. Beide Varianten verfügen auch über CV (Konfigu­ra­tions­variablen), die beim cs2-CAN Protokoll in der CS2 und auch im Modell­bahn­steu­erpro­gramm Rocrail gelesen und geschrieben werden können. Bei der Verwendung des Z21 Pro­to­kolls stehen die CVs vorerst nur im Programm Rocrail zum Lesen und Schreiben zur Verfü­gung.

Gespeist wird das Modul wahl­weise mit 5 Volt DC aus einem USB Netzteil, mit 7 – 12 V DC aus einem Steckernetzteil oder über den USB-Port eines PC an USB-Port des ESP32 Node MCU Board. Der S88 Bus kann mit einem Jumper (Steck­brücke) wahlweise mit 5V oder mit 7 – 12 Volt ver­sorgt werden. Ein Pegel­wand­ler sorgt für die Anpassung der 3,3 V Ausgangspegel des ESP 32 an die 5 -12 V Signalpegel auf dem S88 Bus.


Verwendung mit der CS2

Dadurch, dass das digitale Gleissignal der CS2 ver­schie­dene kurze „Aussetzer“ oder Lücken hat, musste zu­­nächst die Scanfrequenz (S88 Clock) herabgesetzt werden, um das Melden die­ser Lücken als S88 Er­eig­nisse zu vermeiden. Da trotzdem bei der Ver­wendung von Stan­dard S88 Masse­meldern jedes Staubkorn auf den Schienen abge­bildet wurde, musste zusätzlich einen Filter eingebaut werden. Durch den Filter werden Besetzt­mel­dun­gen sofort und Frei­mel­dungen verzögert gesendet. So wird durch den Filter die Flutung des Netz­wer­kes mit sinn­losen und wieder­holten Tele­grammen vermieden. Dank des Filters liegt die S88 Clock Fre­quenz nun auch wieder bei ca. 8 kHz, was bedeutet, dass der Scanner zum Einlesen von 496 S88 Ein­gän­gen ca. 67 ms benötigt. Damit werden alle Ein­gänge ca. 15 Mal in der Sekunde aufgefrischt.

Konfiguration des Scanners mit Rocrail

Mein zuletzt gebauter Scanner hat die 1203 als Netzwerk Identifikationsnummer, kurz NID. Wenn man die NID als „Lange Adresse“ in die Program­mier­schnittstelle von Rocrail einträgt, das korrekte Interface zur CS2 eingibt (bei mir rot einge­kringelt „HSI“), PoM und Acc aktiviert, kann man alle CVs im lau­fen­den Be­trieb lesen und schreiben. Der Status des Buttons „PT on“ spielt dabei keine Rolle. Nach jedem Schreiben einer Variablen bootet der Scanner. Das ist aber meistens nach maximal 2 Sekun­den erledigt. So lange muss man Geduld üben, bevor ein weiterer Parameter gelesen oder geschrieben werden kann.

Das Menü „Programmieren“ in Rocrail

Konfiguration des Scanners im Web-Interface

Konfiguration des Scanners für Märklin CS2 im Web-Interface

Der Scanner ist ein WLAN Scanner, der nur über einen WLAN-Router mit der CS2 verbunden wer­den kann. Ich habe mir im Internet einen sehr preisgünstigen TP-Link WR841N besorgt, der für den Zweck ideal geeignet ist.

Zunächst muss der Scanner wissen, wie das WLAN des Routers heißt, das ist die SSID. Damit er sich verbinden kann, braucht er auch das WLAN Passwort. Das sind die beiden ersten Para­meter, die ein­gegeben werden müssen.

Der CS2 wird bevorzugt eine feste IP-Adresse zugewiesen. Einmal legt man die Zuordnung von Mac-ID und IP-Adresse im Router fest.

Bei mir sollte die CS2 immer die 100 an vierter Stelle erhal­ten.

Die Adresse der CS2 kann auch in der CS2 definiert werden. Die MAC-Adresse 00:1B:C5:0C:91:37 wird im Router für die Vergabe der festen Adresse 192.168.20.100 verwendet.

Der nächste Parameter des Web-Interface ist die Anzahl der 16-Bit-S88-Module, die gescannt werden soll. Bis zu 31 Module sind erlaubt (Märklin Link S88 erlaubt ebenfalls 16 Module = 496 Rückmelder pro Bus).

Virtuelle Rückmelder sind „Merker“, dessen Zustand „belegt“ oder „frei“ im Speicher gesetzt wird und so lange bei­behalten wird, bis sie wieder durch eine Weichenfunktion aus Keyboard, Layout oder Memory verändert wird. Nütz­lich, um z. B. festzuhalten, dass ein Gleis belegt ist, auch wenn der physikalische Mel­der prellt oder schon gar nicht mehr belegt meldet. Hier dürfen prinzipiell alle Adressen genutzt werden, die nicht zu physikalischen Meldern gehören. Trägt man eine 0 (Null) ein, gibt es keine vir­tuellen Rückmelder. Die Grundeinstellung ist 313 (CAN2WLAN) oder 513 bei der CS2, weil das die erste Adres­se ist, die nicht von einem physi­ka­li­schen Melder belegt wer­den kann.

Unter Device-ID ist die gewünschte Gerät-Kennung für diesen Scanner anzugeben. Märklin verwendet für die Gerät-Kennung fol­gen­den Mechanismus:

  • Die cs2 sendet einen „Rundruf“ oder „Ping“ aus, den alle Kom­po­nen­ten, die am CAN Bus oder am Ether­net hän­gen, beantworten müssen.
  • Jedes Gerät antwortet mit seiner Seriennummer und einige Anga­ben zum Typ und Ver­sions­­nummer des Gerätes. Zum Teil ist die Serien­num­mer die hexadezimale Dar­stellung von 3 ASCII-Zei­chen und einer laufenden Num­mer im Bereich von 1 – 255. Ein LinkS88 mel­det sich beispielsweise mit 0x53383811. Das sind die HEX Codes für die Zeichen „S“, „8“, „8“ und die hexadezimale Zahl 11 (17 dezimal). Der Gerätetype wird gemeldet mit 0x40 (64 dezi­mal). Die CS2 vergibt dem Gerät daraufhin eine Gerät-Ken­nung. Wenn sie denn noch frei ist, wäre das in unserem Beispiel die 17 aus der Seriennummer. Im Setup-Menü der CS2 unter „Geräte“ wür­de angezeigt werden: „LinkS88(17)“ mit 17 als Gerät-Kennung. Die Gerät-Kennung kann man hier mit der Nummer eines Vor­gän­gergerätes überschreiben.
  • Der S88 WLAN Scanner für die CS2 beantwortet den Ping mit „0x52383806“ (R88 06), Versionsstand 1.1 und Gerätetyp 0x40 (ich kenne leider keine anderen Gerätetypen). Im Gerätemenü wird mein WLAN Scanner nun mit LinkS88(6) und Gerät-Kennung 6 angezeigt.
Der S88 Scanner wurde akzeptiert und als LinkS88(6) angelegt

Man kan das Gerät nun bearbeiten:

Das Gerät wurde Markiert. Kennung und Nickname können bearbeitet werden.
Das Gerät S88 WLAN Scanner wurde bearbeitet. Es hat jetzt den Nicknamen „WLAN“ und die Gerät-Kennung 1

Die CS2 speichert das Gerät mit Nicknamen und neuer Gerät-Ken­nung dauerhaft und sollte es mal nicht mit dem WLAN ver­bun­den sein oder nicht versorgt werden, wird der Eintrag in der Tabelle rot angezeigt.

Für Gerät-Kennung wurde hier im Beispiel die 1 einge­tra­gen.

Das aktuelle „Problem“ dabei ist, dass die Bereiche der Rück­mel­de­adres­sen für diesen Scanner in der CS2 nach dem Schema des Ori­gi­nal LinkS88 organisiert sind:

  • Es gibt die Adressen 1 – 16. (Beim LinkS88 die 16 Klemmen). Gerät-Kennung 1, Bus 0, Adressen 1 – 16. Gerade mal genug für ein einziges S88 Modul.
  • Der zweite Bereich geht von 101 bis 164. Das sind eine Art virtuelle Rückmelder, die durch eine 8 x 8 Matrix­ver­knüp­fung im LinkS88 der Ein­gän­ge an der Klemmen 1 – 8 mit den Eingängen 9 – 16 gebildet wer­den. Der WLAN-Scanner kann nicht als Matrix konfiguriert werden. Trotz­dem steht dieser Adress­bereich 101- 164 für bis zu 4 16-Bit S88 Module zur Verfügung. Dieser Bereich ist ebenfalls Gerät-Ken­nung 1, Bus 0, Module 1 – 4 – wird aber als Bus 0, mit Angabe der Zeile und der Spalte angezeigt.
  • Von 1001 bis 1512, 2001 bis 2512 und von 3001 bis 3512 stehen weitere Adressbereiche für Gerät-Kennung 1, Busse 1 – 3 und Module 1 – 32.

Letztendlich habe ich eine Konfigurationsdatei erstellt, die im „Info“ Bereich der CS2 die kom­plette Konfiguration des S88 Scanners zur Verfügung stellt. Man kann aus 3 Bussen wählen. Der gewählte Bus stellt bis zu 512 Rückmelder zur Verfügung. Mit einem Schieber kann man festlegen, wie viel Module der gewählte Bus einscannt.

Im Moment wird der Scanner als „LinkS88“ angemeldet. Ich verwende dazu eine fiktive Serien­nummer „R88 06“ bzw. in Hex 0x52383806 und eine fiktive Katalognummer 61883GC mit Ver­sion 1.0. Angemeldet wird der Scanner mit Auswahltext „Scan S88 #6“. Der Scanner er­scheint zuerst als LinkS88 (6) mit Gerät-Ken­nung 6 bei den Auto­matik-Geräten. Nach Editieren des Eintrags und Hinzufügen eines Nicknames (WLAN Scan­ner) erscheint das Gerät nun mit der Gerät-Kennung 1 bei den Automatik-Ge­rä­ten.

Das neue „Gerät“ mit dem Kenner 1 und „Artikelnummer“ 61883GC emuliert den Bus 1 mit bis zu 512 Rückmeldern. Es wurden 2 s88 Module angemeldet.

Theoretisch kann man im Info-Bereich alle weiteren Parameter definieren oder die Definition der Eigen­schaften komplett anders gestalten. Ausgehend vom Beispiel LinkS88 war das hier gezeigte Menü mit relativ wenig Auswand zu realisieren.

Die CS2 meldet jede Veränderung der Parameter. Damit könnte die Einstellung die­ser Werte im Web-In­terface entfallen und die Konfiguration fast komplett in der CS2 voll­zogen werden. Es ist auch denkbar, beide Konfigurationsschnittstellen parallel zu be­nut­zen. Was im Web-Interface bleibt, und bleiben muss, ist die Einstellung von Router-SSID und Pass­word.


S88 Scanner mit Z21 Ethernet Protokoll

Dieselbe ESP32 Hardware, aber mit Firmware für das Z21 Protokoll war bei mir bis vor kurzem unter dem Hosenträger im Einsatz. Sie kommunizierte über WLAN mit einem Gateway und von da über WLAN mit dem WLAN-Router und mit meinem PC, wo die Modell­bahn­soft­ware die S88 Rückmelder auswertete. Konfiguration des Scanners erfolgte über Web-Interface und bei der Verwendung von Rocrail über die POM Schnittstelle für Zubehördecoder. Der Nachteil dieser an sich guten Losung war und ist die Begren­zung des ESP8266 Gateways an seinem WLAN AP (Access Point) maximal 8 Clients (andere Rück­mel­de­module und Ak­to­ren) betreiben zu können.

Die Konfiguration über Web-Interface war im Vergleich zu der Variante für die CS2 etwas umständlich, da man sich dafür in den Access-Point des Scanners (WLAN mit der SSID APXXXX) einloggen musste. Der S88-Scanner verwendet aus dem Protokoll die Meldung für die RM-Bus 10787 Module. Roco hat die Verwen­dung von 20 solcher 8-Bit RM-Bus-Module vorgesehen, sodass der Scanner von 32 möglichen Modulen und 512 Bits nur die ersten 10 16-Bit Module, sprich 160 Bit melden kann.


NextGen Firmware

Bei mir habe ich die Original Firmware der ersten Generation durch eine Firmware der nächsten Gene­ra­tion abgelöst. Sie weist gegenüber der ersten Version einige gra­vie­rende Vorteile auf:

  • Keine Begrenzung auf 8 Sensorknoten an einem Gateway.
  • Die Reichweite ist die Reichweite des verwendeten WLAN Netzes, nicht die Reichweite des ESP32 Access-Points. Die räumliche Ausdehnung des WLAN-Netzes und damit der Modellbahn kann mit Repeatern fast beliebig vergrößert werden.
  • Nur die erstmalige Netzwerk-Konfiguration bei einem neuen ESP Board und frisch gela­de­ner Firmware verwendet noch den Access Point des Sensors („APXXXX“).
  • Die Access Points der Sensorknoten werden bei erfolgreicher Verbindung mit dem Router abge­schal­tet.
  • Die Konfiguration über Web-Interface ist jederzeit möglich. Zugriff über die normale Netz­werk­-Adresse im Modellbahnnetzwerk oder je nach PC Konfiguration auch über den Host­na­men „APXXXX“.
  • Einfachere leicht verständliche Konfiguration, die auf dem Smartphone genauso aussieht, wie auf dem PC
  • Firmware Updates mittels „OTA“ (Over The Air = kabellos über das WLAN)

Hier die Screenshots der S88 Scanner-Konfiguration :

Vom Hauptmenü aus kann man die WLAN-Parameter oder
die CVs bearbeiten. Unter Information sieht man die aktuelle
Konfiguration und Eigenschaften der Hard- und Software.
Sobald SSID und Passwort bekannt sind, kann sich der
Scanner direkt mit dem Router verbinden und kann der
Zugriff über die Netzwerkadresse oder Hostnamen
erfolgen. Der Access-Point mit dem SSID Namen AP3300
wird abgeschaltet. Der Name AP3300 bleibt aber als
Hostnamen erhalten.
Für den Scanner braucht es nur wenige CVs. Über CV8 kann die Hardware auf Defaults zurückgestellt werden. CV7 ist nur Lesen.
Für den Scanner braucht es nur wenige CVs. Über CV8 kann
die Hardware auf Defaults zurückgestellt werden. CV7 ist
nur Lesen.
Übersicht aller Hard-und Software-Eigenschaften des S88 Scanners (nur lesen)
Übersicht aller Hard- und Software-Eigenschaften des S88 Scanners (nur lesen)

S88 Scanner mit Märklin CAN Protokoll für die MS2/Gleisbox-Kombi­na­tion als Zentrale

Damit aus der Gleisbox mit der MS2 eine Zentrale wird, die man an einer Modell­bahn­steuer­soft­ware betreiben kann, muss sie auch Rückmeldungen verar­beiten können. Die Rückmel­dungen kön­nen aus einzelnen WLAN Rück­mel­demo­dulen wie dem 2-(4-)Bit-WLAN-Rück­melder, dem 8-Bit-WLAN-Rück­melder oder dem RMEM2xI Rückmeldebaustein in der Gleis­bettung be­stehen, sie können aber auch mit herkömmlichen S88 Mo­dulen und dem hier beschriebenen S88-Scan­ner ins System eingelesen werden. Damit die CAN2WLAN Bridge, die in der Gleisbox eingebaut ist, die Rückmeldun­gen ähnlich wie eine CS2 „broadcasten“ kann, habe ich wieder das UDP Protokoll verwendet. (Rückmeldungen werden im System an alle Knoten wie PCs, Tablets und andere WLAN Knoten verteilt, ohne explizit jeden Knoten anzusprechen).

Da auch hier das Märklin CAN Protokoll zur Anwendung kommt, aber nur über UDP statt TCP trans­por­tiert wird, müsste der S88 Scanner auch mit einer CS2 zusammenarbeiten, was ich mangels CS2 aktuell leider nicht probieren kann.

Hauptmenü des S88 Scanners
Hauptmerkmale des WiFi Netzwerk-Menüs
sind Eingabe von SSID und Passwort, sowie
die Adressen der CAN2WLAN Bridge und
des PC. Neu ist die Möglichkeit, dem Modul
einen eigenen Hostnamen zu verpassen.
Menü zur Konfiguration des Scanners. Alle
Parameter (CV) werden mit einer Mouse-Over-
Kontexthilfe beschrieben.
Die Übersicht aller Informationen des
Scanners bietet auch eine Echtzeitanzeige
eines aus­ge­wählten Moduls.
Hier im Screenshot wird das 1. S88 Modul
mit den Rückmeldern 1 – 16 angezeigt.

Bei der letzten Software-Version V1.05 kann die Firmware des Scanners mit einem Web-Interface aktualisiert werden. Gibt es eine neuere Version als 1.05, dann kann die Binärdatei hier von der Webseite runtergeladen werden und mit Hilfe der Konfigurationsseite in den ESP32 hochgeladen werden.

Menü für den Web-Update
Mit „Datei auswählen“ wird das Binärfile von
der Festplatte des PCs geladen. Mit dem
Button „Update“ wird es in den ESP32
hochgeladen und der Fortschrittsbalken
zeigt den aktuellen Stand beim Hochladen
an. Werden die 100% erreicht, startet der
ESP neu und man sollte mit F5 den Brow­ser zum Aktualisieren der ange­zeigten Web­seite zwingen.
Der Scanner aktualisiert seine eigene Firmware.

Es ist leider immer noch so, dass die Firmware beim allerersten Flashen über USB-Kabel aufgespielt werden muss. Erst danach stehen OTA und Web-Update zur Verfügung.


Hardware

Die Schaltung wurde in Eagle gezeichnet.

Die verschiedenen Firmware Pakete für den ESP32 Scanner
Firmware für den S88 Scanner „NextGen“ mit Z21 Protokoll (V1.03 vom 09.07.2023)
Firmware für den ESP32 S88 Scanner an Märklin CS2 (nur zum Testen/Diskussion)
Firmware für den S88 Scanner an Gleisbox/MS2 (V1.04 vom 2.1.2024)

Aufspielen der Firmware:

Für die Entwicklung der Firmware kam bei mir die Arduino IDE zum Einsatz. Mit dieser Ent­wick­lungs­um­ge­bung wurden die .bin Dateien der obigen Tabelle erzeugt. Diese .bin Dateien kann man relativ einfach auf ein ESP32 Entwick­lungs­modul übertragen, ohne dass man über die Arduino IDE und/oder den Quell­code verfügt. Ich habe die Übertra­gung mit dem „flash_download_tool_3.9.5“ der Firma Expressif getestet.

Beim Start dieser Software fragt sie zuerst welcher Chip (ESP8266, ESP32) programmiert wer­den soll. Mit dem „Workmode“ „Develop“ wird ein einzelnes Modul programmiert, also der Nor­mal­­fall. Nach einem Klick auf „OK“ wird die Hauptmaske angezeigt:

In der obersten Zeile wird der Pfad zu der gewünschten
.bin Datei eingetragen. Die wird ab der Adresse 0x10000 in
den Speicher übertragen. Alle anderen Einstellungen sind
Standard. Mit „START“ wird die Übertragung gestartet.
Meldet die Software sich fertig, dann muss auf dem ESP32
Entwicklungsmodul noch ein mal die Resettaste gedrückt
werden, um die Firmware zu starten.

Falls Sie gerade ein neues Modul ge­flasht haben, kennt es noch nicht die WLAN SSID und das Passwort des Mo­dell­bahnrouters. Das Modul spannt des­wegen ein eigenes WLAN mit dem Namen APXXXX auf. Mit dem Smart­phone oder mit einem PC können Sie sich in dieses WLAN einloggen (Pass­word NWKONFIG) und die erforderlichen Netzwerkeinstellungen vornehmen. Der Scanner startet daraufhin neu und ver­bindet sich mit ihrem Netzwerk und dem Mediator, bzw. mit der CS2 oder der Bridge in der Gleisbox. Die restlichen Parameter sind selbster­klä­rend.


OTA

OTA ist in allen Firmwarepaketen imple­men­tiert. Leider ist es die Vari­ante, die mit der Arduino IDE funk­tioniert. Die nächste Er­wei­terung V1.05 des Scanner Projektes beinhaltet einen OTA Update über Web­server.


© 2020 – 2024 Gerard Clemens – Letzte Aktualisierung 14.02.2024