Wiznet makers

Lihan__

Published March 31, 2026 ©

52 UCC

8 WCC

3 VAR

0 Contests

0 Followers

0 Following

Original Link

DiSoCon2 — Differential Solar Controller V2

A fully open-source, ESP32-S3 based differential solar thermal controller with dual-tank switching, PT1000 sensing, TRIAC control, ethernet.

COMPONENTS
PROJECT DESCRIPTION

[English Version]

DiSoCon2 — Differential Solar Controller V2

#ESP32-S3 #W5500 #SolarThermal #HomeAutomation #MQTT #ESPHome #TRIAC #PT1000 #HomeAssistant


01 — What is this project?

Most solar thermal controllers are dumb devices. They turn the pump on or off based on a fixed temperature threshold — no home automation integration, no remote monitoring, no smart logic. The author had exactly this kind of controller and decided to replace it with something better.

DiSoCon2 is a fully open-source differential solar thermal controller built on the ESP32-S3. It manages the pumps and valves in a solar hot water system — deciding when to run the solar collector pump, which storage tank to fill, and when to protect the system from freezing or overheating. All thresholds are configurable, and it integrates directly with Home Assistant and OpenHAB via MQTT.

W5500 wired Ethernet is supported alongside Wi-Fi — important for reliable 24/7 operation in an electrical enclosure where Wi-Fi signal may be weak or intermittent.


02 — What is a differential solar controller?

A solar thermal system heats water using roof-mounted solar collectors. The controller's job is to decide when to run the pump that circulates water between the collector and the storage tank.

The key logic is differential temperature (ΔT):

  • If the collector temperature is significantly higher than the tank temperature → run the pump (free solar energy available)
  • If the difference is too small → stop the pump (running it would waste electricity or even cool the tank)
  • If the collector gets too hot → overheat protection
  • If the collector drops below freezing → anti-freeze protection (run the pump briefly to prevent pipe damage)

DiSoCon2 handles all of this autonomously, and adds dual-tank switching — it can choose between two storage tanks based on which one needs heating more.


03 — System architecture

The system is split into two boards housed in a DIN-rail enclosure:

[Solar collectors]          [Storage tanks]
  PT1000 sensors              DS18B20 sensors
        ↓                           ↓
[Control Board — ESP32-S3]
  ├─ ATmega32U4 (PT1000 reading via UART/RS485)
  ├─ ADS1115 (5-button interface)
  ├─ 20×4 I2C LCD (real-time status)
  ├─ W5500 Ethernet / Wi-Fi (MQTT, Home Assistant)
  └─ RS-485 (optional remote sensor)
        ↓
[Power Board — 230V AC]
  ├─ 2× TRIAC (pump control)
  ├─ 2× Relay (3-way valve switching)
  └─ Zero-crossing detection
        ↓
[Pumps + 3-way valves]

The control board is the brain — it reads temperatures, runs the differential logic, and sends commands. The power board is the muscle — it safely switches 230V AC loads via TRIACs and relays, with full galvanic isolation via optocouplers.


04 — Why W5500?

🔷 24/7 reliability in an electrical enclosure

This controller lives in a DIN-rail enclosure — typically mounted inside an electrical panel or utility room. These environments are often metal-enclosed, which can block or weaken Wi-Fi signals. A controller that loses connectivity intermittently is unreliable, and a solar controller that can't phone home defeats the purpose of making it smart.

W5500 wired Ethernet eliminates this concern entirely. The connection is stable regardless of the RF environment inside the enclosure.

🔷 MQTT needs a stable connection

The controller publishes temperature readings and system state to an MQTT broker for Home Assistant integration. MQTT is a persistent connection — not a one-shot HTTP request. If Wi-Fi drops and reconnects, the MQTT session has to be re-established, and messages sent during the gap are lost.

W5500's hardware TCP/IP stack maintains the connection stably without burdening the ESP32-S3.

🔷 Both are supported — user's choice

W5500 Ethernet is not mandatory. The project supports both W5500 and Wi-Fi, letting the user choose based on their installation. For enclosures near a network switch, Ethernet is the reliable choice. For remote installations, Wi-Fi remains available.

 Wi-FiW5500 Ethernet
Metal enclosure reliabilityDepends on signalAlways stable
MQTT session stabilityDrops on reconnectMaintained
Installation flexibilityNo cable neededNeeds cable

05 — Key components

🧠 ESP32-S3 — the control brain

Handles all application logic: temperature differential calculations, pump/valve control decisions, MQTT communication, LCD display, and button input. Connected to the ATmega32U4 over UART/RS485 for PT1000 readings.

