From 2b8b7fee64a486b37fc0929fe0cf6b02b2615053 Mon Sep 17 00:00:00 2001 From: seo Date: Mon, 3 Aug 2026 04:05:18 +0900 Subject: [PATCH] =?UTF-8?q?README=20=EB=AC=B8=EC=9E=A5=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 133 ++++++++++++++++++++++-------------------------------- 1 file changed, 53 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index e7edf75..56ea7f5 100644 --- a/README.md +++ b/README.md @@ -1,105 +1,78 @@ # 스마트 홈 환경 제어 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 구조 설계** -센서 및 제어 장치 추가가 용이한 구조 +## 하드웨어 -## 하드웨어 구성 - -| 구성 요소 | 설명 | -|--------:|-------------| -| Arduino Mega | 메인 제어 보드 | -| Ethernet Shield | 서버와 유선 통신 | -| DHT22 | 실내·실외·매트 온습도 측정 | +| 구성 | 역할 | +| --- | --- | +| DHT22 | 실내, 실외, 매트 온습도 측정 | | MQ-5 | LPG 가스 감지 | | 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에는 장치 상태와 설정값 일부를 저장합니다. +- 창문 구조물은 실제 창틀에 맞춰 계속 수정이 필요했습니다. +- 자동 제어 조건은 실제 생활 패턴에 맞춰 조정했습니다.