From d042cdddc68cfac0bd0f30a92ea828182af0ef46 Mon Sep 17 00:00:00 2001 From: seoamugae Date: Fri, 9 Jan 2026 15:39:47 +0900 Subject: [PATCH] readme --- README.md | 149 +++++++++++++++++++++++++++++------------------------- 1 file changed, 79 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index aa60c75..41519d8 100644 --- a/README.md +++ b/README.md @@ -1,84 +1,93 @@ -# 빛 추적 스마트 전력 제어 시스템 +# 🌞 SunTrack & PlugControl +## 빛 추적 스마트 전력 제어 시스템 + +> 태양의 위치를 실시간으로 추적하여 태양광 발전 효율을 극대화하고, +> 사용자 제어 기반의 스마트 플러그를 통해 전력 소비를 관리하는 IoT 시스템 + +--- ## 프로젝트 개요 -본 프로젝트는 태양광 패널의 발전 효율을 향상시키고, 생성된 전력을 사용자 환경에 맞게 제어하기 위한 IoT 기반 통합 전력 관리 시스템이다. -일반적인 고정형 태양광 패널은 태양의 위치 변화나 주변 환경에 따른 조도 차이를 반영하지 못해 효율 저하가 발생한다. -이를 개선하기 위해 다수의 CDS 센서를 활용한 능동형 태양광 추적 구조를 설계하였고, 수집된 발전 정보를 서버에 저장하여 스마트 콘센트 제어 및 시각화까지 연계되는 시스템을 구현하였다. - -본 시스템은 STM32–Raspberry Pi–Arduino로 구성된 분산 구조를 가지며, 각 장치는 Wi-Fi 및 Bluetooth 통신을 통해 유기적으로 동작한다. - - -## 시스템 구성 및 역할 - -- #### **Raspberry Pi 5** - - 다중 클라이언트 소켓 서버 운영 - - 센서 데이터 수신 및 MariaDB 저장 - - Bluetooth 통신을 통해 Arduino와 제어 명령 중계 - - 시스템 전체 데이터 흐름 관리 허브 역할 수행 - -- #### **STM32 Nucleo-F411RE** - - CDS 센서 8채널 입력을 통한 조도 측정 - - 조도 분포 분석 후 태양광 패널 방향 자동 조정 - - 태양광 패널 출력 전압 측정 - - ESP8266 기반 Wi-Fi 통신으로 서버에 데이터 전송 - -- #### **Arduino UNO** - - 서버로부터 패널 상태 및 전압 정보 수신 - - LCD를 통한 실시간 상태 표시 - - 사용자 입력 기반 콘센트 ON/OFF 제어 - - 릴레이 제어 결과를 서버로 피드백 - - -## 담당 역할 - -### **IoT 서버 설계 및 구현** - -#### ① IoT 소켓 서버 설계 및 구현 -- 다중 클라이언트 접속을 고려한 TCP 서버 구현 -- ID/PW 기반 클라이언트 인증 처리 -- 장치별 메시지 분기 및 브로드캐스트 기능 구현 - -#### ② STM32 데이터 수신 및 DB 연동 -- 센서/전압 데이터 패킷 포맷 정의 -- 수신 문자열 파싱 로직 구현 -- MariaDB 연동 및 실시간 INSERT 처리 +빛 추적 스마트 전력 제어 시스템은 CDS 센서를 이용해 일조량을 측정하고 태양광 패널의 방향을 자동으로 조절하여 발전 효율을 높이는 동시에, 서버와 연동된 스마트 콘센트를 통해 전력 사용을 원격으로 제어하는 스마트 전력 제어 시스템입니다. --- -## 주요 기능 +## 프로젝트 목표 -### 1) 태양광 자동 추적 -- CDS 센서 간 조도 비교를 통해 최대 광량 방향 계산 -- 스텝 모터를 이용한 패널 회전 제어 -- 실시간 환경 변화에 따른 패널 각도 갱신 - -### 2) 서버 기반 데이터 처리 -- 문자열 기반 센서 데이터 패킷 수신 -- 패킷 파싱 후 MariaDB에 실시간 저장 -- 장치 ID 기반 메시지 라우팅 지원 - -### 3) Arduino UNO — LCD UI + 스마트 콘센트 제어 -- 서버 명령에 따른 릴레이 제어 -- 사용자 입력 이벤트를 서버로 전송 -- 패널 상태와 콘센트 상태를 LCD로 동시 출력 +- CDS 센서를 이용한 실시간 일조량 측정 +- 모터 제어를 통한 태양광 패널 자동 방향 조정 +- 패널 방향, 조도, 발전량 데이터 서버 실시간 전송 +- 사용자 명령 기반 스마트 콘센트 개폐 제어 +- LCD를 통한 시스템 상태 시각화 +- 발전 효율 향상 및 에너지 소비 관리 --- -## 트러블슈팅 -### 1) **Wi-Fi 통신 중 모터 제어 불안정** -- 문제: 통신 루틴이 블로킹 방식으로 동작하며 모터 회전이 끊김 -- 해결: 타이머 인터럽트 기반 비동기 모터 제어 구조로 변경 -- 결과: 통신과 구동이 독립적으로 동작하며 안정성 확보 +## 시스템 구성 -### 2) **모터 구동 시 센서 값 왜곡** -- 문제: 모터 동작 시 전류 피크로 ADC 기준 전압 변동 발생 -- 해결: 모터 전원과 MCU/센서 전원을 분리 -- 결과: CDS 센서 값의 순간 하락 현상 제거 +### 전체 구조 -### 3) **LCD 잔상 문제** -- 문제: 출력 문자열 길이 변화로 이전 데이터 일부 잔존 -- 해결: 전체 clear 방식 제거 -- 결과: 출력 품질 및 LCD 반응 속도 개선 +- **태양광 발전부** + - NUCLEO-F411RE + - CDS 센서 + - 스텝 모터 + - ESP-01 (WiFi) + +- **서버** + - Raspberry Pi 5 + - MariaDB + - phpMyAdmin + +- **출력 및 사용자 제어** + - Arduino UNO + - LCD + - 릴레이 모듈 + - HC-06 (Bluetooth) --- + +## 동작 방식 + +1. CDS 센서로 일조량 측정 +2. 최적의 태양 방향으로 모터 제어 +3. 조도 값, 패널 방향, 발전 전압을 WiFi로 서버에 전송 +4. Raspberry Pi에서 데이터 수신 후 DB 저장 +5. Arduino가 서버에 주기적으로 데이터 요청 +6. LCD에 발전 상태 및 콘센트 상태 출력 +7. 사용자가 스마트폰으로 명령 입력 → 콘센트 제어 + +--- + +## 사용 기술 스택 + +### Hardware +- NUCLEO-F411RE +- Arduino UNO +- Raspberry Pi 5 +- CDS Sensor +- Step Motor +- Relay Module +- LCD +- ESP-01, HC-06 + +### Software +- C / C++ +- MariaDB +- phpMyAdmin +- Serial / UART / I2C / ADC +- WiFi & Bluetooth 통신 + +--- + +## 데이터 관리 + +- 센서 데이터 및 상태 정보는 MariaDB에 실시간 저장 +- 서버에서 데이터 시각화 가능 +- 발전량 및 패널 방향 추이 분석 가능 + +--- + +## 한계 및 개선 사항 + +- 패널 회전 시 전압 강하로 조도 신뢰도 저하 → 전원 분리로 부분 개선 +- ESP-01 통신 안정성 문제 → 전용 타이머 사용 및 논블로킹 처리로 개선 \ No newline at end of file