🌐 WIZnet W5500 — stable Ethernet

Hardware TCP/IP stack via SPI. Provides reliable Ethernet connectivity for MQTT and Home Assistant integration without burdening the ESP32-S3 CPU.

🌡️ PT1000 + ATmega32U4 — precision temperature sensing

PT1000 probes are high-accuracy industrial temperature sensors. The author couldn't replace the existing PT1000 probes already installed on the solar collectors, so the design incorporates a dedicated ATmega32U4 to read them accurately. Up to 4 PT1000 sensors supported.

⚡ Power Board — TRIAC + relay 230V control

MOC3021 optocoupler + BTA41 TRIAC pairs control the AC pumps with zero-crossing detection for clean switching. Relays handle the 3-way valves. HLK-PM01 provides isolated 5VDC from the 230V supply. Full galvanic isolation protects the ESP32-S3 from the mains side.

🖥️ 20×4 LCD + 5-button interface

Standalone operation without any network connection. All thresholds and settings are configurable directly via the buttons. The LCD shows real-time temperatures, differential values, and system state at a glance.


06 — Application scenarios

01. Solar hot water system — smart home integration

Connect an existing solar thermal system to Home Assistant or OpenHAB via MQTT. Monitor collector and tank temperatures in real time, track pump runtime, and receive alerts for overheat or anti-freeze events. #SolarThermal #HomeAssistant #MQTT

02. Dual-tank solar systems — optimized heat distribution

For homes with both a solar tank and a boiler-heated tank, DiSoCon2 switches the 3-way valve to direct solar energy to whichever tank needs it most. Maximizes solar yield and reduces boiler runtime. #DualTank #EnergyEfficiency #Solar

03. Off-grid or rural installations — standalone operation

No network required. The LCD and button interface provide full control and status without any home automation system. W5500 or Wi-Fi can be added later when connectivity becomes available. #OffGrid #Standalone #Rural

04. Industrial PT1000 sensor retrofitting

The ATmega32U4 PT1000 reader is a reusable component for any project that needs to read industrial RTD probes. Useful for retrofitting smart monitoring onto existing thermal systems that already have PT1000 sensors installed. #PT1000 #Industrial #Retrofit

05. Open hardware reference design

Full schematics and BOM are published on GitHub and OSHWLab under CC BY-NC-SA. Anyone building a DIN-rail ESP32-S3 controller with Ethernet, PT1000 sensing, and 230V switching can use this as a reference. #OpenHardware #DIY #DINRail


Conclusion

A dumb solar controller made smart — open hardware, local-first, no cloud required.

DiSoCon2 replaces a fixed-threshold analog controller with a fully configurable differential controller that speaks MQTT, integrates with Home Assistant, and operates autonomously even without a network connection.

The two-board DIN-rail architecture cleanly separates the 3.3V control logic from the 230V power switching, with full galvanic isolation. W5500 Ethernet ensures the MQTT connection stays stable inside the metal enclosure where Wi-Fi would be unreliable.

  • ✅ Differential ΔT control with configurable thresholds and hysteresis
  • ✅ Dual-tank switching with 3-way valve control
  • ✅ Anti-freeze and overheat protection
  • ✅ W5500 Ethernet + Wi-Fi — both supported
  • ✅ MQTT integration for Home Assistant / OpenHAB
  • ✅ Standalone operation via 20×4 LCD + 5 buttons
  • ✅ PT1000 industrial temperature sensors via ATmega32U4
  • ✅ 230V TRIAC + relay control with galvanic isolation
  • ✅ Open hardware — schematics, BOM, firmware on GitHub & OSHWLab

Q&A

Q. What is a differential solar controller? A device that controls the pump in a solar thermal system based on the temperature difference (ΔT) between the solar collector and the storage tank. If the collector is significantly hotter than the tank, the pump runs to transfer heat. If the difference is too small, the pump stops to avoid wasting electricity.

Q. What is PT1000? A type of industrial temperature sensor (RTD — Resistance Temperature Detector). Its resistance is exactly 1000Ω at 0°C and increases predictably with temperature. Widely used in industrial and HVAC applications for high-accuracy measurement. More accurate than the common NTC thermistors used in consumer devices.

Q. What is a TRIAC? A semiconductor switch for AC circuits. Unlike a relay (which uses a mechanical contact), a TRIAC switches electronically and can control the AC pump smoothly. Zero-crossing detection ensures the TRIAC fires at the right moment in the AC cycle, reducing electrical noise and wear.

