Creating a Real-Time Display Out of a Vacuum Fluorescent Display Unit and an Arduino Nano
See how YouTuber Playful Technology was able to repurpose the VFD unit from an old point-of-sale system for use with an Arduino Nano.
Motivation for using a VFD
If you have ever visited a store, the checkout process almost always involves some kind of point-of-sale system where items are rung up and paid for. The classic, old-school units usually consisted of a cash register and a small mast with display on the top that would show the item which was last scanned and the total price, along with tax. Since these have been phased out across nearly all retail stores in favor of modern LCD screens, Alastair Aitchison of the Playful Technology YouTube channel was motivated to pick up a few before they were scrapped and incorporate them into a project.
How vacuum fluorescent displays work
Vacuum fluorescent displays (VFDs) belong to the class of displays that use a dot-matrix in order to show characters, similar to a character LCD. The primary difference is in how the text is illuminated and controlled, as the module is set inside of a vacuum chamber where a group of phosphors fluoresce when current is applied. One other differentiator is that the voltage required is quite a bit higher compared to other technologies such as LCDs and LEDs.
Communication with the Arduino Nano
Like most other displays, computers wanting to show text or other graphics on the dot-matrix do not directly interface with the pins, but rather send commands to a dedicated IC that translates them into actionable instructions and toggles the pins accordingly. To control the VFD unit, both data and commands are sent via an RS232 serial bus, but this presents an issue because the Arduino Nano can only communicate at transistor-transistor logic (TTL) voltages (5V), not the -15V to 15V required. This challenge is overcome through the use of a MAX232 chip that takes the incoming signals from the Nano and converts them into the appropriate voltages, and likewise for the RS232 port as well.
Displaying some text
The last step to make this work was implementing some code to show text on the screen. Luckily for Aitchison, this Epson unit has ample amounts of information within its datasheet. The Nano begins by initializing a software serial port and sending it example text. Commands such as setting the cursor, initializing the display, and clearing the screen are all sent to the device by writing special values to the UART bus. And finally, text is sent by simply writing the appropriate ASCII values.
To see more about this project, you can view its YouTube video here or go to its repository on GitHub to see the code.