Skip to the content
2 layers70 × 57 mmVFD MQTT, the printed circuit board in 3D

Control of a VFD in MQTT with an ESP8266 and Discord.

Size
70 × 57 mm
Copper layers
2
Thickness
1.6 mm
Parts
42
Nets
60
Pads
163
Tracks, vias
250, 110
Pours
7
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
30 Aug 2022
Updated
23 Oct 2022

Overview

VFD MQTT is an open-source printed circuit board by Estylos, from the Estylos/VFD-MQTT repository on GitHub, published under the MIT licence. It is a 2-layer board of 70 × 57 mm with 42 parts on 60 nets, routed with 250 tracks and 110 vias.

It is built around the MAX3232ID, CH340C and ESP-12F, with the LM2596S-5.0, DC-005 and ME6211C33M5G-N among its other parts. Its parts include 7 capacitors, 2 ICs, 2 diodes, 2 connectors and 1 resistor. It belongs with the lEDs and displays and home automation and IoT boards and the ESP8266 boards of this library.

Main components

8

README

README.md

VFD MQTT

Control a Vacuum Fluorescent Display (VFD) with an ESP8266 (Wemos D1 Mini programmed with PlatformIO) acting as an MQTT client. A Python script (MQTT client too) allows the integration of Discord and to send messages to the screen.

The display

The VFD is a simple Epson DM-D110 (used mainly with cash registers). It communicates in RS232 and can be powered with a 12V power supply. Its baudrate (and more generally the RS232 configuration) can be adjusted using the DIP switches present on its PCB. Its technical documentation (accessible without too much difficulty on the internet) specifies the different configurations for the different baudrates. In my case I set it to the maximum, ie 115200 baud.

The screen uses Epson's ESC/POS command set (like many non-EPSON VFDs!). Once again, the documentation of the command set is easily found on the internet. Thanks to it, you can control the blanking of the screen, the position of the cursor, the brightness, the code page to use, the scrolling... The characters are sent directly by their number in the Windows-1252 code page (in my configuration; by default it is PC437).

The circuit

RJ45 DM-D110 connectorRS232 signal
1GND
2TX
3RX
4DSR
5DTR
6GND
7VCC
8GND

The VFD is powered at 12V, and its RS232 signals are converted to UART for use with the ESP8266. I chose to connect only the RX line which is the only one necessary for the operation of the screen. We use pin D4 of the WeMos in order to use the 2nd hardware UART link (Serial1) and thus keep the 1st serial link for the monitor. This circuit is easily made on perfboard.

To push this project even further, I made a PCB with everything integrated on it. There is a buck converter for the 12V to 5V power supply, an LDO for the 5V to 3.3V, a CH340C for UART communication (serial monitor and programming), a MAX3232 for the RS-232 driver and the ESP8266 ESP-12F. The design of the ESP8266 / UART part is greatly inspired by the design of the WeMos D1 Mini.

Operating

An MQTT server (mosquitto on a remote server) manages the communication. When the Discord ".write" command with text is sent (not exceeding 40 characters and not containing non-Windows-1252 characters), the special characters in the message are encoded by the Python script with percent encoding (character % followed by the number of the character in the Windows-1252 table). This choice is made because special characters are sent in UTF-8 by default, and can be stored on 1, 2 or 3 bytes, which makes it much more complicated to handle with the ESP8266. The message is published by the python script in the MQTT channel "vfd/message", to which the ESP8266 is subscribed. As soon as a new message is sent, the VFD clears its screen, and the data is processed and displayed byte by byte.

Having chosen MQTT as the messaging protocol allows the screen to be connected to anything. We can imagine a Python scipt that sends Tweets to the screen, or displays the followers of the latest ultra trendy TikTok account (wow!!).

Related projects

Parts