Q. Why use an ATmega32U4 for PT1000 reading? PT1000 sensors require precise analog signal conditioning. The ATmega32U4 handles the ADC reading and signal processing, sending the result to the ESP32-S3 over UART/RS485. This offloads the precision analog work to a dedicated chip and keeps the ESP32-S3 focused on control logic and networking.

Q. Why does W5500 matter in a DIN-rail enclosure? DIN-rail enclosures are often inside metal electrical panels, which block or weaken Wi-Fi signals. W5500 wired Ethernet provides a stable connection regardless of the RF environment, ensuring MQTT messages are reliably delivered to Home Assistant without connection drops.

Q. Can it run without a network connection? Yes. The 20×4 LCD displays real-time temperatures and system state, and all thresholds are configurable via the 5-button interface. Network connectivity (W5500 or Wi-Fi) is optional and adds MQTT/Home Assistant integration on top of standalone operation.



[한글 버전]

DiSoCon2 — 태양열 온수 차동 컨트롤러 V2

#ESP32-S3 #W5500 #태양열 #홈오토메이션 #MQTT #ESPHome #TRIAC #PT1000 #HomeAssistant


01 — 이 프로젝트는 무엇인가?

대부분의 태양열 컨트롤러는 단순한 기기입니다. 고정된 온도 임계값을 기준으로 펌프를 켜고 끌 뿐 — 홈오토메이션 연동도 없고 원격 모니터링도 없습니다. 개발자도 이런 구형 컨트롤러를 쓰다가 더 스마트한 걸 직접 만들기로 했습니다.

DiSoCon2는 ESP32-S3 기반의 완전 오픈소스 태양열 차동 컨트롤러입니다. 태양열 온수 시스템의 펌프와 밸브를 관리합니다 — 언제 태양열 순환 펌프를 돌릴지, 어느 저장 탱크를 채울지, 동파나 과열로부터 시스템을 언제 보호할지를 자율적으로 판단합니다. 모든 임계값은 설정 가능하고, MQTT로 Home Assistant와 OpenHAB에 직접 연동됩니다.

W5500 유선 이더넷이 Wi-Fi와 함께 지원됩니다 — Wi-Fi 신호가 약하거나 불안정할 수 있는 전기 배선함 환경에서 24/7 안정적인 동작을 위해 중요합니다.


02 — 태양열 차동 컨트롤러란?

태양열 시스템은 지붕에 설치된 태양열 집열판으로 물을 가열합니다. 컨트롤러의 역할은 집열판과 저장 탱크 사이에 물을 순환시키는 펌프를 언제 돌릴지 결정하는 겁니다.

핵심 로직은 **차동 온도(ΔT)**입니다:

  • 집열판 온도가 탱크 온도보다 충분히 높으면 → 펌프 가동 (공짜 태양 에너지 활용)
  • 차이가 너무 작으면 → 펌프 정지 (전기 낭비 방지)
  • 집열판이 너무 뜨거워지면 → 과열 보호
  • 집열판이 영하로 떨어지면 → 동파 방지 (펌프 잠깐 가동해서 배관 동파 예방)

DiSoCon2는 이 모든 것을 자율적으로 처리하고, 여기에 이중 탱크 전환까지 추가했습니다 — 두 개의 저장 탱크 중 어느 쪽에 열을 보낼지 선택할 수 있습니다.


03 — 시스템 구조

두 개의 보드가 DIN 레일 인클로저 안에 장착됩니다:

[태양열 집열판]              [저장 탱크들]
  PT1000 센서                DS18B20 센서
        ↓                          ↓
[제어 보드 — ESP32-S3]
  ├─ ATmega32U4 (PT1000 읽기, UART/RS485)
  ├─ ADS1115 (5버튼 인터페이스)
  ├─ 20×4 I2C LCD (실시간 상태 표시)
  ├─ W5500 이더넷 / Wi-Fi (MQTT, Home Assistant)
  └─ RS-485 (원격 센서 옵션)
        ↓
[전력 보드 — 230V AC]
  ├─ 2× TRIAC (펌프 제어)
  ├─ 2× 릴레이 (3방향 밸브 전환)
  └─ 영점 교차 감지
        ↓
[펌프 + 3방향 밸브]

제어 보드가 두뇌 — 온도를 읽고 차동 로직을 실행하고 명령을 보냅니다. 전력 보드가 근육 — 옵토커플러로 완전 갈바닉 절연을 유지하면서 230V AC 부하를 안전하게 전환합니다.


04 — 왜 W5500인가?

🔷 전기 배선함 안에서 24/7 안정성

