POSA_LEAKSMS/docs/wiring_diagram.md
cw2007 3c8e6d6957 docs(sht30): 온습도 2번 모듈 문서를 STM32 기본 → Raspberry Pi 기본으로 정합
실제 배포는 Raspberry Pi 4(raspberry_pi4_sht30)인데 다수 문서가 STM32를
"현재 단일보드"로 서술하던 드리프트를 교정(README/SYSTEM_OVERVIEW/
DEPLOYMENT_PLAN은 이미 Pi 기준).

- SHT30_SENSOR2_SETUP.md: Pi 기본 전면 재작성, STM32는 마이그레이션 대안
- README.md / wiring_diagram.md / INSTALL_PI_SERVER.md: Pi 기본으로 재구성
- ops_checks.php / security_evidence.php: /etc/sht30-sensor.env → config_local.py
- api/sensor_data.php: 헤더 예시 device_id rpi4-sht30-01
- examples/*.html: device_id 교정 + 구식 env 예제 폐기 배너
- 전압 경고 정정: "5V=소자 손상"은 틀림(모듈 2.4~5.5V). Pi에서 3.3V 쓰는
  이유는 Pi GPIO 3.3V 전용(5V 시 SDA/SCL 5V → Pi 손상)
2026-07-10 10:42:31 +09:00

86 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SHT30 온습도 센서 I2C 배선도 (Raspberry Pi 4 기본 / STM32 변형)
Sensirion SHT30(한진데이터 P4422-3 모듈) I2C 배선 요약입니다.
> **현재 배포 = Raspberry Pi 4 Model B.** Pi 에서는 SHT30 을 40핀 헤더 I2C 버스 1에 연결합니다:
> **VCC→3.3V(핀 1), GND→핀 6, SDA→GPIO2/핀 3, SCL→GPIO3/핀 5, ADDR→GND(0x44)**, SDA/SCL 4.7kΩ 풀업→3.3V(모듈 내장 시 생략).
> 상세 도해는 `deploy/03_pi_b_sht30_id2/WIRING.html`(SVG 핀맵) 및 [SHT30_SENSOR2_SETUP.md](./SHT30_SENSOR2_SETUP.md) §2.1 을 보세요.
> `sensor_id=2`, `device_id=rpi4-sht30-01`, `raspberry_pi4_sht30/config.py REPORT_INTERVAL=300`(5분).
>
> **아래 §는 STM32F407VGT6 변형**(마이그레이션 트랙 `firmware/`, 하드웨어 미검증·현재 배포와 무관)의 I2C1(PB6/PB7) 배선입니다. 상세 핀맵·전원·클럭원은 [firmware/docs/HARDWARE.md](../firmware/docs/HARDWARE.md) §3.
## 센서 동작 개요
```
SHT30 (I2C, 7-bit 주소 0x44)
명령 0x2C06 (high-repeatability, clock-stretch off)
→ 약 20ms 대기 → 6바이트 read (T 2B + CRC, RH 2B + CRC)
→ 펌웨어가 온도(℃)/상대습도(%)로 변환
```
SHT30 모듈은 3.3V 단일 전원으로 동작합니다. SCL/SDA는 오픈드레인이므로 외부 풀업이 필요합니다(모듈에 내장 풀업이 있으면 생략).
---
## 필요 부품 (최소 구성)
| 부품 | 규격 | 용도 |
|------|------|------|
| STM32F407VGT6 보드 | LQFP-100, Cortex-M4F | 메인 컨트롤러 (`sht30_fw`) |
| SHT30 온습도 모듈 | 한진데이터 P4422-3 (I2C) | 온도/습도 측정 |
| 풀업 저항 | **4.7kΩ × 2** | SCL/SDA 풀업 (모듈 내장 풀업 시 생략) |
| LAN8720 PHY 모듈 | RMII | 유선 Ethernet |
| 3.3V 전원 | - | MCU/PHY/SHT30 공통 레일 |
| 점퍼 와이어 | - | 연결 |
---
## I2C 배선 (STM32 I2C1)
| STM32 핀 | 신호 | AF | SHT30 핀 | 비고 |
|----------|------|----|----------|------|
| **PB6** | `I2C1_SCL` | AF4 | SCL | 오픈드레인, 4.7kΩ 풀업 → 3.3V |
| **PB7** | `I2C1_SDA` | AF4 | SDA | 오픈드레인, 4.7kΩ 풀업 → 3.3V |
| 3.3V | 전원 | - | VDD | 공통 3.3V 레일 |
| GND | 접지 | - | GND | 공통 GND |
- 7-bit 주소: **0x44** (`APP_SHT30_I2C_ADDR`). ADDR 핀을 GND에 연결한 기본값. ADDR을 VDD에 연결하면 0x45.
- I2C 속도: 100kHz(Standard) 권장.
### 회로도
```
SHT30 모듈 STM32F407
┌────────┐
│ VDD ──┼────────────── 3.3V ──┬──[4.7kΩ]──┐ ┌──[4.7kΩ]── 3.3V
│ SCL ──┼────────────── PB6 ───┘ │ │
│ SDA ──┼────────────── PB7 ────────────────┼───┘
│ GND ──┼────────────── GND │
│ ADDR ─┼── GND (주소 0x44; VDD 면 0x45) │
└────────┘
```
> ADDR 핀 결선으로 0x44(ADDR→GND) / 0x45(ADDR→VDD)가 결정됩니다. 본 설계는 **0x44** 고정입니다.
---
## 동작 확인
펌웨어는 USART3(PD8 TX / PD9 RX, AF7, 115200 8N1) 콘솔에 측정/보고 로그를 출력합니다. 첫 부팅 후 다음을 확인합니다.
- I2C1 초기화 및 SHT30 주소 0x44 응답
- 첫 측정값(온도/습도) 및 startup 보고
- 네트워크/SNTP/TLS 핸드셰이크 → 서버 200 응답
정상 측정 범위(벗어나면 펌웨어가 `metric_status="out_of_range"` 로 표시): 온도 `[-40, 125]°C`, 상대습도 `[0, 100]%`.
> 참고: `out_of_range` 는 **펌웨어 전용 타당성(plausibility) 분류**입니다. 서버는 이 값을 무시하고 운영 임계(`METRIC_*`)로 재판정하므로, DB `leak_sensor_metric.metric_status` 에는 `normal`/`high_temp`/`low_temp`/`high_humidity`/`low_humidity` 만 저장되며 `out_of_range` 는 저장되지 않습니다.
---
## 주의사항
- SCL/SDA는 오픈드레인이므로 **외부 풀업(4.7kΩ)** 없이 동작하지 않습니다(모듈 내장 풀업이 있는 경우만 예외).
- I2C1(PB6/PB7)과 RMII(PB11/PB12/PB13)는 같은 PB 포트지만 핀이 분리되어 충돌이 없습니다.
- 케이블이 길면(1m 이상) I2C 풀업을 더 낮은 값(예 2.2kΩ)으로 조정하거나 속도를 낮춥니다.
- 측정 주기는 펌웨어 `APP_SHT30_REPORT_INTERVAL_SEC`(기본 300초)로 설정합니다.