

Sulari 170V
Open-source Nixie clock project. Gerbers, BOM and firmware.
- Size
- 252.9 × 55 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 78
- Nets
- 130
- Pads
- 423
- Tracks, vias
- 1,068, 189
- Pours
- 551
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 28 May 2024
- Updated
- 3 Oct 2026
Overview
Sulari 170V is an open-source printed circuit board by antsakur, from the antsakur/nixie-clock repository on GitHub. It is a 2-layer board of 252.9 × 55 mm with 78 parts on 130 nets, routed with 1,068 tracks and 189 vias.
It is built around the ESP32-C6-DEVKITC-1-N8, LT3757AEMSE#PBF and TPIC6B595N, with the 1N4148WSF, BSC059N04LS6 and VS-3EMH06-M3 among its other parts. Its parts include 24 resistors, 23 capacitors, 9 ICs, 8 connectors and 2 diodes. It belongs with the lEDs and displays boards and the ESP32 and RISC-V boards of this library.
Main components
6ESP32-C6-DEVKITC-1-N8
-- WiFi Modules ROHSEspressif SystemsWiFi ModulesLT3757AEMSE#PBF
MSOP-10-EP-40℃~+125℃@(TJ) 1 1MHz 2.9V~40V Boost Boost、SEPIC、Flyback、Inverting External No MSOP-10-EP DC-DC Converters ROHSAnalog DevicesDC-DC ConvertersTPIC6B595N
PDIP-20-40℃~+125℃ 1 4.5V~5.5V 8 Asynchronous clear function、Output enable Open-drain Serial-to-Serial or Parallel TPIC PDIP-20 Shift Registers ROHSTexas InstrumentsShift Registers1N4148WSF
SOD-323F-55℃~+150℃@(Tj) 1.25V@150mA 100V 250mA 400mW 4A 4ns 500nA@80V Independent SOD-323F Switching Diodes ROHSDiodes IncorporatedSwitching DiodesBSC059N04LS6
TDSON-8FL-55℃~+175℃ 1 N-channel 2.3V 21pF 38W 40V 5.9mΩ@10V 59A 830pF 9.4nC@10V TDSON-8FL MOSFETs ROHSInfineon TechnologiesMOSFETsVS-3EMH06-M3
SMA(DO-214AC)-55℃~+175℃ 1 Independent 1.7V@3A 25ns 3A 3uA@600V 50A 600V SMA(DO-214AC) Fast Recovery / High Efficiency Diodes ROHSVishay IntertechnologyFast Recovery / High Efficiency Diodes
README
README.mdNixie clock
ESP-IDF firmware for a four-tube HH:MM nixie clock on an ESP32-C6. The clock gets the time from SNTP over Wi-Fi, drives the tubes through shift registers, and serves a web page for setup and settings.
Contents
What it does
- Shows hours and minutes on four nixie tubes.
- Joins your saved Wi-Fi network and sets the clock from SNTP.
- Opens a setup network when it has no saved network, or when it cannot join.
- Can dim the tubes during night hours, and can turn the high-voltage supply off when nobody is nearby.
- Rolls the digits on a timer to reduce cathode poisoning.
- Crossfades digit changes when that effect is enabled.
Wi-Fi credentials are entered in the browser and stored on the clock.
How to use it
First start
- Power the board from a 5 V supply that can provide 2 A, for example a USB phone charger. A 1 A supply may be insufficient. It opens a setup network named
NixieClock-XXXX. - Join that network and open
http://nixie.local/. If the name does not resolve, openhttp://192.168.4.1/. - Enter your SSID and password, then press Join. Tick Hidden network if the network is not advertised.
- To access the configuration page, disconnect from the
NixieClock-XXXXnetwork, reconnect to your network, and openhttp://nixie.local/again.