이 컨트롤러는 DIN 레일 인클로저에 장착됩니다 — 보통 전기 패널이나 기계실 안에 설치됩니다. 이런 환경은 금속으로 둘러싸여 Wi-Fi 신호를 차단하거나 약하게 만들 수 있습니다. 연결이 간헐적으로 끊기는 컨트롤러는 신뢰할 수 없고, 홈 네트워크와 통신이 안 되는 스마트 컨트롤러는 스마트의 의미가 없습니다.

W5500 유선 이더넷은 이 문제를 완전히 해결합니다. 인클로저 내부의 RF 환경에 관계없이 연결이 안정적입니다.

🔷 MQTT는 안정적인 연결이 필요하다

컨트롤러는 온도 데이터와 시스템 상태를 MQTT 브로커에 지속적으로 발행합니다. MQTT는 지속적인 연결입니다 — 일회성 HTTP 요청이 아닙니다. Wi-Fi가 끊겼다가 재연결되면 MQTT 세션을 다시 수립해야 하고, 그 사이에 보낸 메시지는 유실됩니다.

W5500의 하드웨어 TCP/IP 스택이 ESP32-S3에 부담 없이 연결을 안정적으로 유지합니다.

🔷 둘 다 지원 — 사용자 선택

W5500 이더넷이 필수는 아닙니다. W5500과 Wi-Fi 모두 지원하므로 설치 환경에 따라 선택할 수 있습니다. 네트워크 스위치 근처 인클로저라면 이더넷이 안정적인 선택입니다. 원격 설치 환경이라면 Wi-Fi도 사용 가능합니다.

 Wi-FiW5500 이더넷
금속 인클로저 안정성신호에 따라 다름항상 안정적
MQTT 세션 유지재연결 시 끊김유지됨
설치 유연성케이블 불필요케이블 필요

05 — 핵심 구성 요소

🧠 ESP32-S3 — 제어 두뇌

차동 온도 계산, 펌프/밸브 제어 결정, MQTT 통신, LCD 표시, 버튼 입력을 모두 처리합니다. PT1000 읽기를 위해 ATmega32U4와 UART/RS485로 연결됩니다.

🌐 WIZnet W5500 — 안정적인 이더넷

SPI를 통한 하드웨어 TCP/IP 스택. ESP32-S3 CPU 부담 없이 MQTT와 Home Assistant 연동을 위한 안정적인 이더넷 연결을 제공합니다.

🌡️ PT1000 + ATmega32U4 — 정밀 온도 측정

PT1000은 산업용 고정밀 온도 센서입니다. 개발자는 태양열 집열판에 이미 설치된 PT1000 프로브를 교체할 수 없었기 때문에, 전용 ATmega32U4를 사용해 정확하게 읽는 구조를 설계했습니다. 최대 4개 PT1000 센서 지원.

⚡ 전력 보드 — TRIAC + 릴레이 230V 제어

MOC3021 옵토커플러 + BTA41 TRIAC 쌍이 영점 교차 감지로 AC 펌프를 깔끔하게 제어합니다. 릴레이는 3방향 밸브를 담당합니다. HLK-PM01이 230V에서 5VDC를 공급합니다. 모든 출력에 옵토커플러로 완전 갈바닉 절연.

🖥️ 20×4 LCD + 5버튼 인터페이스

네트워크 없이 독립 동작합니다. 모든 임계값과 설정을 버튼으로 직접 변경할 수 있습니다. LCD에서 실시간 온도, 차동값, 시스템 상태를 한눈에 확인합니다.


06 — 응용 시나리오

01. 태양열 온수 시스템 — 스마트홈 연동

기존 태양열 온수 시스템을 MQTT로 Home Assistant나 OpenHAB에 연결합니다. 집열판과 탱크 온도를 실시간 모니터링하고, 펌프 가동 시간을 추적하고, 과열/동파 알림을 받습니다. #태양열 #HomeAssistant #MQTT

02. 이중 탱크 시스템 — 최적 열 분배

태양열 탱크와 보일러 탱크를 모두 보유한 가정에서, DiSoCon2가 3방향 밸브를 전환해 태양 에너지를 더 필요한 탱크로 보냅니다. 태양열 수율을 최대화하고 보일러 가동을 줄입니다. #이중탱크 #에너지효율 #태양열

03. 오프그리드 설치 — 독립 운영

네트워크가 없어도 됩니다. LCD와 버튼 인터페이스로 홈오토메이션 시스템 없이도 완전한 제어와 상태 확인이 가능합니다. #오프그리드 #독립운영 #농촌

04. 기존 PT1000 센서 레트로핏

