Network cabinet fan controller
Public Unreviewedby matt
Two independently controlled 12 V fans, Ethernet and Wi-Fi, and an RGB speed display in a custom printed puck. Routed development preview, not approved for manufacture.
3D Model
Open in new tab ↗
Loads when you scroll to it. Unloads after 5 minutes in the background.
Contents
README
htmlREADME
markdownNarrated tour and engineering details: version 0.2.0
Two fans. Wired control. A display you can read at a glance. An ESPHome controller designed around a serviceable printed puck and custom wire harnesses.
Download the narrated tour / Engineering overview / Exact file inventory
Inside the puck
The cap has a 4 mm thread pitch. The bezel fastens from below; the exploded view illustrates construction rather than a validated service procedure. Light-pipe illumination is illustrative, not an optical simulation.

Designed for local control and connected monitoring
| Function | Implementation |
|---|---|
| Controller | ESP32-S3-MINI-1U-N8, 8 MB flash, external antenna connection |
| Ethernet | W5500, 10/100; no PoE |
| Fans | Two independent 12 V fan channels; separate 25 kHz PWM commands and tachometer inputs |
| Display | LP5036, 33 of 36 outputs driving 11 RGB LEDs: ten speed positions and a status indicator |
| Temperature | Remote and onboard 10 kohm NTC inputs |
| Expansion | Door-switch input and I2C header |
| Service | USB-C programming and logic service power; USB does not power the fans |
| Mechanical | 84 x 52 mm, R3 corners, four copper layers, centered in the puck |
The firmware prioritizes Ethernet with Wi-Fi fallback. MTA-100 connections allow custom harness lengths. Connector and component markings identify the actual design; markings added to CAD component bodies are descriptive and do not promise matching manufacturer printing.

Development status
Routed development snapshot - not released for manufacture. PCB commit b675a28940872728bbb461d4e69cf0d48f8b5c1c. Recorded native checks report ERC 0 and 0 unconnected items, with two approved ganged-header courtyard overlaps and 42 retained dangling-copper warnings. Physical electrical, thermal, USB, signal and assembled-puck qualification remain open. No prototype performance is claimed.
The onboard NTC is influenced by PCB heating. Improved cabinet-air sensing is under evaluation. ESP32 internal temperature is a deferred diagnostic, not enabled in this firmware snapshot and not an ambient thermostat input.
Downloads
Current development source package includes the exact selected board sources, required local libraries, placeholder-only firmware secrets example and matching enclosure-interface exports. The manifest records file hashes and both electrical and mechanical source revisions. No credentials, surrounding cabinet repository or manufacturing release is included. Use source/fan-controller/fan-controller.kicad_pro in KiCad 10. External standard library models may require a normal KiCad library installation.
Published with Matt's approval as a public development preview. This page can be updated in place; version 0.2.0 preserves this snapshot. Older folders and releases are historical designs, not the current board. Third-party library notices and provenance accompany the source; making the page public does not change their licenses. See source attribution.