Configuration
On your network, http://nixie.local/ opens five menus. Each Save settings button stores that menu on the clock, and the values stay after a reboot.
| Menu | What you can change |
|---|---|
| Display | Fade, cathode-poisoning routine, and random digits |
| Brightness | Day and night levels, night hours, and the transition between them |
| Presence | Idle timeout that turns the tubes off |
| Time | Timezone and daylight saving |
| Network | Connection details, and forgetting the saved network |
Forget current network on the Network page clears the saved credentials and returns the clock to the setup network.
Functionality
The pictures are the pages from a configured clock. The values in them are that clock's saved settings, not the defaults described here.
Display
Clock
The clock normally shows the current time. When fade is enabled, a digit change crossfades from the old digits to the new ones. Fade duration is how long that crossfade takes. The default is 500 ms, and it can be set from 1 ms to 5000 ms. Test fade fades every digit back and forth using the fade duration that is currently set. Show clock returns to the time.
All digits fading. Each tube crossfades to another digit and back, using the current fade duration.
Cathode poisoning prevention routine
A nixie tube lights one cathode, the shaped digit, inside a gas-filled envelope. Metal slowly leaves the lit cathode and can settle on cathodes that stay dark. A clock repeats the same digits for long stretches, so unused digits grow dim, patchy, or fail to light. The routine walks every symbol on each tube so every cathode is lit regularly and that deposit does not build up.
You set the hold time for each digit, the starting offset, the run length, and whether it counts down. Repeat every is how many minutes pass between automatic runs. The default is 5 minutes. Run cathode poisoning prevention routine starts one run immediately.
Cathode poisoning prevention. The tubes walk through every symbol so each cathode is lit.
Random digits
Random digits shows a changing pattern instead of the time. You set the hold time and how long the pattern runs. Run random starts it.
Random digits. The tubes show a changing pattern instead of the time.

Brightness
Tube brightness is controlled with PWM. The brightness number is the PWM duty-cycle, from 0 to 100. The defaults are 80 during the day and 60 at night. Night mode is off by default. When it is on, it runs from a start hour until an end hour and may cross midnight. The default night hours are 23:00 to 07:00. Transition is how many seconds the brightness takes to move between those levels, from 1 to 60. The default is 10 seconds. Test transition runs one change between the day and night levels.
A brightness of 0 turns the high-voltage supply off.
Brightness from full to off. The tubes dim from duty-cycle 100 to 0, then return to 100.

Presence
With the presence sensor enabled, the tubes turn off after the set number of minutes with nobody nearby. The default is 10 minutes. The allowed range is 1 to 240 minutes. Turning the sensor off leaves the tubes on, aside from a zero brightness setting.

Time
Choose a timezone from the built-in list. Zones that observe daylight saving have a Daylight saving checkbox. The page shows the current clock time and the two SNTP servers compiled into the firmware. The defaults are pool.ntp.org and time.google.com.
The list covers UTC, the United Kingdom, Central and Eastern Europe, Finland, Moscow, India, China, Japan, Australia Eastern, and the four continental US zones.

Network
The Network page shows the connected network, assigned IP address, firmware version, MAC address, and uptime. Forget current network erases the saved Wi-Fi credentials and starts the setup network again.

How the hardware works
The clock is two boards. The lower board makes 170 V from the 5 V input and carries the presence sensor. The upper board holds four IN-14 nixie tubes and the shift registers that select their digits. An ESP32-C6 development kit is the controller. It gets the time over Wi-Fi and drives the shift registers, the tube brightness, and the high-voltage enable pin.