ATmega32U4 PT1000 리더는 산업용 RTD 프로브를 읽어야 하는 모든 프로젝트에 재사용 가능한 컴포넌트입니다. PT1000이 이미 설치된 기존 열 시스템에 스마트 모니터링을 추가할 때 유용합니다. #PT1000 #산업 #레트로핏

05. 오픈 하드웨어 레퍼런스 설계

전체 회로도와 BOM이 CC BY-NC-SA로 GitHub과 OSHWLab에 공개됩니다. 이더넷, PT1000 측정, 230V 스위칭을 갖춘 DIN 레일 ESP32-S3 컨트롤러를 만드는 누구에게나 레퍼런스가 됩니다. #오픈하드웨어 #DIY #DINRail


결론

구형 태양열 컨트롤러를 스마트하게 — 오픈 하드웨어, 로컬 우선, 클라우드 불필요.

DiSoCon2는 고정 임계값 아날로그 컨트롤러를 완전 설정 가능한 차동 컨트롤러로 대체합니다. MQTT로 통신하고, Home Assistant에 연동하고, 네트워크 없이도 자율적으로 동작합니다.

2보드 DIN 레일 구조가 3.3V 제어 회로와 230V 전력 스위칭을 깔끔하게 분리하고, 완전 갈바닉 절연을 제공합니다. W5500 이더넷이 금속 인클로저 안에서 MQTT 연결을 안정적으로 유지합니다.

  • ✅ 설정 가능한 임계값과 히스테리시스를 가진 차동 ΔT 제어
  • ✅ 3방향 밸브를 통한 이중 탱크 전환
  • ✅ 동파 및 과열 보호
  • ✅ W5500 이더넷 + Wi-Fi 동시 지원
  • ✅ Home Assistant / OpenHAB MQTT 연동
  • ✅ 20×4 LCD + 5버튼으로 독립 운영 가능
  • ✅ ATmega32U4를 통한 PT1000 산업용 온도 센서 지원
  • ✅ 갈바닉 절연 230V TRIAC + 릴레이 제어
  • ✅ GitHub & OSHWLab 오픈 하드웨어 공개

Q&A

Q. 태양열 차동 컨트롤러란 무엇인가요? 태양열 시스템에서 집열판과 저장 탱크 사이의 온도 차(ΔT)를 기반으로 펌프를 제어하는 장치입니다. 집열판이 탱크보다 충분히 뜨거우면 펌프를 돌려 열을 전달합니다. 차이가 너무 작으면 전기 낭비를 막기 위해 펌프를 정지합니다.

Q. PT1000이란 무엇인가요? 산업용 정밀 온도 센서(RTD — 저항 온도 감지기)입니다. 0°C에서 정확히 1000Ω의 저항을 가지며 온도에 따라 예측 가능하게 변합니다. 소비자 기기에서 흔히 쓰는 NTC 서미스터보다 정확도가 높아 산업 및 HVAC 분야에 널리 사용됩니다.

Q. TRIAC이란 무엇인가요? AC 회로용 반도체 스위치입니다. 기계식 접점을 사용하는 릴레이와 달리 전자적으로 전환하며 AC 펌프를 부드럽게 제어할 수 있습니다. 영점 교차 감지로 AC 사이클의 적절한 시점에 점화해 전기 노이즈와 마모를 줄입니다.

Q. PT1000 읽기에 왜 ATmega32U4를 사용하나요? PT1000 센서는 정밀한 아날로그 신호 처리가 필요합니다. ATmega32U4가 ADC 읽기와 신호 처리를 전담하고 결과를 UART/RS485로 ESP32-S3에 전달합니다. 정밀 아날로그 작업을 전용 칩에 오프로드해 ESP32-S3는 제어 로직과 네트워킹에 집중할 수 있습니다.

Q. DIN 레일 인클로저에서 W5500이 왜 중요한가요? DIN 레일 인클로저는 종종 금속 전기 패널 안에 있어 Wi-Fi 신호를 차단하거나 약하게 만듭니다. W5500 유선 이더넷은 RF 환경에 관계없이 안정적인 연결을 제공해 Home Assistant로의 MQTT 메시지가 끊김 없이 전달됩니다.

Q. 네트워크 없이도 동작하나요? 네. 20×4 LCD가 실시간 온도와 시스템 상태를 표시하고, 5버튼 인터페이스로 모든 임계값을 설정할 수 있습니다. 네트워크 연결(W5500 또는 Wi-Fi)은 선택 사항이며, MQTT/Home Assistant 연동을 독립 운영 위에 추가하는 형태입니다.

Documents
Comments Write