Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Futaba / IBM VFD Cyber Kit

ESP32-S3 + Futaba / IBM 20x2 VFD Customer Display + MAX3232 + Mini 560 Pro + Button + Piezo Speaker

This project turns an IBM / Futaba POS customer VFD display into a standalone ESP32-S3 powered cyber-style terminal.

The default build matches the current wiring diagram and includes only:

  • Futaba / IBM 20x2 VFD display
  • ESP32-S3 Dev Board
  • MAX3232 RS232 ↔ TTL module
  • Mini 560 Pro DC/DC converter, 12V → 5V
  • Momentary button
  • Piezo speaker
  • 12V DC input

Preview

VFD display demo preview

Alternative firmware documentation:


Wiring Diagram

ESP32-S3 VFD wiring diagram


Default Firmware

Default firmware path:

This README documents only the default hardware build and the default firmware template.


Repository Layout

.
├── README.md
├── examples
│   ├── default
│   │   └── default.ino
│   ├── matrix
│   │   └── matrix.ino
│   └── bar
│       └── bar.ino
├── docs
│   ├── matrix.md
│   └── bar.md
└── images
    ├── wiring-diagram.png
    └── preview.gif

Hardware Configuration

Known-good configuration:

MCU:          ESP32-S3
Display:      Futaba / IBM SurePOS 20x2 VFD
Display FRU:  IBM FRU 41D0161 or compatible
Interface:    RS232 through MAX3232
UART:         9600 8N1
Inversion:    OFF
Power input:  12V DC
ESP32 power:  5V from Mini 560 Pro DC/DC converter
Button:       GPIO5 to GND, INPUT_PULLUP
Piezo:        GPIO6 to piezo speaker

Required Components

Component Qty Purpose
Futaba / IBM 20x2 VFD Customer Display 1 Main VFD display
ESP32-S3 Dev Board 1 Main controller
MAX3232 RS232 ↔ TTL module 1 ESP32 UART to RS232 level conversion
Mini 560 Pro DC/DC converter 1 12V → 5V power conversion
12V DC power supply 1 Main power input
Momentary push button 1 User input
Piezo speaker 1 Simple sound output
Wires / connectors Wiring and soldering

No RGB LED module, external audio amplifier, relay module, sensor module, SD module, or other extra components are part of the default build.


Power Wiring

The 12V input is split into two branches:

12V Input + ──→ VFD +12V
12V Input - ──→ VFD GND

12V Input + ──→ Mini 560 Pro IN+
12V Input - ──→ Mini 560 Pro IN-

The Mini 560 Pro powers the ESP32-S3:

Mini 560 Pro OUT+ / 5V ──→ ESP32-S3 5V
Mini 560 Pro OUT- / GND ──→ ESP32-S3 GND

All grounds must be common:

12V Input GND
VFD GND
Mini 560 Pro IN-
Mini 560 Pro OUT-
ESP32-S3 GND
MAX3232 GND
Button GND
Piezo GND

MAX3232 Wiring

The MAX3232 module is used between the ESP32-S3 UART pin and the RS232 input of the VFD.

MAX3232 RS232 Output Side

This side goes to the VFD.

MAX3232 RS232 Output GND ──→ Common GND / VFD GND
MAX3232 RS232 Output ←   ──→ VFD DATA

The other RS232-side pins are not used in the default wiring.

MAX3232 TTL Input Side

This side goes to the ESP32-S3.

MAX3232 TTL Input 3V3 ──→ ESP32-S3 3.3V
MAX3232 TTL Input GND ──→ ESP32-S3 GND
MAX3232 TTL Input ←   ──→ ESP32-S3 GPIO4

The opposite TTL data pin is not used.

Important: do not enable UART inversion in firmware when using MAX3232.


VFD Display Wiring

VFD DATA ──→ MAX3232 RS232 data output
VFD GND  ──→ Common GND
VFD +12V ──→ 12V Input +

UART settings:

Baud rate: 9600
Data bits: 8
Parity:    None
Stop bits: 1
Mode:      8N1
Inversion: OFF

ESP32-S3 Pinout

ESP32-S3 Pin Function
5V Power from Mini 560 Pro OUT+
GND Common ground
3.3V MAX3232 3V3
GPIO4 UART TX to MAX3232
GPIO5 Button signal
GPIO6 Piezo speaker signal

Button Wiring

The button is wired between GPIO5 and GND.

ESP32-S3 GPIO5 ──→ Button signal contact
Button GND contact ──→ Common GND

The firmware uses the internal pull-up resistor:

