85 lines
3.4 KiB
Markdown
85 lines
3.4 KiB
Markdown
# 빛 추적 스마트 전력 제어 시스템
|
||
|
||
## 프로젝트 개요
|
||
본 프로젝트는 태양광 패널의 발전 효율을 향상시키고, 생성된 전력을 사용자 환경에 맞게 제어하기 위한 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 처리
|
||
|
||
---
|
||
|
||
## 주요 기능
|
||
|
||
### 1) 태양광 자동 추적
|
||
- CDS 센서 간 조도 비교를 통해 최대 광량 방향 계산
|
||
- 스텝 모터를 이용한 패널 회전 제어
|
||
- 실시간 환경 변화에 따른 패널 각도 갱신
|
||
|
||
### 2) 서버 기반 데이터 처리
|
||
- 문자열 기반 센서 데이터 패킷 수신
|
||
- 패킷 파싱 후 MariaDB에 실시간 저장
|
||
- 장치 ID 기반 메시지 라우팅 지원
|
||
|
||
### 3) Arduino UNO — LCD UI + 스마트 콘센트 제어
|
||
- 서버 명령에 따른 릴레이 제어
|
||
- 사용자 입력 이벤트를 서버로 전송
|
||
- 패널 상태와 콘센트 상태를 LCD로 동시 출력
|
||
|
||
---
|
||
|
||
## 트러블슈팅
|
||
### 1) **Wi-Fi 통신 중 모터 제어 불안정**
|
||
- 문제: 통신 루틴이 블로킹 방식으로 동작하며 모터 회전이 끊김
|
||
- 해결: 타이머 인터럽트 기반 비동기 모터 제어 구조로 변경
|
||
- 결과: 통신과 구동이 독립적으로 동작하며 안정성 확보
|
||
|
||
### 2) **모터 구동 시 센서 값 왜곡**
|
||
- 문제: 모터 동작 시 전류 피크로 ADC 기준 전압 변동 발생
|
||
- 해결: 모터 전원과 MCU/센서 전원을 분리
|
||
- 결과: CDS 센서 값의 순간 하락 현상 제거
|
||
|
||
### 3) **LCD 잔상 문제**
|
||
- 문제: 출력 문자열 길이 변화로 이전 데이터 일부 잔존
|
||
- 해결: 전체 clear 방식 제거
|
||
- 결과: 출력 품질 및 LCD 반응 속도 개선
|
||
|
||
---
|