# Rewire Checklist This is a practical rebuild checklist for the current integrated setup: - `Arduino Mega 2560` - `ESP32` running `gauge.py` - `HV5812P` - 4-digit VFD with decimal point and alarm bell - 3 gauge drivers - WS2812B LED chain Use this to rebuild the bench wiring from scratch. ## 1. Power Off Everything - disconnect all power supplies - disconnect USB power if it is currently feeding any board - do not move wires while the VFD high-voltage supply is live ## 2. Place The Main Parts - place the `Arduino Mega 2560` - place the `ESP32` - place the `HV5812P` - place the 3 gauge driver boards - place the WS2812B strip connection point - place the VFD tube connection point ## 3. Establish A Common Ground First Before anything else, create one common logic ground network. Connect: - `Mega GND` -> ground rail - `ESP32 GND` -> same ground rail - `HV5812P GND` -> same ground rail - `Gauge driver 0 logic GND` -> same ground rail - `Gauge driver 1 logic GND` -> same ground rail - `Gauge driver 2 logic GND` -> same ground rail - `WS2812B GND` -> same ground rail If your VFD high-voltage supply has a ground/reference return: - `VFD HV supply return` -> same common ground rail Do not continue until this common ground is in place. ## 4. Wire The Arduino Mega Power Connect: - regulated `5V logic supply` -> `Mega 5V` - ground rail -> `Mega GND` Do not use the Mega to power motors. ## 5. Wire The ESP32 Power Power the ESP32 in the way your board expects. Typical options: - via board USB - via board `5V/VIN` if your ESP32 board has its own regulator - via regulated `3.3V` if it is a bare module that requires that Also connect: - `ESP32 GND` -> common ground rail Do not feed raw `5V` into a bare `3.3V-only` ESP32 module. ## 6. Wire The ESP32 UART To The Mega Connect: - `ESP32 GPIO17 (TX)` -> `Mega pin 19 (RX1)` - `ESP32 GPIO16 (RX)` <- `Mega pin 18 (TX1)` - `ESP32 GND` -> `Mega GND` This UART link is used by `gauge.py`. ## 7. Wire The HV5812P Logic Side Connect: - `Mega D46` -> `HV5812P DATA IN / DIN` - `Mega D47` -> `HV5812P CLOCK / CLK` - `Mega D48` -> `HV5812P STROBE / LATCH` - `Mega D49` -> `HV5812P BLANKING / OE` - `Mega 5V` -> `HV5812P VDD` - `Mega GND` -> `HV5812P GND` Do not connect: - `Mega 5V` -> `HV5812P VPP` ## 8. Wire The HV5812P High-Voltage Side Connect: - `VFD high-voltage positive supply` -> `HV5812P VPP` - `VFD high-voltage supply return / reference` -> common ground rail At this stage: - `VDD` must be `5V` - `VPP` must be your VFD high-voltage rail ## 9. Wire The HV5812P Outputs To The VFD Connect these one by one: - `HVOut1` -> VFD segment `A` - `HVOut2` -> VFD segment `B` - `HVOut3` -> VFD segment `C` - `HVOut4` -> VFD segment `D` - `HVOut5` -> VFD segment `E` - `HVOut6` -> VFD segment `F` - `HVOut7` -> VFD segment `G` - `HVOut8` -> VFD decimal point segment - `HVOut9` -> VFD alarm bell segment - `HVOut10` -> VFD digit 1 grid - `HVOut11` -> VFD digit 2 grid - `HVOut12` -> VFD digit 3 grid - `HVOut13` -> VFD digit 4 grid - `HVOut14` -> VFD indicator grid between digits 2 and 3 ## 10. Wire The VFD Filament Wire the VFD filament/heater exactly as required by your tube. This checklist cannot specify the exact filament supply because it depends on the actual tube. Required reminder: - do not power the filament from an Arduino GPIO - use the correct filament supply for the tube ## 11. Wire Gauge Driver 0 Connect: - `Mega D50` -> `Gauge driver 0 DIR` - `Mega D51` -> `Gauge driver 0 STEP` - `Mega GND` -> `Gauge driver 0 logic GND` Then connect the motor side of that driver to: - its motor power supply - its gauge motor according to the driver board you are using. ## 12. Wire Gauge Driver 1 Connect: - `Mega D8` -> `Gauge driver 1 DIR` - `Mega D9` -> `Gauge driver 1 STEP` - `Mega GND` -> `Gauge driver 1 logic GND` Then connect the motor side of that driver to: - its motor power supply - its gauge motor according to the driver board you are using. ## 13. Wire Gauge Driver 2 Connect: - `Mega D52` -> `Gauge driver 2 DIR` - `Mega D53` -> `Gauge driver 2 STEP` - `Mega GND` -> `Gauge driver 2 logic GND` Then connect the motor side of that driver to: - its motor power supply - its gauge motor according to the driver board you are using. ## 14. Wire The WS2812 LEDs Connect: - `Mega D22` -> main backlight/status strip `DIN` - `Mega D36` -> indicator strip `DIN` - `5V LED supply` -> both strip `5V` inputs - both strip `GND` inputs -> common ground rail If the LED chain is long or bright: - do not power it from the Mega `5V` - use a proper external `5V` supply ## 15. Verify The Pins That Changed For The Integrated VFD The VFD is no longer on the old standalone pins. Old standalone pins: - `D51` -> DATA - `D52` -> CLOCK - `D53` -> STROBE - `D49` -> BLANK Current integrated pins: - `D46` -> DATA - `D47` -> CLOCK - `D48` -> STROBE - `D49` -> BLANK So make sure: - nothing VFD-related is still on `D51` - nothing VFD-related is still on `D52` - nothing VFD-related is still on `D53` - only `BLANK/OE` remains on `D49` ## 16. Sanity Check Before Powering Logic Check each item physically: - `Mega D46` really goes to `HV5812 DATA` - `Mega D47` really goes to `HV5812 CLOCK` - `Mega D48` really goes to `HV5812 STROBE` - `Mega D49` really goes to `HV5812 BLANKING` - `Mega D50/D51` only go to gauge driver 0 - `Mega D8/D9` only go to gauge driver 1 - `Mega D52/D53` only go to gauge driver 2 - `Mega D22` only goes to WS2812B `DIN` - `ESP32 GPIO17` goes to `Mega RX1` - `ESP32 GPIO16` goes to `Mega TX1` - all grounds are common - `HV5812 VDD` is `5V` - `HV5812 VPP` is high voltage, not `5V` ## 17. Power Logic Only First Apply only logic power first: - Mega power - ESP32 power - HV5812 `VDD` - WS2812 `5V` Leave motor supply and VFD high voltage off for the first check if possible. Verify: - Mega boots - ESP32 boots - UART communication works ## 18. Power The VFD High Voltage Now apply the VFD high-voltage supply to `HV5812 VPP`. Verify: - `VDD` remains `5V` - `VPP` is the expected high voltage - no logic wire is heating ## 19. Power The Gauge Drivers Now apply motor power to the gauge drivers. Verify: - no driver fault LEDs - no motor heating or runaway movement immediately on power-up ## 20. First Functional Test Test in this order: 1. confirm the ESP32 can talk to the Mega 2. send `VFD 8888` 3. send `VFD DEAD.!` 4. test one gauge movement from Home Assistant or MQTT 5. test one LED output ## 21. If Something Is Wrong Use this triage order: 1. check grounds 2. check `VDD` and `VPP` 3. check Mega pin number mistakes 4. check crossed UART lines 5. check that the VFD is still on `46/47/48/49`, not `51/52/53/49` ## 22. Quick Reference ### Mega pins in use - `D8` -> gauge 1 DIR - `D9` -> gauge 1 STEP - `D22` -> WS2812 DIN - `D46` -> HV5812 DATA - `D47` -> HV5812 CLOCK - `D48` -> HV5812 STROBE - `D49` -> HV5812 BLANKING - `D50` -> gauge 0 DIR - `D51` -> gauge 0 STEP - `D52` -> gauge 2 DIR - `D53` -> gauge 2 STEP - `D18` -> UART TX1 to ESP32 RX - `D19` -> UART RX1 from ESP32 TX ### VFD outputs - `HVOut1..7` -> `A..G` - `HVOut8` -> decimal point - `HVOut9` -> alarm bell - `HVOut10..13` -> digit grids 1..4 - `HVOut14` -> indicator grid