Skip to the content
2 layers252.9 × 55 mmSulari 170V, the printed circuit board in 3D

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

6

README

README.md

Nixie clock

Nixie 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

  1. 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.
  2. Join that network and open http://nixie.local/. If the name does not resolve, open http://192.168.4.1/.
  3. Enter your SSID and password, then press Join. Tick Hidden network if the network is not advertised.
  4. To access the configuration page, disconnect from the NixieClock-XXXX network, reconnect to your network, and open http://nixie.local/ again.

Wi-Fi setup page

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.

MenuWhat you can change
DisplayFade, cathode-poisoning routine, and random digits
BrightnessDay and night levels, night hours, and the transition between them
PresenceIdle timeout that turns the tubes off
TimeTimezone and daylight saving
NetworkConnection 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.

Every digit fading 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 routine 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 Random digits. The tubes show a changing pattern instead of the time.

Display configuration page

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 moving from 100 to 0 and back to 100 Brightness from full to off. The tubes dim from duty-cycle 100 to 0, then return to 100.

Brightness configuration page

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.

Presence configuration page

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.

Time configuration page

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.

Network configuration page

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.

Lower board: 170 V supply, presence sensor, and controller

Upper board: four IN-14 tubes and shift registers

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:

BitsTube
47–36Hour tens
35–24Hour ones
23–12Minute tens
11–0Minute 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.

24 GHz presence sensor

Build and flash

You need ESP-IDF 6.x. The target is esp32c6.

bash
idf.py set-target esp32c6
idf.py menuconfig   # User Configuration: board and SNTP servers
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor

In 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

BoardModulemenuconfig
ESP32-C6-DevKitC-1ESP32-C6-WROOM-1ESP32_C6_WROOM_1 (default)
ESP32-C6-DevKitM-1ESP32-C6-MINI-1ESP32_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
QtyValueFootprintReferences
8100kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR18, R19, R20, R21, R22, R23, R24, R25
7100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC16, C17, C18, C19, C20, C21, C22
6TPIC6B595Package_SO:SOIC-20W_7.5x12.8mm_P1.27mmU3, U4, U5, U6, U7, U8
513KResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR13, R14, R15, R16, R17
4IN-14sulari:nixies-us-IN-14-socketN1, N2, N3, N4
4MountingHoleMountingHole:MountingHole_3.2mm_M3_Pad_ViaH1, H2, H3, H4
310uCapacitor_SMD:C_1206_3216MetricC3, C4, C5
21uCapacitor_SMD:C_0805_2012MetricC6, C7
222nCapacitor_SMD:C_0603_1608MetricC8, C11
247u/25VCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC1, C2
25K1/1%Resistor_SMD:R_0805_2012MetricR10, R11
268n/400VCapacitor_THT:C_Rect_L10.3mm_W5.0mm_P7.50mm_MKS4C14, C15
2LOGOAAsulari:HIGH_VOLTAGE_LOGOG1, G2
10RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5
1100nCapacitor_SMD:C_0603_1608MetricC12
1100pCapacitor_SMD:C_0603_1608MetricC10
110nCapacitor_SMD:C_0603_1608MetricC13
110n/500VCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC16
115KResistor_SMD:R_0603_1608MetricR9
11M6Resistor_SMD:R_1206_3216MetricR8
11N4148WSFDiode_SMD:D_SOD-323FD1
120RResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR12
122RResistor_SMD:R_0603_1608MetricR7
14K7/0.4WResistor_SMD:R_0805_2012MetricR1
14u7Capacitor_SMD:C_0805_2012MetricC9
163K4Resistor_SMD:R_0603_1608MetricR3
16K8Resistor_SMD:R_0603_1608MetricR2
1BSC059N04LS6AAsulari:PG-TDSON-8-FLQ1
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ8
1Conn_01x02_SocketConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ5
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ6
1Conn_01x03_PinConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ2
1Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ7
1Conn_01x06_SocketConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ3
1ESP32-C6-DevKitC-1AAsulari:ESP32-C6-DevKitC-1U2
1HLK-LD2420AAsulari:Molex_PicoBlade_53048-0510_1x05_P1.25mm_HorizontalJ4
1L33/0.75WResistor_SMD:R_0805_2012MetricR6
1LT3757AEMSEPackage_SO:MSOP-10-1EP_3x3mm_P0.5mm_EP1.68x1.88mmU1
1SN74HCT04, 6-ch 5V logic inverterPackage_SO:SOIC-14_3.9x8.7mm_P1.27mmU9
1USB_C_Receptacle_PowerOnly_6PAAsulari:USB_C_Receptacle_GCT_USB4125-xx-x-0190_6P_TopMnt_HorizontalJ1
1VS-3EMH06-M3Diode_SMD:D_SMAD2
1WE_FB_750032051AAsulari:WE_FB 750032051T1

More from antsakur/nixie-clock

1
  • 2 layers125 × 55 mmSulari, the printed circuit board in 3D

    Sulari

    antsakur/nixie-clock

    Open-source Nixie clock project. Gerbers, BOM and firmware.

    44 parts1

Similar boards

  • 4 layers101.2 × 24 mmCharger module, the printed circuit board in 3D

    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 mmBatteryCharger, the printed circuit board in 3D

    BatteryCharger

    BlockWorker/ModularAudio

    Compact, modular, versatile, hi-fi audio system concept.

    49 parts2
  • 4 layers204 × 85 mmNixie clock, the printed circuit board in 3D

    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 mmVfd clock, the printed circuit board in 3D

    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 mmNixieclock, the printed circuit board in 3D

    Nixieclock

    bdebyl/kicad-nixieclock

    KiCAD design files for an STM32F0 Nixie Clock

    186 partsMIT
  • 2 layers105.4 × 25.4 mmWrist ems 12 electrodes, the printed circuit board in 3D

    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 mmAlarm clock v3, the printed circuit board in 3D

    Alarm clock v3

    MG-5/alarm-clock_hardware

    155 partsGPL-3.0

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.