pinMode(BUTTON_PIN, INPUT_PULLUP);

Button logic:

Released → HIGH
Pressed  → LOW

Piezo Speaker Wiring

The default diagram uses a piezo speaker, not an 8Ω dynamic speaker.

ESP32-S3 GPIO6 ──→ Piezo +
Piezo - ──→ Common GND

A piezo speaker is suitable for simple beeps and 8-bit style tones from tone().

Do not replace the piezo with an 8Ω dynamic speaker directly on GPIO6. If using an 8Ω speaker, add a transistor driver or a small amplifier.


Default Firmware Controls

Default firmware path:

examples/default/default.ino

Controls:

Action Function
1 click Next visual mode
2 clicks Change brightness
3 clicks Sound ON/OFF
Hold Display ON/OFF

Default Firmware Modes

Mode Description
0 Home screen
1 Status / diagnostics
2 Matrix-like symbols + cyber melody
3 Wake-up style messages
4 Access Granted / Access Denied
5 Cyber scanner
6 Glitch terminal
7 Trace route / loading
8 Ticker mode

Brightness Levels

The VFD supports four brightness levels:

0x20 — minimum
0x40 — medium
0x60 — high
0xFF — maximum

Flashing

Arduino IDE

  1. Install Arduino IDE.

  2. Install the ESP32 board package.

  3. Select your ESP32-S3 board.

  4. Open:

    examples/default/default.ino
    
  5. Verify pin constants:

    VFD_TX_PIN = 4
    BUTTON_PIN = 5
    SPEAKER_PIN = 6
  6. Upload the sketch.

PlatformIO

A minimal platformio.ini example:

[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200

Change the board name if your ESP32-S3 board uses a different definition.


First Boot Checklist

Before powering the project:

  1. Verify 12V input polarity.
  2. Adjust Mini 560 Pro output to 5V before connecting the ESP32-S3.
  3. Verify MAX3232 is powered from ESP32-S3 3.3V.
  4. Verify all grounds are common.
  5. Verify VFD DATA goes through MAX3232.
  6. Verify GPIO4, GPIO5, and GPIO6 are not swapped.
  7. Verify the piezo speaker is connected to GPIO6 and GND.

Expected default startup screen:

VFD CYBER KIT
BTN:1/2/3/LONG

Then the default firmware switches to its home/demo mode.


Troubleshooting

Display does not power on

Check:

  • 12V input polarity
  • 12V reaching the VFD +12V pin
  • VFD GND connected to common GND
  • input protection diode / fuse on the VFD board
  • Mini 560 Pro does not replace direct 12V power for the VFD

ESP32-S3 does not power on

Check:

  • Mini 560 Pro IN+ and IN- receive 12V and GND
  • Mini 560 Pro OUT+ is adjusted to 5V
  • Mini 560 Pro OUT- is connected to ESP32-S3 GND
  • ESP32-S3 5V pin receives 5V

Display powers on but shows no text

Check:

  • ESP32-S3 GPIO4 goes to the MAX3232 TTL data input
  • MAX3232 RS232 data output goes to VFD DATA
  • MAX3232 3V3 is connected to ESP32-S3 3.3V
  • MAX3232 GND is connected to common GND
  • UART is 9600 8N1
  • UART inversion is OFF

Garbled characters

Common causes:

  • MAX3232 not used or wired incorrectly
  • wrong MAX3232 side used
  • UART inversion accidentally enabled
  • missing common ground
  • wrong baud rate

Button does not work

Check:

GPIO5 → button → GND
INPUT_PULLUP enabled in firmware

Piezo does not work

Check:

  • GPIO6 is connected to piezo +
  • piezo - is connected to GND
  • soundEnabled is true in firmware
  • the firmware uses tone() on SPEAKER_PIN

Alternative Firmware

The repository also includes optional firmware personalities:

Documentation:


Safety Notes

  • Do not power ESP32-S3 directly from 12V.
  • Do not connect the VFD RS232 data line directly to ESP32 GPIO.
  • Do not enable UART inversion when MAX3232 is used.
  • Always check Mini 560 Pro output voltage before connecting ESP32-S3.
  • A piezo speaker can be used directly for simple tones. An 8Ω dynamic speaker requires a transistor driver or amplifier.

Credits

This project is based on practical reverse-engineering and testing of an IBM/Futaba 20x2 VFD customer display with ESP32-S3 and MAX3232.

About

ESP32-S3 + Futaba / IBM 20x2 VFD Customer Display + MAX3232 + Mini 560 Pro + Button + Piezo Speaker

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors