프로젝트 소개
TaupunktLueftung은 이슬점 차이에 기반한 지능형 환기 제어를 위한 ESP32 기반 시스템입니다. 지하실, 세탁실, 창고 등 습한 공간의 효율적이고 완전 자동 건조에 적합합니다.
이 시스템은 실내외 온도와 습도를 측정하고(SHT31 또는 DHT22 같은 센서 또는 MQTT를 통해), 이슬점을 계산하여 건조 조건이 있을 때만 환기를 활성화합니다. 즉, 외기가 습기를 흡수할 수 있을 때만 작동하며 습기를 유입시키지 않습니다. 습도 제어 모드에서는 제습 또는 가습을 통해 원하는 습도를 유지하려고 시도합니다.
환기는 릴레이를 통해 전환되며, 최적의 구성은 팬 두 개를 사용하는 것입니다. 하나는 건조한 공기를 유입하고 다른 하나는 습한 공기를 배출합니다. 이는 효과적인 기류를 만들어 목표한 제습을 달성합니다.
## 기능
- 이슬점 제어 환기: 이슬점 분석 알고리즘이 차이에 따라 환기를 제어합니다.
- WiFi 자격 증명은 액세스 포인트(`TaupunktLueftung-Setup`)를 통해 브라우저에서 구성되며 영구 저장됩니다. `secrets.h`를 수동으로 편집할 필요가 없습니다.
- 웹 인터페이스: 실시간 데이터 표시, 실시간 차트(시간별, 일별, 월별 보기), 구성 영역을 제공합니다.
- **라이트/다크 디자인(라이트/다크/시스템)** 드롭다운으로 전환 가능하며 선택은 브라우저에 저장됩니다.
- **로그인 보호(HTTP 기본 인증)** 전체 웹 인터페이스에 적용되며 사용자 이름과 비밀번호는 운영 중에 변경할 수 있습니다.
- 선택적 과냉각 방지 온도 보호.
- 선택적 과도한 저습도 방지 건조 보호.
- 선택적 습도 제어 모드로 원하는 습도 수준 유지.
- **센서 오류 시 페일세이프**: 센서 오류가 지속되면 환기가 자동으로 꺼져 안전을 보장하며 마지막 상태로 무한정 작동하지 않습니다.
- 경계 영역에서 팬/릴레이 보호를 위한 조절 가능한 지연 시간.
- MQTT 인터페이스(게시 및 구독) + Home Assistant 자동 감지.
- 모듈식: 센서 소스(하드웨어 또는 MQTT 데이터)를 선택할 수 있으며 "센서 소스" 영역에서 직접 전환 가능합니다.
- 펌웨어 백업: 업데이트 전에 현재 실행 중인 펌웨어를 `.bin` 파일로 저장할 수 있습니다.
- WiFi 자격 증명은 웹 인터페이스의 버튼으로 재설정할 수 있으며 다른 설정은 유지됩니다.
- OTA(무선) 펌웨어 업데이트 지원. Arduino IDE에서 USB로 초기 플래시한 후, 맞춤형 펌웨어 변형을 Arduino IDE에서 OTA로 업데이트하거나 웹 인터페이스에서 펌웨어 파일을 업로드할 수 있습니다.
- 성능 최적화(v4.2부터): CSS/JavaScript는 브라우저에 캐시되어 페이지 방문 시 ESP32에서 다시 로드되지 않습니다. WiFi 수정으로 모뎀 절전 모드가 영구적으로 비활성화되어 WiFi 재연결 후 지연을 방지합니다. MQTT 재연결 시도가 제한되어 연결할 수 없는 브로커가 웹 인터페이스를 차단하지 않습니다.
## 필요 구성 요소 및 설정
### 하드웨어 구성 요소
| 구성 요소 | 설명 | 대략적인 가격(EUR) |
| --- | --- | --- |
| **ESP32 개발 보드** (예: DOIT) | WiFi가 있는 마이크로컨트롤러 | 6–10 EUR |
| **SHT31 센서(실내, 선택적으로 실외)** | 온도 및 습도, I2C, 높은 정확도 | 각 5–8 EUR |
| **DHT22 센서(실외, 대안)** | 온도 및 습도, 디지털 단일 와이어, 저렴함 | 3–5 EUR |
| **LED 3개** + 저항(220–470옴) | 상태 표시등: 녹색, 노란색, 빨간색 | 1–2 EUR |
| **릴레이 모듈(1채널)** | 환기 제어용 | 2–4 EUR |
| **점퍼 와이어/브레드보드** | 설정 및 테스트용 | 2–5 EUR |
| **인클로저(선택 사항)** | ESP32 및 배선 보호 | 3–8 EUR |
**총 비용:** 약 **20–30 EUR**, 구성 및 소스에 따라 다름.
### 설정 및 배선
**ESP32 핀 배치:**
| ESP32 핀 | 기능 | 연결 대상 |
| --- | --- | --- |
| GPIO17 | DHT22 데이터 라인 | DHT22(10k옴 풀업 포함)에서 GND로 – DHT22 변형 전용 |
| GPIO16 | 릴레이 | 릴레이 IN |
| GPIO2 | 녹색 LED | 저항 + LED |
| GPIO18 | 빨간색 LED | 저항 + LED |
| GPIO19 | 노란색 LED | 저항 + LED |
| GPIO21 | SDA(I2C 데이터) | SHT31 실내 **및** SHT31 실외(공유 버스) |
| GPIO22 | SCL(I2C 클록) | SHT31 실내 **및** SHT31 실외(공유 버스) |
| 3.3V/GND | 전원 공급 | 모든 구성 요소 |
### 단순화된 ASCII 회로도
```
+----------------------------+
| ESP32 Dev |
| |
| GPIO17 --> DHT22 데이터 | (DHT22 변형 전용)
| GPIO16 --> 릴레이 IN |
| GPIO2 --> 녹색 LED |
| GPIO18 --> 빨간색 LED |
| GPIO19 --> 노란색 LED |
| GPIO21 --> SDA(SHT31) |
| GPIO22 --> SCL(SHT31) |
+-------------+--------------+
| 3.3V / GND
```
LED: 애노드(긴 핀) → 저항 → GPIO / 캐소드(짧은 핀) → GND
### 실외 센서 선택
이 프로젝트는 실외 센서에 두 가지 유형을 지원합니다:
- **SHT31(권장)** – 디지털 I2C 센서로 DHT22보다 훨씬 정확하고 안정적입니다(일반적으로 ±2% RH 대 DHT22의 ±2–5% RH), 변화에 더 빠르게 반응하며 저온에서도 신뢰할 수 있는 값을 제공합니다. I2C는 DHT22의 독점 단일 와이어 타이밍보다 더 견고하고 간섭에 덜 민감한 전송 프로토콜입니다. 작은 이슬점 차이에 기반한 제어에서는 센서 정확도가 환기 결정 품질에 직접 영향을 미칩니다.
- **DHT22** – 저렴하고 덜 정확하지만 I2C 주소 지정 없이 더 간단한 3선 배선을 사용합니다.
**두 개의 SHT31 센서에 대한 특별 참고 사항:** 실내 및 선택적 실외 SHT31이 모두 I2C를 사용하므로 두 센서는 **공유 버스**(SDA = GPIO21, SCL = GPIO22)에서 작동할 수 있습니다. 추가 데이터 라인이 필요하지 않습니다. ESP32가 두 센서를 구분할 수 있도록 SHT31에는 주소 선택을 위한 `AD`/`ADR` 핀이 있습니다:
| 센서 | ADDR/AD 핀 | 결과 I2C 주소 |
| --- | --- | --- |
| SHT31 실내 | 개방 또는 GND에 연결 | `0x44`(기본값) |
| SHT31 실외 | **3.3V**에 연결 | `0x45` |
*(일부 SHT31 모듈에는 추가 `AL`/`ALR` 핀이 있습니다 – 이는 알람/인터럽트 출력이며 주소 선택과 관련이 없습니다. 연결하지 않은 상태로 두십시오.)*
**실외 센서 유형 설정:** 실내/실외 모드(하드웨어 또는 MQTT)와 달리 웹 인터페이스에서 설정할 수 있지만, 실외 센서의 SHT31과 DHT22 선택은 의도적으로 **컴파일 시간 결정**입니다. 이렇게 하면 컴파일 중에 실제로 필요한 센서 라이브러리만 포함되어 플래시 메모리를 절약하고 존재하지 않을 수 있는 두 번째 센서와의 불필요한 I2C 통신을 피할 수 있습니다.
센서 유형을 변경하려면:
1. `TaupunktLueftung.ino`를 엽니다.
2. `//#define SENSOR_TYP_AUSSEN_SHT31` 줄을 찾습니다.
3. **SHT31 실외**(저장소의 기본값)의 경우: 줄을 활성 상태로 유지합니다(주석 처리하지 않음).
4. **DHT22 실외**의 경우: 시작 부분에 주석 마커 `//`를 다시 추가하고 DHT22가 핀 17에 연결되어 있는지 확인합니다.
**직접 컴파일하지 않고 미리 빌드된 펌웨어 변형:** GitHub의 각 [릴리스](https://github.com/mallewski/TaupunktLueftung/releases)에는 **두 개의 준비된 `.bin` 파일**이 자동으로 포함되어 있습니다 – `TaupunktLueftung_dht22.bin` 및 `TaupunktLueftung_sht31.bin`. 웹 인터페이스의 OTA 업데이트 중에 하드웨어와 일치하는 파일을 선택하기만 하면 Arduino IDE 설치가 필요 없습니다.
### 참고 사항
- **릴레이 모듈:** 230V 환기 팬을 전환하는 데 사용할 수 있습니다. **주의:** 주 전압은 자격을 갖춘 사람만 연결해야 합니다.
- **MQTT:** 외부 센서 데이터를 수신하려면 MQTT 브로커(예: Mosquitto 또는 Home Assistant)가 필요합니다. 자동 감지가 지원됩니다(Home Assistant 호환).
- **웹 인터페이스:** MQTT, 센서 소스, 임계값과 같은 모든 설정은 로그인(사용자 이름/비밀번호)으로 보호되는 브라우저 인터페이스에서 직접 구성할 수 있습니다.
- **첫 플래시 후 기본 자격 증명:** 사용자 이름 `admin`, 비밀번호는 자체 컴파일 펌웨어의 경우 `secrets.h`(`CONFIG_PASSWORD`)에서 가져오거나 [...] 둘 다 나중에 웹 인터페이스의 설정 → 액세스(로그인)에서 변경할 수 있습니다.
### 팬 권장 사항
소규모 지하실의 경우 100–150 m³/h. 스마트 홈 시스템(예: Home Assistant)을 통해 통합된 WiFi 스마트 플러그도 사용할 수 있습니다.
### 전원 공급 및 디커플링
3.3V에서 GND로 전원 핀에 최대한 가깝게 배치하십시오. 가장 효과적인 방법은 두 개의 커패시터를 병렬로 조합하는 것입니다: **전해 커패시터(470–1000 µF)**는 짧은 전압 강하용, **세라믹 커패시터(100 nF)**는 짧고 고주파 노이즈 스파이크용입니다. 전해 커패시터만으로는 고주파 성분을 적절히 처리할 수 없습니다.
### Home Assistant 통합(MQTT)
기존 Home Assistant 센서는 자동화를 통해 센서 소스로 공급할 수 있습니다(참조: [가이드: MQTT를 통한 HA 센서](https://github.com/mallewski/TaupunktLueftung/blob/main/docs/Anleitung_HA_Sensoren_via_MQTT.md)).
이 프로젝트가 마음에 들거나 유용하다면 커피 한 잔 사주실 수 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.