# Vintage'owy wyświetlacz kasowy w inteligentnym domu: integracja z ESP8266 i MQTT
Vintage'owe gazowyładowcze wyświetlacze z kasowych terminali to idealny materiał do tworzenia kompaktowych paneli informacyjnych w systemach inteligentnego domu. W tym artykule szczegółowo omówimy adaptację wyświetlacza Wincor Nixdorf BA64-2 do sterowania za pośrednictwem ESP8266 z integracją synchronizacji NTP i interfejsu MQTT. Rozwiązanie pozwala wyświetlać krytycznie ważne dane bez ciągłego dostępu do głównego interfejsu.
Analiza części sprzętowej i pinout
Wyświetlacz Wincor Nixdorf BA64-2 to dwuliniowy gazowyładowczy wskaźnik (20×2 znaki) w kompaktowej obudowie. Kluczowa trudność — brak dokumentacji dla niestandardowego złącza RJ45. Podczas wstępnego badania wykryiono następujące cechy:
- Złącze fizycznie kompatybilne z Ethernet, ale elektrycznie niezgodne ze standardem
- Obsługa dwóch interfejsów: USB i RS232 przez jedno złącze
- Brak oznaczeń styków w datasheet
Po rozbiórce urządzenia i analizie płytki za pomocą woltomierza określono pinout:
- Pin 1: +5V (zasilanie)
- Pin 4: GND
- Piny 2-3: USB Data±
- Piny 6-8: sygnały RS232 (TxD/RxD)
Krytycznie ważne jest sprawdzenie napięć multimetrem przed podłączeniem, ponieważ standardowe adaptery mogą uszkodzić urządzenie. Oscyloskop potwierdził poziomy RS232 (-7/+7V) na pinach 6 i 8.
Modyfikacja dla bezpośredniego podłączenia TTL-Serial
Na płytce znaleziono układ ADM3232E — przetwornik TTL-RS232. Jego usunięcie daje dostęp do natywnego interfejsu TTL-Serial, co ułatwia integrację z nowoczesnymi mikrokontrolerami. Kolejność prac:
- Zdemontuj układ za pomocą hot air przy 350°C
- Oczyść pola kontaktowe z resztek lutu
- Zidentyfikuj linie R2out/T2in (główny kanał transmisji)
- Podłącz przewody do styków: VCC (3.3V), GND, TX, RX
- Utrwal połączenia termoklejem
Bezpośrednie podłączenie do TTL-Serial eliminuje potrzebę konwerterów poziomów. Uwaga: wyświetlacz działa na 3.3V, więc zasilanie musi być zgodne. Dla stabilnej pracy wymagane jest opóźnienie 4 ms między bajtami — to kompensuje niską prędkość przetwarzania danych po stronie wyświetlacza.
Przykład obsługi danych:
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;
}
Implementacja programowa i integracja
Firmware oparty na Arduino Framework realizuje trzy kluczowe funkcje: połączenie Wi-Fi, klient MQTT i synchronizację NTP. Architektura obejmuje:
- Automatyczne przełączanie między trybami (zegar/wiadomość informacyjna)
- Obsługę sekwencji escape do sterowania kursorem
- Wsparcie dla znaków UTF-8 (w tym °C)
Główne komponenty kodu:
#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);
}
}
Synchronizacja czasu odbywa się przez lokalny serwer NTP. Przy starcie system czeka 4 sekundy na uzyskanie czasu:
void TimeSetup(){
configTime(0, 0, "ntpserver.home");
int cnt = 4;
while (!time(nullptr) && cnt > 0) {
delay(1000);
cnt--;
}
}
Tryb wiadomości informacyjnej kończy się automatycznie po 60 sekundach, wracając do wyświetlania zegara. To zapobiega blokadzie głównego interfejsu.
Praktyczne zastosowanie w systemach inteligentnego domu
Integracja wyświetlacza z istniejącymi ekosystemami rozwiązuje dwa zadania:
- Bieżący monitoring kluczowych parametrów — temperatura kotła, wilgotność w piwnicy, status paneli słonecznych
- Powiadomienia bez smartfona — wyświetlanie komunikatów systemowych („Wyciek gazu”, „Brama otwarta”)
Przykład użycia do monitorowania temperatury:
mosquitto_pub -h localhost -t "ba64/line1" -m "kotel 63.28/55.43\xC2\xB0C"
System jest skalowalny: kilka wyświetlaczy może pokazywać różne informacje, subskrybując odpowiednie tematy. Aby rozszerzyć funkcjonalność, wystarczy zmodyfikować obsługę wiadomości MQTT, dodając wsparcie dla nowych poleceń.
Co ważne
- Sprawdzenie napięć obowiązkowe: przed podłączeniem zmierz wszystkie styki — standardowe adaptery mogą uszkodzić wyświetlacz.
- Opóźnienie transmisji kluczowe: bez delay(4) między bajtami dochodzi do utraty danych z powodu różnicy prędkości przetwarzania.
- Aktualizacje OTA — niezbędne: zostaw możliwość przeprogramowania bez fizycznego dostępu do urządzenia.
- Sekwencje escape: używaj kodów sterujących z datasheet do precyzyjnego pozycjonowania kursora.
- Lokalny serwer NTP: zewnętrzne serwery mogą być niedostępne, co zakłóci pracę zegara.
— Editorial Team
Brak komentarzy.