

Dewcontroller
Environment-driven dew heater controller for the Celestron C9.25 corrector plate dew ring.
- Size
- 72.3 × 64.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 19
- Nets
- 19
- Pads
- 51
- Tracks, vias
- 62, 0
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 13 Nov 2025
- Updated
- 30 Aug 2026
Overview
Dewcontroller is an open-source printed circuit board by mpinnuck, from the mpinnuck/dewcontroller-hardware repository on GitHub. It is a 2-layer board of 72.3 × 64.5 mm with 19 parts on 19 nets, routed with 62 tracks and 0 vias.
Its parts include 3 capacitors, 3 resistors, 3 ICs, 3 connectors and 2 diodes. It belongs with the ESP32 boards of this library.
README
README.mdDew Controller for Celestron C9.25
Environment-driven dew heater controller for the Celestron C9.25 corrector plate dew ring.
This project uses an ESP32-S3 (Seeed XIAO ESP32S3), an SHT40 temperature/humidity sensor, and a PWM-controlled heater channel to reduce dew risk while limiting unnecessary heat.
What It Does
- Computes dew point from ambient temperature and relative humidity.
- Uses spread control:
spread = Ta - Td. - Looks up heater output from a configurable spread-to-power table.
- Applies a global maximum power cap for safety.
- Uses ring thermistor only as an over-temperature safety clamp.
- Hosts a built-in web UI for status, configuration, logs, and manual PWM test.
Repository Layout
firmware/dewcontroller/dewcontroller.ino- Main firmware and web UI.firmware/TempDewSensorTest/- Sensor test sketch.firmware/i2cverify/- I2C verification sketch.firmware/ioverify/- GPIO/IO verification sketch.data/- Calibration and logged data.hardware/dewcontroller/- KiCad PCB/schematic and fabrication files.hardware/mechanical/- Mechanical model files.
Hardware
- MCU: Seeed XIAO ESP32S3
- Env sensor: SHT40 on I2C
- Heater output: PWM channel driving dew ring power stage
- Ring thermistor: analog input, safety cutoff only
Firmware Behavior
- Control loop runs from ambient conditions, not ring temperature tracking.
- Max power default is limited (90%) to reduce risk of over-heating optics.
- If ring temperature exceeds cutoff, PWM is clamped.
- Thermal log is stored in SPIFFS and pruned automatically.
- If local SHT40 reads fail, firmware can fall back to weather API values.
Connect to the Device in a Browser
The controller always serves its web interface on HTTP port 80.
Option 1: Connected to Your Home/Observatory Wi-Fi (STA mode)
- Power the controller.
- Wait for it to join your configured Wi-Fi network.
- In a browser, open one of these:
http://DewController.local(mDNS)http://<device-ip>(router-assigned IP)
If mDNS does not resolve on your network, use the IP address shown in your router client list.
Option 2: Setup / Fallback Access Point (AP mode)
If Wi-Fi credentials are missing or connection fails, the device starts an AP:
- SSID:
DewHeaterSetup - Device IP: typically
192.168.4.1
Steps:
- Connect phone/laptop to Wi-Fi network
DewHeaterSetup. - Open
http://192.168.4.1in your browser. - In the web UI, enter your Wi-Fi SSID/password under settings and save.
- The device will reboot/reconnect and become available on your normal network.
Shared Telemetry Service for Other Telescope Devices
This controller exposes GET /status.json as a machine-to-machine telemetry service.
Example URL:
http://DewController.local/status.json
Other devices mounted on the telescope can poll this endpoint to get live environmental data. The Flat Panel dew heater is expected to use this service for ambient temperature and humidity inputs.
Recommended fields for client devices:
ambient- Ambient temperature in C (string value)humidity- Relative humidity in % (string value)dewpoint- Calculated dew point in C (string value)dewspread- Dew-point spread (ambient - dewpoint) in C (string value)time- Device timestamp stringversion- Firmware version
Example:
{
"ambient": "11.8",
"humidity": "83.2",
"dewpoint": "9.0",
"dewspread": "2.8",
"time": "2026-08-30 21:12:44",
"version": "v5.2.0"
}Typical polling interval for clients is 1-5 seconds, depending on how quickly they need to react.
Web UI Endpoints (for integrations)
GET /- Main UIGET /status.json- Live status JSONGET /log- Runtime logPOST /toggle- Enable/disable heaterPOST /settings- Update configurationPOST /pwmtest- Manual PWM test modePOST /clearlog- Clear runtime logPOST /clearlog_thermal- Clear thermal CSV logGET /downloadlog- Download thermal log
Build and Flash
Use Arduino IDE (or Arduino CLI) with ESP32 board support.
- Install ESP32 board package.
- Select board compatible with XIAO ESP32S3.
- Install required libraries used by firmware:
- Adafruit SHT4x
- ArduinoJson
- Open
firmware/dewcontroller/dewcontroller.ino. - Build and upload.
Intended Use Notes
- Designed for dew prevention on a Celestron C9.25 corrector plate dew ring.
- Start with conservative max power and verify ring temperature behavior in field conditions.
- Confirm wiring polarity, current capacity, and fuse protection before first light.
Version
Current firmware version string in source: v5.1.0
Parts
19| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 10K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R2, R3 |
| 1 | 0.01uf | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C2 |
| 1 | 100uf | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | C3 |
| 1 | 12V Power Supply | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J1 |
| 1 | 1N4734 | Diode_THT:D_DO-41_SOD81_P7.62mm_Horizontal | D2 |
| 1 | 1N5819 | Diode_THT:D_DO-41_SOD81_P7.62mm_Horizontal | D1 |
| 1 | 220uf 25V | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | C1 |
| 1 | 330 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1 |
| 1 | Dew Heater 12V | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J2 |
| 1 | FQP 30N06L | Package_TO_SOT_THT:TO-220-3_Vertical | Q1 |
| 1 | Temperature Sensor | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J3 |
| 1 | XIAO-ESP32-S3-DIP | RF_Module:MCU_Seeed_ESP32C3_EdgeOnly | U1 |
| 1 | ~ | Converter_DCDC:Converter TS-P312 DC Buck | U3 |
| 1 | ~ | Sensor_Humidity:AHT20 | U2 |
The 15 most common of 19 parts.
Questions
How big is the Dewcontroller PCB?
It measures 72.3 × 64.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Dewcontroller use?
19 parts. 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 Dewcontroller KiCad files?
From the mpinnuck/dewcontroller-hardware repository on GitHub, at the commit this page was made from: the board is hardware/dewcontroller/dewcontroller.kicad_pcb and its schematic hardware/dewcontroller/dewcontroller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Dewcontroller design in my own project?
Its repository states no licence, so its author keeps all rights: ask mpinnuck before reusing the design.
Similar boards
- 2 layers43.9 × 27.7 mm

- 2 layers50 × 60 mm

Debate Device
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
19 parts915 - 2 layers102.9 × 96.7 mm

ISA adapter
polpo/picogus
Emulation of ISA sound cards and CD-ROM on Raspberry Pi Pico (GUS, SB/Adlib, MPU-401, Tandy, CMS, Panasonic CD-ROM) with USB mouse/joystick support
19 parts805 - 2 layers60 × 39 mm

- 2 layers70.1 × 43.2 mm

Iaq device
nkitanov/iaq_board
IAQ Board is a DIY (Do-It-Yourself) device for measuring internal air quality
19 parts396 - 2 layers80 × 80 mm

- 2 layers25.4 × 25.4 mm

Ina169
Ardumower/ardumower
Develop an open source robotic lawn mower (HW+SW reference platform)
19 parts282 - 2 layers58.4 × 28.6 mm

New rele
zmaker/arduino_cookbook
gli sketch del nuovo progetto Arduino Cookbook e dei video di YouTube
19 parts269