The high-voltage wiring can sit at 170 V while the clock is on. Do not touch that circuitry while it is powered.
Tubes
Each IN-14 is a gas-filled tube with one common anode and a separate cathode for every symbol. About 170 V between the anode and a cathode ionizes the gas, and the glow takes the shape of that cathode. After the tube has struck, it keeps glowing at a lower voltage, about 145 V. The tube then looks like a short circuit, so each anode has a 13 kΩ resistor that holds the digit current to a few milliamps.
Each tube has cathodes for digits 0–9 and for a left and a right decimal point.
Shift registers
Six TPIC6B595 shift registers are chained together. Each one has eight open-drain outputs that can pull a cathode to ground. An output that is on lights that cathode. An output that is off leaves it dark. The chain is 48 bits, sent least significant bit first:
| Bits | Tube |
|---|---|
| 47–36 | Hour tens |
| 35–24 | Hour ones |
| 23–12 | Minute tens |
| 11–0 | Minute ones |
Each group of 12 bits is one tube, in this order: left dot, digits 1 through 9, digit 0, right dot.
The controller sends serial data and a clock, then pulses the latch so all six registers update together. Output enable is a PWM signal. Its duty-cycle is the brightness number on the configuration page. The shift registers run from 5 V. Their outputs are clamped so they can sit at the tube voltage when a cathode is off.
High-voltage supply
A flyback converter raises 5 V to 170 V for the tube anodes. An LT3757 controls the switch. The transformer is a Würth 750032051, with a 1:10 turns ratio so the switch duty-cycle stays in a practical range at 200 kHz. A BSC059N04LS6 MOSFET switches the primary. A VS-3EMH06 diode rectifies the secondary. An RCD snubber clamps the voltage spike on the MOSFET when it turns off. The converter is designed for about 20 mA at 170 V, which is enough for the four tubes. One GPIO enables the converter. Turning that pin off removes the anode voltage and the tubes go dark.
Presence sensor
An HLK-LD2420 24 GHz radar module watches for a person nearby. It was chosen instead of a passive infrared sensor because it still sees someone who is sitting still. The clock only uses the module's presence output. A high level means someone is nearby, and a low level means the area is empty. When that output stays empty for the configured number of minutes, the firmware turns the high-voltage supply off.

Build and flash
You need ESP-IDF 6.x. The target is esp32c6.
idf.py set-target esp32c6
idf.py menuconfig # User Configuration: board and SNTP servers
idf.py build
idf.py -p /dev/ttyUSB0 flash monitorIn User Configuration:
- Board selects the DevKit pin map. The default is
ESP32_C6_WROOM_1. - SNTP server and Backup SNTP server are the only time servers the clock uses.
- Initial connection retry count is how many station disconnects to tolerate before giving up on credentials that have not yet received an IP, and before bringing the setup network back after a later disconnect. The default is 5.
Flash through the USB-UART bridge. The commands above use /dev/ttyUSB0.
Supported hardware
| Board | Module | menuconfig |
|---|---|---|
| ESP32-C6-DevKitC-1 | ESP32-C6-WROOM-1 | ESP32_C6_WROOM_1 (default) |
| ESP32-C6-DevKitM-1 | ESP32-C6-MINI-1 | ESP32_C6_MINI_1 |
The firmware also expects:
- Four nixie tubes driven by shift registers (latch, data, and clock).
- A high-voltage supply with an enable pin.
- A PWM output-enable line for tube brightness.
- A presence sensor input.
Choosing the wrong board in menuconfig drives the high-voltage enable and the shift-register pins on the wrong GPIOs. The pin map for both kits is in docs/esp32-c6-devkits.md.
Parts
78| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R18, R19, R20, R21, R22, R23, R24, R25 |
| 7 | 100n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C16, C17, C18, C19, C20, C21, C22 |
| 6 | TPIC6B595 | Package_SO:SOIC-20W_7.5x12.8mm_P1.27mm | U3, U4, U5, U6, U7, U8 |
| 5 | 13K | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R13, R14, R15, R16, R17 |
| 4 | IN-14 | sulari:nixies-us-IN-14-socket | N1, N2, N3, N4 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3, H4 |
| 3 | 10u | Capacitor_SMD:C_1206_3216Metric | C3, C4, C5 |
| 2 | 1u | Capacitor_SMD:C_0805_2012Metric | C6, C7 |
| 2 | 22n | Capacitor_SMD:C_0603_1608Metric | C8, C11 |
| 2 | 47u/25V | Capacitor_THT:CP_Radial_D8.0mm_P3.50mm | C1, C2 |
| 2 | 5K1/1% | Resistor_SMD:R_0805_2012Metric | R10, R11 |
| 2 | 68n/400V | Capacitor_THT:C_Rect_L10.3mm_W5.0mm_P7.50mm_MKS4 | C14, C15 |
| 2 | LOGO | AAsulari:HIGH_VOLTAGE_LOGO | G1, G2 |
| 1 | 0R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R5 |
| 1 | 100n | Capacitor_SMD:C_0603_1608Metric | C12 |
| 1 | 100p | Capacitor_SMD:C_0603_1608Metric | C10 |
| 1 | 10n | Capacitor_SMD:C_0603_1608Metric | C13 |
| 1 | 10n/500V | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C16 |
| 1 | 15K | Resistor_SMD:R_0603_1608Metric | R9 |
| 1 | 1M6 | Resistor_SMD:R_1206_3216Metric | R8 |
| 1 | 1N4148WSF | Diode_SMD:D_SOD-323F | D1 |
| 1 | 20R | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R12 |
| 1 | 22R | Resistor_SMD:R_0603_1608Metric | R7 |
| 1 | 4K7/0.4W | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | 4u7 | Capacitor_SMD:C_0805_2012Metric | C9 |
| 1 | 63K4 | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 6K8 | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | BSC059N04LS6 | AAsulari:PG-TDSON-8-FL | Q1 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J8 |
| 1 | Conn_01x02_Socket | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J5 |
| 1 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J6 |
| 1 | Conn_01x03_Pin | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | J2 |
| 1 | Conn_01x06 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J7 |
| 1 | Conn_01x06_Socket | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J3 |
| 1 | ESP32-C6-DevKitC-1 | AAsulari:ESP32-C6-DevKitC-1 | U2 |
| 1 | HLK-LD2420 | AAsulari:Molex_PicoBlade_53048-0510_1x05_P1.25mm_Horizontal | J4 |
| 1 | L33/0.75W | Resistor_SMD:R_0805_2012Metric | R6 |
| 1 | LT3757AEMSE | Package_SO:MSOP-10-1EP_3x3mm_P0.5mm_EP1.68x1.88mm | U1 |
| 1 | SN74HCT04, 6-ch 5V logic inverter | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U9 |
| 1 | USB_C_Receptacle_PowerOnly_6P | AAsulari:USB_C_Receptacle_GCT_USB4125-xx-x-0190_6P_TopMnt_Horizontal | J1 |
| 1 | VS-3EMH06-M3 | Diode_SMD:D_SMA | D2 |
| 1 | WE_FB_750032051 | AAsulari:WE_FB 750032051 | T1 |
More from antsakur/nixie-clock
1- 2 layers125 × 55 mm

