README 문장 정리 되돌림

This commit is contained in:
seo committed 2026-08-03 04:11:50 +09:00
1 parent 2b8b7fee64
commit a65276f2de
1 file changed
+80 -53
+80 -53
View File
@@ -1,78 +1,105 @@
# 스마트 홈 환경 제어 IoT 시스템 # 스마트 홈 환경 제어 IoT 시스템
## 프로젝트 개요
Arduino Mega로 집 안팎의 센서 값을 읽고, 전기매트, 보일러, 창문을 조건에 따라 제어한 프로젝트입니다. 본 프로젝트는 Arduino 기반 스마트 홈 환경 제어 IoT 시스템으로 실내·실외 환경 정보를 실시간으로 수집하여 전기매트, 보일러, 자동 창문을 시간·환경 조건·사용자 명령에 따라 자동 또는 수동으로 제어한다.
Ethernet Shield로 서버와 통신합니다. 서버 화면에서는 현재 센서값과 장치 상태를 확인하고, 일부 값을 수동으로 바꿀 수 있습니다. 온·습도, 가스, 조도, 빗물, 창문 위치 센서를 복합적으로 사용하며, Ethernet 쉴드를 통해 원격 서버와 양방향 통신을 수행하여 실시간 모니터링 및 제어가 가능한 스마트 홈 환경을 구현하는 것을 목표로 한다.
## 기간 ## 프로젝트 목표
1. **실내·외 환경의 실시간 감지**
온도, 습도, 체감온도, 조도, 강우, 가스 상태 수집
- 2022.12 ~ 2023.02 2. **생활 패턴 기반 자동 제어**
시간대(주/야간), 요일(평일/주말)을 고려한 제어
난방 및 창문 자동 동작
## 사용한 것 3. **안전성과 내구성 확보**
창문 모터 과부하 감지 및 자동 정지
EEPROM을 활용한 상태 유지
- `Arduino Mega` 4. **원격 제어 및 모니터링**
- `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에는 장치 상태와 설정값 일부를 저장합니다.
- 창문 구조물은 실제 창틀에 맞춰 계속 수정이 필요했습니다.
- 자동 제어 조건은 실제 생활 패턴에 맞춰 조정했습니다.