Skip to content

Datasheet Rev 3.3

WiFi Fan Controller, hardware revision 3.3. A CE marked ESP32-S2 board that drives up to four 4-pin PWM fans, reads their tachometer signal, measures ambient temperature and humidity, and integrates natively with Home Assistant through ESPHome.

Rev 3.1, 3.2 and 3.3 are electrically compatible and share this specification. Sub-revision differences are manufacturing improvements only.

ESP32-S2 WiFi Fan Controller Rev 3.3 PCB front, showing the four PWM fan headers, the HDC1080 temperature and humidity sensor, the RGB status LEDs, the Qwiic port, the USB-C connector and the DC barrel jack

  • 4 independent 25 kHz PWM fan outputs with signal buffering
  • 4 independent tachometer inputs, reported as RPM
  • Onboard HDC1080 temperature and humidity sensor
  • 5 addressable RGB status LEDs: one board status, one per fan connector
  • WiFi 2.4 GHz, native Home Assistant integration via ESPHome
  • Qwiic and 100 mil I2C expansion, NeoPixel output, SMD expansion header
  • USB-C flashing, plus a UART0 serial header as fallback
  • 3 user assignable push buttons

Absolute limits and electrical specifications

Section titled “Absolute limits and electrical specifications”
ParameterMinTypMaxUnitNotes
DC input voltage11.41212.6V12 V DC ±5 %, SELV, regulated SMPS only
DC input voltage, never to be exceeded15VIncluding no load and light load
Total input current2.5ASet by the DC barrel jack
Board electronics current, fans excluded50mA
PWM output frequency25kHzPer fan, independently controllable
PWM duty resolution100stepsESPHome speed_count: 100
Logic level, all headers3.3VNot 5 V tolerant
NeoPixel port voltage5V
NeoPixel port current2A

The 2.5 A figure is the maximum total input current of the board. It applies to the sum of all connected fans plus the board electronics. Size the supply to the combined draw of the fans you connect, with headroom. See Safety and Compliance for the normative wording and for the full external power supply requirements.

The USB-C port powers the microcontroller only. It cannot power fans.

ParameterValueReference
Climatic class3K3IEC 60721-3-3, weather protected indoor location
Ambient operating temperature+5 to +40 °CBound of class 3K3
Relative humidity5 to 85 %, non-condensingBound of class 3K3
Pollution degree2IEC 62368-1
Operating altitudeup to 2000 mIEC 62368-1
Ingress protectionnone, bare PCBAn enclosure is required, see below
Installationdry indoor locations only

Operation without an enclosure is an excluded application. The board is supplied as a bare printed circuit assembly and must be installed inside a protective enclosure.

ParameterValue
PCB outline70.0 x 45.0 mm
PCB thickness1.6 mm
Mounting holes4x, 3.2 mm diameter
Mounting hole pattern60.0 x 35.0 mm rectangle, symmetric about the board centre
Mounting hole inset from edge5.0 mm on all four sides
Maximum component height above PCB11.0 mm
Maximum component height below PCB2.5 mm
Overall envelope70.0 x 45.0 x 15.1 mm
Weight17 g board, 56 g board with case

A STEP model of the assembled board is available in the hardware/ directory of the repository, for enclosure design and mounting clearance checks.

ParameterValue
ModuleESP32-S2-MINI-2
CoreXtensa LX7, single core, up to 240 MHz
Flash4 MB
Antennaintegrated PCB antenna on the module
WiFi802.11 b/g/n, 2.4 GHz
Bluetoothnot available on ESP32-S2
ESPHome board targetesp32-s2-saola-1
Frameworkarduino

The arduino framework is required: the NeoPixel output on GPIO42 uses the esp32_rmt_led_strip platform, which does not work reliably with esp-idf on the ESP32-S2.

