Skip to the content
PCBKitNew board
4 layers41 × 149 mmAir filter controller, the printed circuit board in 3D

Air filter controller

ademuri/air-filter-controller1

The ESP32-S3 uses 3.3V. I want onboard indicator LEDs, and the option to have offboard LEDs as well. Using addressable WS2812-type LEDs is flexible. These need a 5V supply.

Size
41 × 149 mm
Copper layers
4
Thickness
1.6 mm
Parts
167
Nets
103
Pads
486
Tracks, vias
1,143, 319
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
15 Jun 2024
Updated
12 Feb 2026

Overview

Air filter controller is an open-source printed circuit board by ademuri, from the ademuri/air-filter-controller repository on GitHub. It is a 4-layer board of 41 × 149 mm with 167 parts on 103 nets, routed with 1,143 tracks and 319 vias.

It is built around the ESP32-S3-WROOM-1-N4, MT2492 and AMS1117-3.3, with the HC-1.0-4PLT, SMAJ5.0A and WS2812B-2020 among its other parts. Its parts include 53 resistors, 45 diodes, 33 capacitors, 17 connectors and 4 ICs. It belongs with the ESP32 boards of this library.

Main components

12

README

hardware/README.md

Design decisions

Power supply scheme

The ESP32-S3 uses 3.3V. I want onboard indicator LEDs, and the option to have offboard LEDs as well. Using addressable WS2812-type LEDs is flexible. These need a 5V supply. The fans draw 12V, so this necessitates two voltage regulators.

One option would be to use separate buck converters for both the 5V and 3.3V rails.

With no offboard LEDs, the 5V rail power draw will be low. WS2812B LEDs consume roughly 1mA each when idle. When lit at a fully-saturated color, they will consume about 20mA each. There are four onboard LEDs, so this means 4mA idle, and 80mA when lit.

This is relatively low power consumption. However, offboard LEDs may need significantly more power. If, for example, a 16-LED ring is used, then up to 400mA total may be needed.

During normal operation, the indicator light will be off. So, most of the time, the 5V current draw will be low.

To convert from the 12V supply to 5V, we'll use a buck converter. If we size the inductor for the maximum current draw, then the converter will potentially be noisy during typical operation.

So, we should instead use a linear regulator to convert the 5V to 3.3V, if possible. This will simplify the design, and increase the minimum current draw on the buck converter. Is it feasible?

The ESP32-S3 datasheet says that the power supply should support at least 500mA. The AMS1117-3.3 supports 1A max. The typical power draw of the ESP32-S3 running our ESPHome configuration is 30-120mA. A linear regulator burns the excess voltage as heat. For (worst-case) typical operation, the power consumed by the regulator will be .12A * (5V - 3.3V) = 200mW. This is acceptable.

Using this buck converter calculator, a 100uH inductor means that the maximum ripple current will be about 50mA.

The chosen inductor (SWPA8065S101MT) has a max DC resistance of 0.28Ω, and a max heat-rating current of 1.35A. If the ESP32-S3 draws 500mA, this leaves >500mA for LEDs. This is sufficient.

Filtering

I did a conducted emissions pre-test for v1.0, using a dual 5uH LISN between the board and an adjustable DC power supply. With the board on and idle (30-40mA pulled from the 12V source), I saw a few concerning peaks:

  • A sharp peak around 725 kHz, about 10dB above the limit
  • Sharp peaks around 3.6kHz, 1.4 MHz, 2.2 MHz, and 3.6 MHz - these are >3dB below the limit
  • Broadband noise between 300kHz to 400kHz

Increasing the load on the buck converter slightly by turning on the indicator LED to full white (50-55mA pulled @12V), the peaks get sharper, with the 365 kHz peak exceeding the limit by 6dB, and the 1.4MHz peak exceeding the limit by ~8dB.

There isn't much change with one fan plugged in on full power.

Parts

