# Afficheur Vintage de Caisse Enregistreuse dans une Maison Connectée : Intégration avec ESP8266 et MQTT
Les afficheurs à décharge de gaz vintage provenant de caisses enregistreuses constituent un matériau idéal pour créer des panneaux d'information compacts dans les systèmes de domotique. Cet article détaille l'adaptation de l'afficheur Wincor Nixdorf BA64-2 pour un contrôle via ESP8266 avec synchronisation NTP et intégration d'interface MQTT. Cette solution permet d'afficher des données critiques sans accès permanent à l'interface principale.
Analyse Matérielle et Brochage
L'afficheur Wincor Nixdorf BA64-2 est un indicateur à décharge de gaz à deux lignes (20×2 caractères) dans un boîtier compact. Le principal défi réside dans l'absence de documentation pour le connecteur RJ45 non standard. L'inspection initiale a révélé les caractéristiques suivantes :
- Le connecteur est physiquement compatible Ethernet mais électriquement non conforme
- Il prend en charge deux interfaces : USB et RS232 via un seul connecteur
- Aucune marque de broche dans la fiche technique
Après démontage de l'appareil et analyse de la carte avec un voltmètre, le brochage a été déterminé :
- Broche 1 : +5V (alimentation)
- Broche 4 : GND
- Broches 2-3 : USB Data±
- Broches 6-8 : signaux RS232 (TxD/RxD)
Il est absolument crucial de vérifier les tensions avec un multimètre avant toute connexion, car les adaptateurs standards peuvent endommager l'appareil. Un oscilloscope a confirmé les niveaux RS232 (-7/+7V) sur les broches 6 et 8.
Modification pour Connexion Série TTL Directe
La puce ADM3232E — un convertisseur TTL-RS232 — a été identifiée sur la carte. Son retrait donne accès à l'interface série TTL native, simplifiant l'intégration avec les contrôleurs modernes. Les étapes sont les suivantes :
- Dessouder la puce à l'aide d'un pistolet à air chaud à 350°C
- Nettoyer les pastilles de contact des résidus de soudure
- Identifier les lignes R2out/T2in (canal de transmission principal)
- Souder des fils sur les pastilles : VCC (3.3V), GND, TX, RX
- Fixer les connexions avec de la colle chaude
La connexion série TTL directe élimine le besoin de convertisseurs de niveau. Note : l'afficheur fonctionne en 3.3V, l'alimentation doit donc correspondre. Pour un fonctionnement stable, un délai de 4 ms est requis entre les octets transmis — cela compense la faible vitesse de traitement de l'afficheur.
Exemple de gestion des données :
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;
}
Implémentation Logicielle et Intégration
Le micrologiciel, basé sur le Framework Arduino, implémente trois fonctions clés : connexion Wi-Fi, client MQTT et synchronisation NTP. L'architecture comprend :
- Commutation automatique entre les modes (horloge/message d'info)
- Gestion des séquences d'échappement pour le contrôle du curseur
- Support des caractères UTF-8 (y compris °C)
Composants principaux du code :
#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);
}
}
La synchronisation temporelle est gérée via un serveur NTP local. Au démarrage, le système attend jusqu'à 4 secondes pour l'acquisition de l'heure :
void TimeSetup(){
configTime(0, 0, "ntpserver.home");
int cnt = 4;
while (!time(nullptr) && cnt > 0) {
delay(1000);
cnt--;
}
}
Le mode message d'info se termine automatiquement après 60 secondes, revenant à l'affichage de l'horloge. Cela évite de bloquer l'interface principale.
Application Pratique dans les Systèmes de Domotique
L'intégration de l'afficheur dans les écosystèmes existants répond à deux besoins clés :
- Surveillance en temps réel des paramètres critiques — température de la chaudière, humidité du sous-sol, état des panneaux solaires
- Notifications sans smartphone — messages système (« Fuite de gaz », « Portail ouvert »)
Exemple pour suivre la température :
mosquitto_pub -h localhost -t "ba64/line1" -m "kotel 63.28/55.43\xC2\xB0C"
Le système est évolutif : plusieurs afficheurs peuvent afficher des informations différentes en s'abonnant à des topics spécifiques. Pour étendre les fonctionnalités, modifiez simplement le gestionnaire de messages MQTT pour supporter de nouvelles commandes.
Points Clés
- Vérifications de tension obligatoires : mesurez toutes les broches avant connexion — les adaptateurs standards peuvent endommager l'afficheur.
- Délai de transmission critique : sans delay(4) entre les octets, des pertes de données surviennent en raison des différences de vitesse de traitement.
- Mises à jour OTA indispensables : conservez la possibilité de reflasher sans accès physique à l'appareil.
- Séquences d'échappement : utilisez les codes de contrôle de la fiche technique pour un positionnement précis du curseur.
- Serveur NTP local : les serveurs externes peuvent être indisponibles, perturbant le fonctionnement de l'horloge.
— Editorial Team
Aucun commentaire pour le moment.