42
QtyValueFootprintReferences
6CPRJ_VFD-MQTT:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC, C, C, C, C, C
6RPRJ_VFD-MQTT:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR, R, R, R, R, R
50.1uPRJ_VFD-MQTT:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC9, C10, C11, C12, C13
2DPRJ_VFD-MQTT:SOD-123FLD, D
1100u_35V_ESRPRJ_VFD-MQTT:CAP_EEHZK1V101XP_D8C6
13.3_OUTPRJ_VFD-MQTT:TestPoint_Pad_D2.0mmTP1
1330u_35V_ESRPRJ_VFD-MQTT:CAP_EEEFP1V331AP_GC5
1470PRJ_VFD-MQTT:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6
15V_JUMPERPRJ_VFD-MQTT:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP1
15V_OUTPRJ_VFD-MQTT:TestPoint_Pad_D2.0mmTP5
168uPRJ_VFD-MQTT:L_SCDS124T-680M-NL1
1CH340CPRJ_VFD-MQTT:SOP-16_3.9x9.9mm_P1.27mmU
1DC-005PRJ_VFD-MQTT:NINIGI_DC-005J2
1ESP-12FPRJ_VFD-MQTT:ESP-12FU
1FusePRJ_VFD-MQTT:Fuse_0805_2012Metric_Pad1.15x1.40mm_HandSolderF
1GPIO2PRJ_VFD-MQTT:TestPoint_Pad_D2.0mmTP4
1LEDPRJ_VFD-MQTT:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD4
1LM2596S-5PRJ_VFD-MQTT:TO-263-5_TabPin3U5
1MAX3232PRJ_VFD-MQTT:SOIC-16_3.9x9.9mm_P1.27mmU6
1ME6211C33M5GPRJ_VFD-MQTT:SOT-23-5_HandSolderingU
1RJ45_ShieldedPRJ_VFD-MQTT:RJ45_Ninigi_GEJ3
1RX0PRJ_VFD-MQTT:TestPoint_Pad_D2.0mmTP2
1RX_VFDPRJ_VFD-MQTT:TestPoint_Pad_D2.0mmTP6
1SK32WAPRJ_VFD-MQTT:SOD-123FLD3
1TX0PRJ_VFD-MQTT:TestPoint_Pad_D2.0mmTP3
1UMH3NTNPRJ_VFD-MQTT:SOT-363_SC-70-6_HandsolderingU
1USB_B_MicroPRJ_VFD-MQTT:USB_Micro-B_Molex-105017-0001J

Similar boards

  • 2 layers58.8 × 63.8 mmJantteri left, the printed circuit board in 3D

    Jantteri left

    OJ2016/pcb-common

    56 parts1
  • 2 layers100 × 100 mmProject One, the printed circuit board in 3D

    Project One

    rajbhardivesh/RF-Hunter-PCB

    206 parts
  • 2 layers45.8 × 60 mmRD Deauther, the printed circuit board in 3D

    RD Deauther

    rdhrobotics/RF-Hunter

    A compact, standalone wireless security research device. Three tools in one — RF jammer, Wi-Fi deauther, and captive portal

    55 parts
  • 2 layers82 × 40 mmEsp av, the printed circuit board in 3D

    Esp av

    smkent/pcb

    PCB designs

    106 partsCC-BY-SA-4.0
  • 4 layers130 × 40 mmPumaTX MB HW00, the printed circuit board in 3D

    PumaTX MB HW00

    PumaFPV/PumaTX

    DIY FPV Remote controller based on the one from the mavic

    121 parts4MIT
  • 2 layers66 × 56 mmFN32ROV XEBook KiCad, the printed circuit board in 3D

    FN32ROV XEBook KiCad

    sideburn/fujinet-xebook-kicad

    KiCad rebuild of the FujiNet FN32ROV SIO adapter, adapted for internal mounting in an XEBook laptop build

    65 partsCERN-OHL-S-2.0

Questions

How big is the VFD MQTT PCB?

It measures 70 × 57 mm and has 2 copper layers, 1.6 mm thick.

What parts does the VFD MQTT use?

42 parts, built around the MAX3232ID, CH340C, ESP-12F and LM2596S-5.0. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the VFD MQTT KiCad files?

From the Estylos/VFD-MQTT repository on GitHub, at the commit this page was made from: the board is KICAD_FILES/VFD-MQTT.kicad_pcb and its schematic KICAD_FILES/VFD-MQTT.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the VFD MQTT design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).