Skip to the content
PCBKitNew board
4 layers53.3 × 45.7 mmAeolus, the printed circuit board in 3D

Named after Aeolus, the keeper of the winds.

Size
53.3 × 45.7 mm
Copper layers
4
Thickness
1.6 mm
Parts
12
Nets
20
Pads
46
Tracks, vias
75, 0
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
18 Jul 2026
Updated
8 Aug 2026

Overview

Aeolus is an open-source printed circuit board by am0ghh, from the am0ghh/Aeolus repository on GitHub, published under the MIT licence. It is a 4-layer board of 53.3 × 45.7 mm with 12 parts on 20 nets, routed with 75 tracks and 0 vias.

It is built around the PN2222A. Its parts include 3 resistors, 2 diodes, 2 connectors, 1 IC and 1 transistor. It belongs with the ESP32 boards of this library.

Main components

1

README

README.md

Aeolus

Aeolus is a smart, temperature-aware IR fan controller built around an ESP32-C3. It watches room temperature and automatically turns a WOOZOO (or other NEC-protocol) fan on and off over infrared, with a 0.96" OLED status display, a physical control button, and an on-device IR "learn" mode for capturing new remote codes — all on a custom-designed 4-layer PCB.

Named after Aeolus, the keeper of the winds.

Gallery

3D render

Aeolus 3D render

PCB layout (4-layer, black soldermask, silkscreen branding)

Aeolus PCB layout

Schematic

Aeolus schematic

Background — this is v2 of my fans project

Aeolus is a ground-up redesign of my earlier dorm-room fan automation project. The original ("fans") was an Arduino Uno R3 on a breadboard: a DHT11 sensor, an IR receiver, and a transistor-driven IR LED that automatically toggled the fan on hysteresis. It worked, but it was bulky, code-only, and limited to hardcoded remote codes.

Aeolus keeps the proven control logic and rebuilds everything around it as a real, compact, hardware product.

Design improvements over v1 (fans)

Areav1 — fansv2 — Aeolus
MicrocontrollerArduino Uno R3 (ATmega328P, 5V, large)ESP32-C3 SuperMini (32-bit RISC-V, 3.3V, tiny, Wi-Fi/BLE capable)
Temperature sensingDHT11 module (slow, ~1 Hz, NaN dropouts)NTC thermistor read on the ADC with a Beta-equation conversion — faster, cheaper, no library timing quirks
DisplayNone (serial monitor only)0.96" SSD1306 I²C OLED with live temp/state readout and wind/snow animations
User inputNonePhysical push button — single/double-tap for mode and manual control
Remote codesHardcoded in firmwareOn-device IR learn/scan mode — capture a new remote's code without reflashing
BuildBreadboard / protoboard prototypeCustom 4-layer PCB designed in KiCad (SIG–GND–PWR–SIG stackup), black soldermask, silkscreen branding
Form factorLoose modules and jumper wiresSingle integrated board with the OLED and modules socketed

The transistor-buffered IR transmitter (the key range fix from v1 — extends usable range from a couple of inches to ~10–15 ft) is carried over into the Aeolus hardware.

Hardware

  • ESP32-C3 SuperMini microcontroller module
  • 0.96" SSD1306 OLED (I²C, address 0x3C)
  • NTC thermistor on the ADC for temperature sensing
  • IR receiver (38 kHz demodulating, VS1838B-style) for learning remote codes
  • IR LED (940 nm) transmitter, transistor-buffered for range
  • Momentary push button for manual control / mode switching
  • Custom 4-layer KiCad PCB (hardware/Aeolus.kicad_pcb / .kicad_sch)

Pin map

FunctionESP32-C3 GPIO
IR transmitGPIO5
IR receiveGPIO3
OLED SDAGPIO7
OLED SCLGPIO6
ButtonGPIO10
Thermistor (ADC)GPIO0

Firmware

The firmware lives in src/main.cpp and is built with PlatformIO (Arduino framework for ESP32-C3).

  • Automatic control with hysteresis — fan turns on at 75 °F, off at 73 °F, so it won't rapidly cycle around the setpoint.
  • Minimum run time — once the fan starts, it stays on for at least 10 minutes.
  • Two operating modes — a normal run/monitor mode and a scan (IR-learn) mode, toggled from the button.
  • IR learn mode — point your fan remote at the receiver and Aeolus captures the raw NEC code so it can replay it later.
  • OLED UI — shows current temperature and fan state with animated wind (fan on) and snow (idle/cool) effects.
  • Sends NEC-protocol IR commands (default is the WOOZOO fan power code).

Build & flash

This is a PlatformIO project:

bash
pio run              # build
pio run -t upload    # flash to the ESP32-C3
pio device monitor   # serial output