167
QtyValueFootprintReferences
27SMAJ5.0ADiode_SMD:D_SMAD10, D11, D13, D14, D16, D17, D19, D20, D22, D23, D25, D26, D28, D29, D31, D32 +11
161kResistor_SMD:R_0402_1005MetricR2, R5, R13, R16, R19, R22, R25, R28, R31, R34, R37, R39, R40, R44, R45, R47
1310uFCapacitor_SMD:C_0603_1608MetricC2, C6, C19, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33
11220Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3, R14, R17, R20, R23, R26, R29, R32, R35, R38, R46
11D_TVS 12VDiode_SMD:D_SMAD2, D4, D9, D12, D15, D18, D21, D24, D27, D30, D45
10100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R12, R15, R18, R21, R24, R27, R30, R33, R36
10Conn_01x04Homebrew:CONN-TH_47053-1000J3, J4, J5, J6, J7, J8, J9, J10, J11, J12
9100nFCapacitor_SMD:C_0402_1005MetricC1, C4, C7, C12, C13, C14, C16, C18, C34
6100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR48, R49, R50, R51, R52, R53
422uF 25VCapacitor_SMD:C_1206_3216MetricC5, C8, C20, C23
447uFCapacitor_SMD:C_1206_3216MetricC3, C11, C15, C17
4MountingHoleMountingHole:MountingHole_3.2mm_M3_ISO7380H1, H2, H3, H4
4SW_PushHomebrew:SW_TACTILE_5.1MM_TS-1187A-C-D-BSW1, SW2, SW3, SW4
4WS2812B-2020Homebrew:LED-SMD_4P-L2.0-W2.0-TL_WS2812B-2020D35, D37, D38, D39
2100kResistor_SMD:R_0402_1005MetricR1, R6
25k1Resistor_SMD:R_0402_1005MetricR7, R10
2Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ13, J14
2Conn_01x08Homebrew:CONN-TH_8P-P1.25_HCTL_HC-1.25-8AJ16, J17
2DDiode_SMD:D_SMAD1, D42
1100Resistor_SMD:R_0402_1005MetricR11
1100uHInductor_SMD:L_Sunlord_SWPA8040SL1
110kResistor_SMD:R_0402_1005MetricR43
1110k 1%Resistor_SMD:R_0402_1005MetricR9
116k 1%Resistor_SMD:R_0402_1005MetricR8
1220kResistor_SMD:R_0402_1005MetricR42
1220uFCapacitor_SMD:CP_Elec_8x10C22
122nFCapacitor_SMD:C_0402_1005MetricC9
122pFCapacitor_SMD:C_0402_1005MetricC10
14.7uHInductor_SMD:L_Sunlord_SWPA4030SL2
1680kResistor_SMD:R_0402_1005MetricR41
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U4
1AO3400APackage_TO_SOT_SMD:SOT-23Q1
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ15
1Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2
1DC-005-2.5A-2.0Homebrew:CONN-TH_DC-005-2.5A-2.0DC1
1ESP32-S3-WROOM-1-N4RF_Module:ESP32-S3-WROOM-1U1
1HC-1.0-4PLTHomebrew:CONN-SMD_4P-P1.00_HC-1.0-4PLTU5
1MT2492Homebrew:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BLU3
1PolyfuseFuse:Fuse_1812_4532MetricF1
1QMB-09B-03Homebrew:BUZ-TH_BD9.0-P4.00-D0.6-FDBUZZER1
1SRV05-4-P-T7Package_TO_SOT_SMD:SOT-23-6D3
1Strain ReliefHomebrew:3_pin_2.54mm_pitch_strain_reliefH5
1TYPE-C-31-M-12Homebrew:HRO_TYPE-C-31-M-12J1

Questions

How big is the Air filter controller PCB?

It measures 41 × 149 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Air filter controller use?

167 parts, built around the ESP32-S3-WROOM-1-N4, MT2492, AMS1117-3.3 and HC-1.0-4PLT. 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 Air filter controller KiCad files?

From the ademuri/air-filter-controller repository on GitHub, at the commit this page was made from: the board is hardware/air-filter-controller.kicad_pcb and its schematic hardware/air-filter-controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Air filter controller design in my own project?

Its repository states no licence, so its author keeps all rights: ask ademuri before reusing the design.

Similar boards

  • 6 layers187 × 109 mmHALPI2, the printed circuit board in 3D

    HALPI2

    hatlabs/HALPI2-hardware

    Hat Labs Pi Carrier Board 2 design files

    739 parts9
  • 4 layers100 × 100 mmPhmod, the printed circuit board in 3D

    Phmod

    gallicchio/AMOD-and-RFMOD

    The tutorial's 2x12 adapter (/mudd/133electronics/icepi-zero-dac-adc/adapterboard/) with a 2 x 6 right-angle Pmod socket on a 15 mm extension of its right-hand end, so an Icepi Zero can drive AMOD-A's and RF-MOD's Pmod…

    234 parts
  • 2 layers110.1 × 110.4 mmMini, the printed circuit board in 3D

    Mini

    makerspet/oomwoo-esp32s3-cm

    Pi CM4/CM5-compatible Compute Module using ESP32-S3 instead of CPU

    116 parts1Apache-2.0
  • 2 layers99 × 90 mmHomeyPCB, the printed circuit board in 3D

    HomeyPCB

    jadam3k/Homey

    Home Asistance/Industrial PLC

    99 parts
  • 2 layers120 × 80 mmSpikeling v3.2, the printed circuit board in 3D

    Spikeling v3.2

    OpenSourceNeuro/Spikeling

    A hardware implementation of spiking neurons for neuroscience teaching and outreach

    233 parts21GPL-3.0
  • 4 layers24.6 × 33.1 mmPower supply2, the printed circuit board in 3D

    Power supply2

    jrseti/dishy1pi

    Satellite dish motor control for Raspberry Pi, hardware and software

    21 partsMIT
  • 2 layers100 × 96 mmBacklight, the printed circuit board in 3D

    Backlight

    jackw01/scanlight

    A better light source for scanning color negative film

    69 parts397CERN-OHL-W-2.0