# A modular 7-segment clock you build from custom PCBs

A 17 cm, 10 cm-digit display built from custom PCBs and WS2812B pixels, with no diffusers glued into a mask and no soldering boards together.

- Category: Hardware (build)
- Made by: [Janster Benksterinho](https://www.hackster.io/Benksterini) on Hackster.io
- Original: https://www.hackster.io/Benksterini/7-segment-display-modular-hw-sw-97ad2f
- On Afterware: https://afterware.xyz/p/a-modular-7-segment-clock-you-build-from-custom-pcbs

## Can I build this?

- Difficulty: Intermediate
- AI-buildability: 4/5 (The author shares Gerbers, 3D files and firmware, so the reader mostly orders boards, prints parts, wires one data line and lets AI handle the firmware and MQTT customisation.)
- Time: A weekend
- Cost: $50–120
- Parts: ESP32-C3 Super Mini, ESP32 D1 Mini, WS2812B LED Strip, 74AHCT125N level shifter, PCBWay custom PCB, PLA filament
- Tools: soldering iron, 3D printer, wire cutters, screwdriver

Estimates based on the original write-up. How the AI-buildability score works: https://afterware.xyz/ai-buildability

## Build sheet

- Controller: ESP32-C3 Super Mini
- Pixels: WS2812B on custom PCB
- Size: ~17 x 10 cm digits
- Firmware: Clock, NTP, OTA, MQTT

## Starter prompt

```
Based on "A modular 7-segment clock you build from custom PCBs" on Afterware: https://afterware.xyz/p/a-modular-7-segment-clock-you-build-from-custom-pcbs

Write Arduino firmware for an ESP32-C3 that drives a chain of WS2812B pixels on one data pin as a 7-segment digit. Include a function that takes a digit 0–9 and a colon option, and a clock mode that syncs time over NTP. Add an MQTT subscriber so Home Assistant can switch between time and a sensor value.
```

## Story

Each digit is a custom KiCad PCB of WS2812B pixels, so the display shows the time or sensor readings like CO2 at roughly 17 x 10 cm per digit. The author tried other designs, found the diffusers, pixel placement or fixed clock layouts lacking, and set out to build one that was modular, sturdy and easy to extend.

The build starts with a choice: single WS2812B chips soldered by hand, or LED strips. The author went with the full custom PCB, which PCBWay sponsored as a prototype, and a 3D-printed back plane, digit case and diffusers. An ESP32 needs only one GPIO pin for the data line. A 330 to 470 ohm resistor is the recommended safety part, and a level shifter is optional because the WS2812B usually reads a 3.3 V signal on short runs.

Worth stealing: the PCB and 3D-printed parts are shared as Gerbers, schematics and a Printables kit, and the firmware repo has NTP and OTA clock examples. Chain the digits and drive them from Home Assistant over MQTT.

## Resources

- [Project page](https://www.hackster.io/Benksterini/7-segment-display-modular-hw-sw-97ad2f)
- [PCB project (schematics, Gerbers, BOM)](https://www.pcbway.com/project/shareproject/Modular_7_Segment_Display_f70542e0.html)
- [3D model kit (Printables)](https://www.printables.com/model/1890010-modular-7-segment-display-kit-with-skadis-t-nut-su)
- [Firmware repo](https://github.com/Benksterinho/7segment_neopixel_digits)
- [Clock example](https://github.com/Benksterinho/7segment_neopixel_digits/tree/release/2026-10-19/examples/03_clock_ntp_ota)

Tags: 7-segment, neopixel, ws2812b, custom pcb, esp32, home assistant, modular

AI assistants can search all Afterware builds through the MCP server at https://afterware.xyz/mcp (setup: https://afterware.xyz/agents).
