• Hallo TT-Modellbahner, schön, dass du zu uns gefunden hast.
    Um alle Funktionen nutzen zu können, empfehlen wir dir, dich anzumelden. Denn vieles, was das Board zu bieten hat, ist ausschließlich angemeldeten Nutzern vorbehalten. Du benötigst nur eine gültige E-Mail-Adresse und schon kannst du dich registrieren.
    Deine Mailadresse wird für nichts Anderes verwendet als zur Kommunikation zwischen uns.
    Die Crew des TT-Boardes

Digital Universal-WLAN-Dekoder/Melder fuer Z21 - Entwicklung

PetrOs

Foriker
Beiträge
432
Reaktionen
131 8
Ort
Muenchen
Hallo,

Da ich fuer meine "Parkettbahn" mit Bahnhofsmodulen (https://www.tt-board.de/forum/threads/kompakte-module-fuer-parkettbahn.57390/page-3#post-1151149) komplett Wireless sein will (nur 1 Stromkabel pro Bahnhof) habe ich angefangen, selber ein Digitalgeraet zu entwickeln, der auf Aliexpress-Komponenten basiert maximal 5 Euro kosten darf, und trotzdem Servos und LEDs steuern, und Eigenbau-GBMs (eigentlich jeden Typ der 1/0 mit 1 Leitung pro Gleis) an Rocrail/Z21 zurueckmelden soll. Dabei soll es sehr flexibel ueber Web-Oberflaeche konfigurierbar, und mit I2C Port Extenders auf sehr viele Ports erweiterbar sein.

Normalerweise sind meine Bastelprojekte auf Arduino-Basis, aber hier kann ein VIEL schnelleres Teil vom nutzen sein. Daher habe ich gedacht dass ich einen 1.5 Euro STM32 Board nehme, der einen 72Mhz ARM Cortex A3 Kern hat, und auf einem Brett mit VIELEN Ausgängen drauf ist. Sowas nennt sich STM32 Blue Pill ;) Die STM32 Architektur kenne ich noch aus meinen Quadcopter-Experimenten.

Normalerweise braucht man fuer STM32 spezielle Tools zum programmieren, aber es gibt den Stm32Duino - Bootloader und Libs, die die Nutzung von Arduino-Umgebung und Sprache erlauben. Das ist natuerlich sehr gut. Allerdings muss das Board dafuer vorbereitet sein, und aus der Tuete ist es nicht.

Vorerst, es muss der STM32Duino Bootloader drauf. Normalerweise macht man den mit STLink V2 Programmer drauf (1.5 Euro, ebenso China-Klon). Allerdings, der wollte bei mir nicht, egal was ich versucht habe. Weder mit STLink Tool, noch mit STM32Cube konnte ich die Verbindung herstellen. Daher habe ich einen Ersatz-Weg gefunden - mit FlashLoader und einem FTDI. Nur - ich konnte meinen FTDI nicht finden, keine Ahnung wo der steckt! Da kam mir eine Idee - einen Arduino Nano als FTDI einstellen, wie hier (https://create.arduino.cc/projecthub/PatelDarshil/ways-to-use-arduino-as-usb-to-ttl-converter-475533). Das hat tatsächlich funktioniert, nachdem ich dann TX und RX richtig verbunden habe.

Dann, wenn der Bootloader drauf ist, muss man ja nur den Bluepill mit USB verbinden. Und da kam ein Problem - viele der "Pillen" haben falschen Widerstand R10 drauf, 10k statt 1.5k. Das ist DOOF, da ich kein passendes 1.5k 0603 SMD Widerstand hatte. Allerdings kann man dann einen Widerstand mit 1.8k parallel, zwischen Pin und 3.3V einlöten, dem ich aus einer Kette aus normalen 1.3k und 470 erstellt habe. So kann ich jetzt endlich STMs aus Arduino-Umgebung flashen ;)


Folgende Technische Lösung ist bei mir anvisiert:
STM32. An den Pins hängen Servos, LEDs der Signale, Eingänge der Gleisbesetztmelder.... Dazu ein ESP-01a WLAN-Modul. Die Verbindung mit Z21 wird über WLAN laufen, und zwar nach Roco Z21 Protokoll. Da kann man die ganzen Signale der Z21 (X-Bus, R-Bus, Loconet...) ueber LAN/UDP abonnieren und absenden. Eine Library dazu gibt es für Arduino und ESP8266 Prozessoren, sollte aber einfach an die STM anzupassen sein. Als Informatiker sollte ich es wenigstens können ;)
 
So, kurz mal update dazu.

Es gab ja bereits ein Framework, der es fast alles kann. Es ist der https://littleyoda.github.io/littleyoda-DCC-Decoder-DOC/#
Es läuft allerdings auf ESP8266, und konnte noch keine Rückmeldung, sonst aber alles. Also, habe ich mich mit dem Entwickler kurzgeschlossen, und als Contributor in das Projekt eingestiegen. Auch meine anvisierte Plattform habe ich auf ESP8266 bzw. ESP32 gewechselt, einige WeMOS D1 R2 und NodeMCU ESP-12E hatte ich da. Soeben habe ich die Rückmeldung von Pins über LAN_LOCONET_OVER_LAN umgesetzt, getestet und als Pull Request bei dem Projekt auf GitHub eingesteuert.

Da ich keine passenden Port Extender habe, dafür aber massenweise Arduino Pro Mini/Nano/Uno/Mega, werde ich diese kurzerhand ebenso in I2C Port Extender umfunktionieren. Es gibt schon passende Libraries dazu, die aber kein Servo-Write haben. Werde ich
 
Oha. da hatte einer Langeweile und C++ :) Ich bin ja mal auf das Endergebnis gespannt. Lustig war's, in LittleYodas Forum alle die alten Bekannten aus den WLAN-Gartenbahnprojektforen wiederzulesen.
 
Ich mache jetzt offiziell Microcontrollerprogrammierung IoT Weiterbildung :) Alle Kundenprojekte stehen Coronabedingt still, also Weiterbildung in Eigenregie ist angesagt
 
Zurück
Oben