Der neue DBT-03 Emulator

In letzter Zeit wurde der Raspberry PI basierte DBT-03 Emulator fertig.

Jetzt ist man nicht mehr auf wackliges WLAN angewiesen. Man kann jetzt im Prinzip sogar die Serversoftware direkt auf dem GerĂ€t ausfĂŒhren.

Das Projekt findet man auf Github https://github.com/bildschirmtext/rpi-dbt03 Platinen kann man im 3-er Pack von Aisler fertigen lassen. https://aisler.net/p/KISJVUNX0 Falls jemand mehr davon fertigen lÀsst wÀre ein Austauschprogramm nett.

Die Schaltung hat jetzt auch Optokoppler drin, so dass das Terminal potentialfrei angebunden werden kann. In der Schaltung ist aber ein 1 Megaohm Widerstand um statische Aufladungen abzuleiten.

Der Mikrocontroller ein ATMega8L wird ĂŒber SPI angesprochen. Im Prinzip empfĂ€ngt der Befehlt vom Raspberry PI und antwortet darauf. Der ATMega wickelt den UART zum Terminal in Software ab. DafĂŒr lĂ€uft mit 1200 Hz eine ISR. Die selbe ISR erzeugt auch die ganzen Töne. Das Protokoll ist im Repository dokumentiert. Einzelne Details muss man da aber noch aktualisieren. Im Repository ist auch die Firmware drin, inklusive einem Makefile welches auch gleich den Mikrocontroller flasht. Dazu ist es aber meistens notwendig in /etc/avrdude.conf die Geschwindigkeit des verwendeten „Linux-SPI“ Programmers zu reduzieren. Unprogrammierte ATMegas laufen nur mit 1 MHz ĂŒber den internen RC-Oszillator weshalb die Programmierung langsamer laufen muss. SpĂ€ter geht das dann auch schneller.

Pinout der DBT-03 Buchse (mÀnnlich)

DIN-Steckverbinder haben ein Problem, sie sind spiegelsymmetrisch. Leider sind viele dieser Steckverbinder nicht durchnummeriert was die Nutzung relativ schwierig macht.

Allerdings haben wir hier einen Vorteil. Die ED-Leitung hat meistens einen Pull-Up Widerstand Richtung 5V. Somit kann man bei eingeschalteten Dekoder 5V an dieser Leitung messen. Damit das nicht jeder immer wieder machen muss, und da ich das jetzt eh gerade machen muss, hier die Belegung als Bild.

Ausblick auf den neuen DBT-03 Adapter

Der Prototyp des Adapters

Nachdem wir auf dem 36c3 festgestellt haben, dass die ESP32-Module quasi gar nicht im Congress-WLAN funktionieren, kam der Entschluss das man eine verkabelte Lösung braucht.

Der momentane Ansatz sieht wie folgt an. An einen Raspberry Pi wird per SPI ein ATMega 8 angebunden, welcher dann per Optokoppler an das Terminal angebunden wird.

Die Idee ist wie folgt. Wir brauchen um ein DBT-03 zu emulieren nicht nur 1200/75 asynchrone Daten, sondern auch noch einige Signale, die ein UART nicht liefern kann. Zum Beispiel einen 440 Hz und einen 1700 Hz Ton, sowie einige Gleichspannungspegel.

Die naheliegende Lösung ist es einen Timer so einzustellen, dass er mit einer fĂŒr das Signal passenden Frequenz Interrupts feuert und man dann den Rest in Software macht. So wurde das scheinbar auch in einigen Terminals realisiert. (z.Bsp Loewe Multitel)

SPI deshalb, weil der UART bei einigen Raspberry Pi-Modellen nicht zuverlĂ€ssig funktioniert. Außerdem kann man dadurch auch den ATMega direkt programmieren. avrdude gibs auch auf den Raspberry Pi und das sollte auch direkt so den Controller flashen können, völlig unabhĂ€ngig von eventuellen Bootloadern.

Der Prototyp ist noch ein wenig kostenoptimiert auf einer möglichst kleinen Platine. NatĂŒrlich kann man das auch auf eine Europlatine packen um das dann in ein original DBT-03 GehĂ€use zu packen. Dann wĂŒrde man zweckmĂ€ĂŸigerweise auch gleich einen Schaltregler fĂŒr die Spannungsversorgung einbauen, oder gar auf Power over Ethernet zugreifen.

Der momentane Stand dieses Projekts ist jetzt auch auf github unter https://github.com/bildschirmtext/rpi-dbt03

BTX-Seiten anlegen

Hier ist mal ein StĂŒck Doku dazu wie man in der BTX-Serversoftware von Michael Steil Seiten anlegen kann. https://github.com/bildschirmtext/bildschirmtext

Im Unterverzeichnis data finden sich weitere Unterverzeichnisse. Seiten werden etwas merkwĂŒrdig adressiert. Existiert eine Seite unter data/123/456a.cept, so kann diese als *123456# aufgerufen werden. Die Seite a muss immer existieren, weitere Folgeseiten haben dann b, c usw im Dateinamen.

Jede Seite benötigt 2 Dateien. Die .cept-Datei enthĂ€lt die rohen CEPT-Dateien. Die .meta-Datei enthĂ€lt Metainformationen wie VerknĂŒpfungen, Anbieterkennungen oder Farbpaletten. Eine a.glob-Datei in einem Verzeichnis kann hier auch Werte vorbelegen.

Wie man das ESP32 DBT03 Projekt zum Laufen bekommt

ZunÀchst benötigt man das ESP-IDF Framework. Wie man das installiert wird hier erklÀrt: https://docs.espressif.com/projects/esp-idf/en/latest/get-started/linux-setup.html

Es ist wichtig, dass man die Umgebungsvariablen setzt wie in Punkt 4 erklÀrt.

Ist das Framework installiert so holt man sich den Quellcode von hier: https://github.com/bildschirmtext/esp32_dbt03

Mit make menuconfig kann man die Einstellungen der Umgebung anpassen. Dort ist zum Beispiel unter „Serial flasher config“ der serielle Port auszuwĂ€hlen. (hĂ€ufig /dev/ttyUSB0, kann aber auch was anderes sein. Einfach mal ls /dev/ttyUSB* eingeben, mal mit und mal ohne eingesteckten Programmer und sehen welches dazu kommt)

Im Prinzip muss man dann nur noch make ausfĂŒhren welches am Ende ausgibt welchen Befehl man zum Flashen eingeben soll.

Wenn das GerĂ€t keine WLAN-Verbindung aufbauen kann, wartet es auf die Eingabe von 1. Gibt man das ein, so bekommt man ein MenĂŒ in dem man die Einstellungen bezĂŒglich des WLANs und der TCP/IP Verbindung zum Server.