README 문장 정리

This commit is contained in:
seo committed 2026-08-03 04:05:18 +09:00
1 parent f4808e6493
commit 2b8b7fee64
1 file changed
+53 -80
+53 -80
View File
@@ -1,105 +1,78 @@
# 스마트 홈 환경 제어 IoT 시스템 # 스마트 홈 환경 제어 IoT 시스템
## 프로젝트 개요
본 프로젝트는 Arduino 기반 스마트 홈 환경 제어 IoT 시스템으로 실내·실외 환경 정보를 실시간으로 수집하여 전기매트, 보일러, 자동 창문을 시간·환경 조건·사용자 명령에 따라 자동 또는 수동으로 제어한다. Arduino Mega로 집 안팎의 센서 값을 읽고, 전기매트, 보일러, 창문을 조건에 따라 제어한 프로젝트입니다.
온·습도, 가스, 조도, 빗물, 창문 위치 센서를 복합적으로 사용하며, Ethernet 쉴드를 통해 원격 서버와 양방향 통신을 수행하여 실시간 모니터링 및 제어가 가능한 스마트 홈 환경을 구현하는 것을 목표로 한다. Ethernet Shield로 서버와 통신합니다. 서버 화면에서는 현재 센서값과 장치 상태를 확인하고, 일부 값을 수동으로 바꿀 수 있습니다.
## 프로젝트 목표 ## 기간
1. **실내·외 환경의 실시간 감지**
온도, 습도, 체감온도, 조도, 강우, 가스 상태 수집
2. **생활 패턴 기반 자동 제어** - 2022.12 ~ 2023.02
시간대(주/야간), 요일(평일/주말)을 고려한 제어
난방 및 창문 자동 동작
3. **안전성과 내구성 확보** ## 사용한 것
창문 모터 과부하 감지 및 자동 정지
EEPROM을 활용한 상태 유지
4. **원격 제어 및 모니터링** - `Arduino Mega`
서버를 통한 실시간 상태 확인 - `Ethernet Shield`
원격 명령 기반 수동 제어 지원 - `DHT22`
- `MQ-5`
- `MQ-7`
- `RTC DS3231`
- `Relay`
- `EEPROM`
- `PHP`
- `JavaScript`
5. **확장 가능한 IoT 구조 설계** ## 하드웨어
센서 및 제어 장치 추가가 용이한 구조
## 하드웨어 구성 | 구성 | 역할 |
| --- | --- |
| 구성 요소 | 설명 | | DHT22 | 실내, 실외, 매트 온습도 측정 |
|--------:|-------------|
| Arduino Mega | 메인 제어 보드 |
| Ethernet Shield | 서버와 유선 통신 |
| DHT22 | 실내·실외·매트 온습도 측정 |
| MQ-5 | LPG 가스 감지 | | MQ-5 | LPG 가스 감지 |
| MQ-7 | CO 가스 감지 | | MQ-7 | CO 가스 감지 |
| 조도 센서 | 실내 밝기 측정 | | 조도 센서 | 실내 밝기 측정 |
| 빗물 센서 | 강우 감지 | | 빗물 센서 | 강우 감지 |
| 리니어 액추에이터 | 자동 창문 개폐 | | 리니어 액추에이터 | 창문 개폐 |
| 릴레이 | 전기매트 / 보일러 제어 | | 릴레이 | 전기매트, 보일러 제어 |
| RTC DS3231 | 실시간 시계 | | RTC DS3231 | 시간 기준 제어 |
## 구현 기능 ## 동작
### 1) 전기매트 스마트 제어
전기매트 하부(베개 아래)에 온도 센서를 매립하여 단순 온도 제어가 아닌 체감온도 기반 제어를 구현하였다.
**동작방식**
- 사용자가 설정한 하한 / 상한 온도 범위를 기준으로 릴레이 제어
- 일정 온도 범위 내에서 자동으로 ON / OFF 반복
**예시** ### 전기매트
- 현재 매트 온도: 38℃
- 설정값: 하한: 40℃, 상한 45℃
매트는 45℃까지 작동 후 꺼진 뒤, 40℃가 되면 다시 작동을 시작하는 방식으로 항온 유지
### 2) 보일러 스마트 제어 - 매트 쪽 온도 센서를 읽습니다.
기존 보일러 리모컨의 온도 센서를 탈착한 뒤, 관로 포설된 여분의 랜선 가닥을 이용해 직결하였다. - 설정한 하한 온도보다 낮으면 릴레이를 켭니다.
보일러실 내부 온도조절기 배선에는 저항 + 릴레이 회로를 추가하여 현재 온도를 제어하는 방식으로 보일러를 동작시킨다. - 설정한 상한 온도에 도달하면 릴레이를 끕니다.
- 하한/상한을 나눠 릴레이가 짧은 간격으로 반복 전환되지 않게 했습니다.
**동작방식**
- 실내 온·습도 센서 기반
- 시간대 / 창문 상태 / 사용자 설정값 반영
**예시** ### 보일러
- 창문 상태: 닫힘 또는 자동
- 시간: 설정한 귀가 2시간 전
- 실내 온도: 19.6℃
- 설정값: 하한: 20℃, 상한 21℃
21℃까지 보일러 가동 후 정지, 20℃가 되면 다시 작동을 시작하는 방식으로 항온 유지
전기매트와 동일한 **히스테리시스** 제어 방식
### 3) 창문 스마트 제어
이중창 구조물에 리니어 액추에이터를 고정하여 창문을 직접 밀고 당기는 방식의 자동 개폐 시스템을 구현하였다.
**동작방식** - 실내 온도와 설정값을 비교합니다.
- 실내 공기질 - 귀가 시간, 창문 상태, 요일 값을 조건에 넣습니다.
- 실외 공기질 - 보일러 온도조절기 배선에 릴레이 회로를 연결해 제어했습니다.
- 실외 수분(강우) 센서
- 시간대 (외출 여부)
실내 공기질이 나쁘고 실외에 비가 오지 않을 경우 창문을 자동으로 개방하여 환기 수행 ### 창문
**안전 및 복구 기능** - 실내 공기질, 실외 공기질, 강우 여부를 함께 봅니다.
전압 센서 기반 과부하 감지 - 비가 오지 않고 환기가 필요하면 리니어 액추에이터를 움직입니다.
과부하 발생 시: - 전압값으로 과부하를 감지하고, 과부하가 있으면 이동을 멈춘 뒤 이전 위치 기준으로 복구를 시도합니다.
1. 즉시 창문 이동 중지
2. 이전 창문 위치를 기준으로 이동하여 복구 시도
현재까지 구조물 파손 없이 안정적으로 테스트 중
구조물 치수 문제로 인해 현재도 지속적인 수정 및 개선 진행 중
## 추가 예정 기능 ## 서버
설계 및 구상 단계 - `server/index.php`: 상태 화면
- 가습기 자동 제어 - `server/communication.php`: Arduino 통신 처리
- 전등 스위치 스마트화 - `server/script.js`: 화면 갱신과 제어 요청
- `server/setup.php`: 초기 설정
## 개선 계획 ## Arduino 코드
본 프로젝트는 단순한 스마트 홈 구현이 아니라, - `IOT_PROJECT_V1.ino`: 메인 루프
실제 생활 공간에서 상시 운용 가능한 자동화 시스템을 목표로 한다. - `communication.ino`: 서버 통신
- `window_control.ino`: 창문 제어
- `value_change_check.ino`: 값 변경 확인
- `watch.ino`: 시간 처리
- `serial_print.ino`: 디버그 출력
안전, 신뢰성, 확장성을 모두 고려한 설계를 통해 ## 메모
지속적으로 진화하는 개인 스마트 홈 플랫폼으로 발전시키는 것이 최종 목표이다.
- EEPROM에는 장치 상태와 설정값 일부를 저장합니다.
- 창문 구조물은 실제 창틀에 맞춰 계속 수정이 필요했습니다.
- 자동 제어 조건은 실제 생활 패턴에 맞춰 조정했습니다.