Board and framework are configured in platformio.ini. Libraries used: IRremote, Adafruit SSD1306, Adafruit GFX.

PCB & hardware design

The KiCad 9 project is in hardware/ (schematic, PCB, custom symbol/footprint libraries). Highlights:

  • 4-layer board — SIG–GND–PWR–SIG. In1.Cu carries a poured GND plane and In2.Cu a poured +3.3V plane. Every ground and supply pad is through-hole, so the plated barrels tie straight into the planes with thermal reliefs and no stitching vias are needed. That is why there is not a single GND trace on F.Cu — the plane carries every return, which keeps the loop area of the switched IR LED current away from the high-impedance thermistor sense line.
  • Custom ESP32-C3 SuperMini symbol and footprint, pin-labeled to match the actual module.
  • Custom silkscreen branding (the "Aeolus" wordmark) generated from the artwork in branding/.
  • 3D models for the ESP32-C3, OLED, and IR components in hardware/Aeolus.3dshapes/ for a complete 3D render.

Known limitations

Stated up front so the files and the description agree:

  • Signal routing is single-sided. All 75 copper segments sit on F.Cu; B.Cu is unused for routing. This is fine at this node count because power and ground are handled by the inner planes rather than by surface traces.
  • No decoupling capacitors are placed. schematic-guide.txt calls for 100 nF on the OLED and IR receiver supplies; those parts are not yet in the schematic.
  • No I²C pull-ups on the board — the design relies on the ones fitted to the OLED breakout.
  • The board has not been fabricated. Everything in hardware/ is layout and 3D render only; no gerbers, BOM, or assembled unit yet.
  • The IR range figures are estimates, not instrumented measurements.

License

See LICENSE.

Parts

12
QtyValueFootprintReferences
2LEDLED_SMD:LED_PLCC-2_3.4x3.0mm_KAD1, D2
110Resistor_SMD:R_2512_6332MetricR2
110kResistor_SMD:R_0805_2012MetricR3
1220Resistor_SMD:R_0805_2012MetricR1
1ESP32 - C3Aeolus_footprints:ESP32-C3-SuperMiniU1
1IR ReceiverOptoDevice:Vishay_MINICAST-3PinJ1
1OLED DisplayAeolus_footprints:OLED_SSD1306_I2C_0.96J2
1PN2222Package_TO_SOT_THT:TO-92Q1
1SW_PushButton_Switch_THT:SW_PUSH_6mmSW1
1ThermistorCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmTH1

The 11 most common of 12 parts.

Questions

How big is the Aeolus PCB?

It measures 53.3 × 45.7 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Aeolus use?

12 parts, built around the PN2222A. 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 Aeolus KiCad files?

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

Can I use the Aeolus design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers152.4 × 101.6 mm8088-FE2010A SBC, the printed circuit board in 3D

    8088-FE2010A SBC

    skiselev/micro_8088

    Micro 8088 - IBM XT Compatible Processor Board based on Faraday FE2010 chipset

    72 parts412GPL-3.0
  • 2 layers33.7 × 66 mmSmartbell, the printed circuit board in 3D

    Smartbell

    Staacks/there.oughta.be

    Projects featured on my blog at https://there.oughta.be

    27 parts108GPL-3.0
  • 4 layers100 × 100 mm2063-Z80, the printed circuit board in 3D

    2063-Z80

    Z80-Retro/2063-Z80

    Retro Z80 CPU Board

    86 parts96
  • 2 layers30.7 × 76.1 mmRepeater v2, the printed circuit board in 3D

    Repeater v2

    plusvic/simplebus2-intercom

    General description of the Simplebus2 protocol used by some Comelit's intercoms. Hardware for retransmitting Simplebus2 messages over UART.

    17 parts95CC0-1.0
  • 2 layers28.8 × 43.8 mmAdv pcb, the printed circuit board in 3D

    Adv pcb

    Vail-CW/vail-adapter

    Adapter for cw morse keys to USB

    13 parts81MIT
  • 2 layers23.2 × 52.1 mmOpenC64Saver, the printed circuit board in 3D

    OpenC64Saver

    SukkoPera/OpenC64Saver

    Protect your Commodore 64 from killer power supplies!

    17 parts79
  • 4 layers184.2 × 169.5 mmSB mini II, the printed circuit board in 3D

    SB mini II

    simonboak/SB-mini-II

    A homebrewed Apple II clone

    97 parts76MIT
  • 2 layers49.5 × 30 mmAirpcb smd old, the printed circuit board in 3D

    Airpcb smd old

    issalig/toshiba_air_cond

    AB protocol decoder for toshiba air conditioners

    30 parts65