# Vintage-Kassendisplay im Smart Home: Integration mit ESP8266 und MQTT
Vintage-Gasentladungsanzeigen aus Kassen eignen sich hervorragend als Material für kompakte Informationspaneele in Smart-Home-Systemen. Dieser Artikel beschreibt die Anpassung des Wincor Nixdorf BA64-2 Displays für die Steuerung über ESP8266 mit NTP-Synchronisation und Integration einer MQTT-Schnittstelle. Die Lösung ermöglicht die Anzeige kritischer wichtiger Daten ohne ständigen Zugriff auf die Hauptoberfläche.
Hardware-Analyse und Pinbelegung
Das Wincor Nixdorf BA64-2 Display ist ein zweizeiliger Gasentladungsindikator (20×2 Zeichen) in einem kompakten Gehäuse. Die größte Herausforderung ist das Fehlen von Dokumentationen für den nicht standardmäßigen RJ45-Stecker. Die erste Inspektion ergab folgende Merkmale:
- Der Stecker ist physisch mit Ethernet kompatibel, aber elektrisch nicht konform
- Unterstützt zwei Schnittstellen: USB und RS232 über einen einzigen Stecker
- Keine Pin-Markierungen im Datenblatt
Nach Demontage des Geräts und Analyse der Platine mit einem Multimeter wurde die Pinbelegung ermittelt:
- Pin 1: +5V (Stromversorgung)
- Pin 4: GND
- Pins 2-3: USB Data±
- Pins 6-8: RS232-Signale (TxD/RxD)
Es ist absolut entscheidend, vor dem Anschluss die Spannungen mit einem Multimeter zu prüfen, da Standardadapter das Gerät beschädigen können. Ein Oszilloskop bestätigte RS232-Pegel (-7/+7V) an den Pins 6 und 8.
Modifikation für direkte TTL-Seriell-Verbindung
Auf der Platine wurde der ADM3232E-Chip – ein TTL-RS232-Wandler – gefunden. Das Entfernen ermöglicht den Zugriff auf die native TTL-Seriell-Schnittstelle und vereinfacht die Integration mit modernen Controllern. Die Schritte sind:
- Chip mit einer Heißluftpistole bei 350°C desolderen
- Kontaktflächen von Lötresten reinigen
- Die Leitungen R2out/T2in identifizieren (Hauptübertragungskanal)
- Drähte an die Pads löten: VCC (3,3V), GND, TX, RX
- Verbindungen mit Heißkleber sichern
Die direkte TTL-Seriell-Verbindung macht Pegelwandler überflüssig. Hinweis: Das Display arbeitet mit 3,3V, daher muss die Versorgung passen. Für stabilen Betrieb ist eine Verzögerung von 4 ms zwischen den übertragenen Bytes erforderlich – das gleicht die niedrige Datenverarbeitungsgeschwindigkeit des Displays aus.
Beispiel für Datenverarbeitung:
bool outs = false;
void outString(char * buf, int length){
if(outs) return;
outs = true;
for(int i=0; i< length; i++){
Serial.write(buf[i]);
delay(4);
}
outs = false;
}
Software-Implementierung und Integration
Die Firmware basiert auf dem Arduino Framework und implementiert drei Schlüsselfunktionen: Wi-Fi-Verbindung, MQTT-Client und NTP-Synchronisation. Die Architektur umfasst:
- Automatischen Wechsel zwischen Modi (Uhr/Infomeldung)
- Behandlung von Escape-Sequenzen für Cursorsteuerung
- UTF-8-Zeichenunterstützung (einschließlich °C)
Wichtige Code-Komponenten:
#define CLEAR_SCREEN "\x1B[2J"
#define LINE1_0 "\x1B[1;0H"
#define INFO_PERIOD 60000
void drawClock(){
time_t dtm = time(nullptr) + 10800; // UTC+3
DateTime now = DateTime(dtm);
char buf[21];
sprintf(buf, "\x1B[1;0H%02d.%02d.%04d %02d:%02d:%02d",
now.day(), now.month(), now.year(),
now.hour(), now.minute(), now.second());
outString(buf, strlen(buf));
}
void msg_callback(char* topic, byte* payload, unsigned int length){
if(!strncmp((char *)payload, "line1 ", 6)){
clock_mode = false;
info_timer = millis();
outString(LINE1_0, strlen(LINE1_0));
outString((char*)&payload[6], length - 6);
}
}
Die Zeitsynchronisation erfolgt über einen lokalen NTP-Server. Beim Start wartet das System bis zu 4 Sekunden auf die Zeiterfassung:
void TimeSetup(){
configTime(0, 0, "ntpserver.home");
int cnt = 4;
while (!time(nullptr) && cnt > 0) {
delay(1000);
cnt--;
}
}
Der Infomeldungsmodus endet automatisch nach 60 Sekunden und kehrt zur Uhranzeige zurück. Das verhindert eine Blockade der Hauptoberfläche.
Praktische Anwendung in Smart-Home-Systemen
Die Integration des Displays in bestehende Ökosysteme deckt zwei zentrale Bedürfnisse ab:
- Echtzeit-Überwachung kritischer Parameter — Kesseltemperatur, Kellerfeuchtigkeit, Solaranlagenstatus
- Benachrichtigungen ohne Smartphone — Systemmeldungen ("Gasleck", "Tor offen")
Beispiel für Temperaturüberwachung:
mosquitto_pub -h localhost -t "ba64/line1" -m "kotel 63.28/55.43\xC2\xB0C"
Das System ist skalierbar: Mehrere Displays können unterschiedliche Informationen anzeigen, indem sie sich an spezifische Topics abonnieren. Um die Funktionalität zu erweitern, muss lediglich der MQTT-Nachrichten-Handler für neue Befehle angepasst werden.
Wichtige Hinweise
- Spannungsprüfungen sind obligatorisch: Alle Pins vor dem Anschluss messen – Standardadapter können das Display beschädigen.
- Übertragungsverzögerung ist entscheidend: Ohne delay(4) zwischen Bytes kommt es zu Datenverlusten aufgrund unterschiedlicher Verarbeitungsgeschwindigkeiten.
- OTA-Updates sind essenziell: Die Möglichkeit zum Reflashen ohne physischen Zugriff beibehalten.
- Escape-Sequenzen: Steuercodes aus dem Datenblatt für präzise Cursorpositionierung verwenden.
- Lokaler NTP-Server: Externe Server können ausfallen und die Uhrfunktion stören.
— Editorial Team
Noch keine Kommentare.