Similar boards
- 2 layers

- 4 layers101.2 × 24 mm

Charger module
mikesmitty/power-manifold
Six-port USB-C power supply: up to 100 W per port from one 24 V supply, with per-port control, priority-based power sharing and Home Assistant support. 100% local, no cloud required.
90 parts3MIT - 4 layers40 × 40 mm

BatteryCharger
BlockWorker/ModularAudio
Compact, modular, versatile, hi-fi audio system concept.
49 parts2 - 4 layers204 × 85 mm

Nixie clock
MG-5/nixie-clock-hardware
Hardware for controlling six Nixie IN-14 tubes as clock (HH:MM:SS)
168 parts2MIT - 4 layers192 × 71.8 mm

Vfd clock
MG-5/vfd-clock-hardware
Hardware for controlling six VFD IV-17 tubes as clock (HH:MM:SS)
130 parts1MIT - 4 layers120 × 93 mm

- 2 layers105.4 × 25.4 mm

Wrist ems 12 electrodes
humancomputerintegration/watchEMS
This repository contains the source code used in the research publication "Can a Smartwatch Move Your Fingers?" from the Human-Computer Integration Lab at the University of Chicago.
131 parts - 2 layers65 × 71.5 mm

Questions
How big is the Sulari 170V PCB?
It measures 252.9 × 55 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Sulari 170V use?
78 parts, built around the ESP32-C6-DEVKITC-1-N8, LT3757AEMSE#PBF, TPIC6B595N and 1N4148WSF. 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 Sulari 170V KiCad files?
From the antsakur/nixie-clock repository on GitHub, at the commit this page was made from: the board is HW/KiCad/Sulari_TOP/Sulari_170V.kicad_pcb and its schematic HW/KiCad/Sulari_BOTTOM/Sulari.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Sulari 170V design in my own project?
Its repository states no licence, so its author keeps all rights: ask antsakur before reusing the design.