WLAN-Belegtmelder

Warum?

Meine Anlage besteht aus 8 Segmenten. Rückmeldungen auf klassische Art bedeuten die Verkabelung eines Bussystems einschließlich Steckern zwischen den Segmenten, bspw. der von meinem Lenz-System vorgegebene RS-Bus.

Die RS-Rückmeldemodule sind relativ teuer, und wenn man in einem Segment nur ein oder zwei Rückmelder braucht, muss man trotzdem den vollen, mindestens 8-kanaligen Rückmeldebaustein bezahlen.

Warum nicht einen Low-Cost - Rückmelebaustein selbst bauen? Die technische Herausforderung reizte mich.

Um nicht verkabeln zu müssen, sollte UDP über WLAN den Rückmeldekanal bilden. Damit sind potenziell zwei Störfaktoren für eine zuverlässige Rückmeldung gegeben: UDP ist kein verlässliches Protokoll und WLAN kann mehr als kabelgebundenes LAN Schwankungen ausgesetzt sein.

Ich habe es trotzdem gemacht. Der (nur für die Bahn verwendete) WLAN-Router steht direkt im Modellbahnkeller und im Praxisbetrieb habe ich noch keine verlorene Rückmeldung erlebt!

Teile

Die benötigten Teile sind im Internet, teilweise aus China, schnell zusammengekauft:

  • PCB-Leiterplatte 5cm x 7cm (Raster 0,27)
  • Stiftleisten m/w (Raster 0,27)
  • Step-Down-Regler LM2596
  • Brückengleichrichter KBL406

und natürlich das Herzstück ESP8266 (als NodeMCU), welcher mit 2,40€ (einschließlich Versand, aus China) den Hauptanteil des Gesamtpreises von ca. 7€ bis 8€ ausmacht bei 7 Rückmeldekanälen - viel günstiger geht es kaum.

Sicherheitshalber erwähne ich noch, dass ich kaum Elektronik-Kenntnisse habe, nur durchschnittlich begabt bin beim Löten, es aber trotzdem hinbekommen habe.

Wichtiger sind Programmierkenntnisse (C++).

Aufbau

Siehe Bild:

  • Links oben kommen die üblichen 16V~ Zubehörspannung hinein und werden über den Brückengleichrichter zum Step-Down-Modul geführt
  • Die dort gelieferten 5V= (Einstellung über blauen Trimmer-Poti) werden am ESP8266 (VIN, GND) eingespeist
  • An seinen 7 verwendbaren Ausgängen (Interruptfähigkeit!) sind dreireihige Pfostenstecker zum Anschluss der Melder (5V, GND, Signal)
    • Reedkontakte werden an GND/Signal,
    • Stromfühler an GND/Signal und
    • Halleffektsensoren an 5V/GND/Signal

angeschlossen.

GND und 5V des Node MCU - Boards sind also entsprechend siebenfach verteilt an zwei der drei Pfostensteckerpins, der dritte (Signal) ist mit dem jeweiligen Eingang D1, D2, ... verbunden.

Alle Verbindungen sind auf der Rückseite als Drahtverbindungen ausgeführt. Schöner wäre natürlich ein professionell geätztes PCB, aber es geht auch so.

Der Micro-USB-Anschluss dient der Programmierung.

Für den Anschluss der Kabel (Stromversorgung, Melder) passen Dupont-Stecker, die ich auf Zwillings-/Drillingslitze gecrimpt habe. Solche Stecker sind im RC-Modellbau (Servos) üblich.

Programmierung

Mit der Arduino-IDE ist das Programm schnell geschrieben.

Allen 7 Eingänge (D1-D4, D5-D7) wird eine Interruptroutine zugewiesen.

Wenn ein Eingang anspricht, wird als Rückmeldung die auf dem Board eingebaute LED zum Blinken gebracht.

Der Eingang D3 kann gleichzeitig über den Taster FLASH angesprochen werden, das ermöglicht einen schnellen Test (die LED blinkt), ob es funktioniert.

Konfiguration

Meine WLAN-SSID und das Passwort sind im Code fest hinterlegt. Die gemeldeten Namen der Rückmelder beginnen mit "P" für Punktmelder (Reed, Halleffektsensor) bzw. "B" für Belegtmelder (Stromfühler), dahinter eine fortlaufende (über alle Boards eindeutige) Nummer.

Das geschieht einfach über ein 7 Elemente langes String-Array {"P1", "P2", "B3", "P4", "B5", "B6", "B7"}

Über UDP wird dann beispielhaft ein Auslösen des Punktmelders 23 mit "P23" oder die Belegung eines Melders 15 mit "B15+" und dessen Freiwerden mit "B15-" gemeldet.