From 142e86118613973c7a291e4d554d3473891e5240 Mon Sep 17 00:00:00 2001 From: "user@node5.net" Date: Mon, 25 Aug 2025 20:45:14 +0200 Subject: VFD clock --- VFD clock/index.md | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 VFD clock/index.md (limited to 'VFD clock/index.md') diff --git a/VFD clock/index.md b/VFD clock/index.md new file mode 100644 index 0000000..56e6546 --- /dev/null +++ b/VFD clock/index.md @@ -0,0 +1,88 @@ +--- +description: "Vacuum fluorescent display with an ESP" +created: 2025-08-21 +--- + +## Resources + +- [WD202 User manual](https://www.touchdynamic.com/wp-content/uploads/2021/06/wd202.pdf) +- [WD202A User manual (contains RJ45 pinout)](https://manualzz.com/doc/html/11817581/digipos-wd-202a-customer-display-user-s-manual) + +![VFD from the front, one line showing a UNIX timestamp and another line showing a human readable datetime](main.webp) + +Got an old VFD from a Point Of Sale device. The kind found in price tally displays in supermarkets. + +It uses RS232 to communicate, +so you need a TTL to RS232 converter for the display to recognise the signal from a micro controller. +Which convents the ESPs from 3.3v logic -> -15 to 15 volt. + +## --> Attribution: oliver@labitat.dk made the hardware awesome <-- + +![](back%20pcb%20full%20view.webp) +![](backside.webp) +![](barrel%20jack.webp) +![](dip%20switches.webp) +![](esp-01%20connection.webp) +![](modules.webp) +![](modules%20top.webp) +![](rj45.webp) + +![](circuit_image.svg) + +[Link to circuit diagram - cirkitdesigner.com](https://app.cirkitdesigner.com/project/05cf3635-211d-451e-8c80-614e9fb4ede3) + +[Link to code git repo](https://git.node5.net/firmware/vfd/) + +```cpp +#include +#include +#include + +Timezone CopenhagenTime; + +void setup() { + Serial.begin(9600); + + Serial.write(0x0C); // Clear display + Serial.print("VFD display\n"); + Serial.print("Starting\n"); + + WiFi.setHostname(HOSTNAME); + WiFi.begin(WIFI_SSID, WIFI_PASSWORD); + + Serial.write(0x0C); // Clear display + Serial.printf("Hostname: %s\n", HOSTNAME); + Serial.printf("Connecting to: %s\n", WIFI_SSID); + while (WiFi.status() != WL_CONNECTED) + { + delay(1000); + Serial.print('.'); + } + + Serial.write(0x0C); // Clear display + Serial.println("Connected, IP address: "); + Serial.println(WiFi.localIP()); + delay(1000); + + waitForSync(); + CopenhagenTime.setLocation("Europe/Copenhagen"); + + Serial.write(0x0C); // Clear display +} + +void loop() { + // Get Unix epoch timestamp + char buffer [3]; + sprintf(buffer,"%03d",ms()); + String milliEpoch = String(now()) + buffer; + Serial.println(milliEpoch); + + delay(50); + // https://github.com/ropg/ezTime#getting-date-and-time + // 16;36;15 Sat 16 Aug 33 + String time_formatted = CopenhagenTime.dateTime("H:i:s D d M"); + Serial.println(time_formatted); + + events(); // Needed to update time continuously +} +``` -- cgit 1.4.1