- 전 운영 문서 테이블명 leak_ 접두사 반영, 삭제된 마이그레이션 참조 정리, 구경로 raspi_leck_detecter→<WEB_DIR> 스크럽(DEPLOYMENT_PLAN). - docs/DEPLOYMENT_PLAN_RPI4x3.md(신규): 3대 Pi + 신규 서버 배포 로드맵. - .tours/architect-full-system.tour(신규): 19스텝 전체 아키텍처 투어. - README.md(루트, 0바이트였음): 시스템 인덱스. - .claude/settings.local.json: /doctor 지적 deny 규칙 5건 수정 (파이프 4건 와일드카드형, 포크밤 삭제) + 죽은 allow 항목 3건 정리. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01821XP36Q6t9eWKTPSEumnC
3.9 KiB
SHT30 온습도 센서 ↔ STM32F407VGT6 I2C 배선도
Sensirion SHT30(한진데이터 P4422-3 모듈)을 STM32F407VGT6의 I2C1 버스에 연결합니다. 단일 보드 sht30_fw(sensor_id=2, device_id=stm32-sht30-01)가 5분 주기로 온습도를 측정해 유선 Ethernet/TLS로 서버에 보고합니다.
상세 핀맵·전원·클럭원은 firmware/docs/HARDWARE.md §3을 따릅니다. 본 문서는 SHT30 I2C 결선 요약입니다.
센서 동작 개요
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_*)로 재판정하므로, DBleak_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초)로 설정합니다.