ItemSpecification
Temperature and humidity sensorHDC1080, on the shared I2C bus
Default sensor update interval10 s
Tachometer inputpulse counter with internal pull-up, 2 pulses per revolution
Default RPM update interval1 s
Status LEDs5x SK6805 addressable RGB on GPIO1, WS2812 protocol, GRB order
LED assignmentLED 0 board status, LEDs 1 to 4 fan 1 to fan 4
ConnectorTypeNotes
DC inputbarrel jack 5.5 x 2.1 mm, centre positive12 V DC, external supply not included
USB-CUSB 2.0 deviceFlashing and logs, powers the MCU only
Fan 1 to 44-pin fan header, 2.54 mm pitchStandard 4-wire PWM fans
I2C expansion5-pin, 100 mil pitchGND, INT, SCL, SDA, +3V3
Qwiic / STEMMA QTJST-SH 4-pin, 1 mm pitchShares the I2C bus
NeoPixel3-pin5 V, 2 A maximum, GPIO42
Serial4-pin3V3, TX, RX, GND, UART0 at 3.3 V logic
ExpansionSMD header, board bottomGPIO2 to GPIO11

The Qwiic port, the 100 mil I2C port and the onboard HDC1080 are all on the same I2C bus (GPIO33 SDA, GPIO34 SCL, 4.7 k pull-ups). Addresses must not conflict across those ports.

PinUsage
GPIO0Boot button, push to enter flashing mode
GPIO1RGB status LEDs, SK6805, 5 LEDs
GPIO2 to GPIO11Expansion header, board bottom
GPIO12Fan 1 PWM
GPIO13Fan 2 PWM
GPIO14Fan 3 PWM
GPIO15Fan 4 PWM
GPIO16Fan 1 speed sense
GPIO17Fan 2 speed sense
GPIO18Fan 3 speed sense
GPIO21Fan 4 speed sense
GPIO26unused
GPIO33I2C SDA
GPIO34I2C SCL
GPIO35I2C INT
GPIO36USR3 button
GPIO37USR2 button
GPIO38USR1 button
GPIO42NeoPixel expansion port
GPIO43UART0 TX, serial header
GPIO44UART0 RX, serial header
GPIO45, GPIO46unused, strapping pins
ItemValue
FirmwareESPHome
IntegrationHome Assistant, native API
ProvisioningImprov Serial, plus WiFi captive portal fallback
UpdatesOTA via ESPHome, and HTTP update from the manifest below
Factory firmwarefancontroller-r3-3-esp32s2.factory.bin
Update manifesthttps://fancontroller.arthofer.dev/firmware/fancontroller-r3-3.manifest.json

Optional control modules for temperature curves, PID control, closed loop RPM regulation and LED behaviour are documented under Modules.

ItemStatus
CE markingyes
RoHScompliant
RF exposuremaintain at least 20 cm separation between the antenna and any person
Radiocontains a 2.4 GHz radio transmitter

Supply from an external 12 V DC SELV power supply, operation in dry indoor locations only, connection of 4-pin PWM fans only, maximum total input current 2.5 A.

The product is not suitable for and must not be used in safety critical applications, explosive atmospheres, medical applications, operation without an enclosure, unattended continuous operation without regular checks, or in vehicles.

The board ships with factory tested firmware, and the declaration of conformity covers the product in that state. Custom ESPHome YAML, custom modules or third party firmware may affect CE conformity, depending on what the change alters.

Configurations that stay within the documented envelope, such as a changed device name, an added temperature curve or a control module from this repository, change neither the radio nor the electrical behaviour the assessment rests on. Changes that leave it, in particular altering radio parameters like transmit power, changing the PWM output frequency away from 25 kHz, or operating the outputs outside their specified limits, void CE conformity of the product as delivered. No general approval is given for modified firmware, and responsibility for a modified configuration rests with whoever operates it.

Warranty claims are void for damage attributable to such a change.

The full normative wording is on the Safety and Compliance page. Where this datasheet and that page differ, that page applies.

ItemValue
ProductESP32 WiFi Fan Controller
Hardware revision3.3
Scope of deliveryassembled board with factory firmware
Not included12 V DC power supply, fans, enclosure
ShopTindie
Documentationfancontroller.arthofer.dev
Source and hardware filesgithub.com/zeroflow/wifi-fancontroller