b0b8196b11dc7fb30fc8d2510627c3b75b5f1bc6
빛 추적 스마트 전력 제어 시스템
1. 프로젝트 개요
본 프로젝트는 태양광 패널의 발전 효율을 향상시키고, 생성된 전력을 사용자 환경에 맞게 제어하기 위한 IoT 기반 통합 전력 관리 시스템이다.
일반적인 고정형 태양광 패널은 태양의 위치 변화나 주변 환경에 따른 조도 차이를 반영하지 못해 효율 저하가 발생한다. 이를 개선하기 위해 다수의 CDS 센서를 활용한 능동형 태양광 추적 구조를 설계하였고, 수집된 발전 정보를 서버에 저장하여 스마트 콘센트 제어 및 시각화까지 연계되는 시스템을 구현하였다.
본 시스템은 STM32–Raspberry Pi–Arduino로 구성된 분산 구조를 가지며, 각 장치는 Wi-Fi 및 Bluetooth 통신을 통해 유기적으로 동작한다.
2. 시스템 구성 및 역할
-
STM32 Nucleo-F411RE
- CDS 센서 8채널 입력을 통한 조도 측정
- 조도 분포 분석 후 태양광 패널 방향 자동 조정
- 태양광 패널 출력 전압 측정
- ESP8266 기반 Wi-Fi 통신으로 서버에 데이터 전송
-
Raspberry Pi 5
- 다중 클라이언트 소켓 서버 운영
- 센서 데이터 수신 및 MariaDB 저장
- Bluetooth 통신을 통해 Arduino와 제어 명령 중계
- 시스템 전체 데이터 흐름 관리 허브 역할 수행
-
Arduino UNO
- 서버로부터 패널 상태 및 전압 정보 수신
- LCD를 통한 실시간 상태 표시
- 사용자 입력 기반 콘센트 ON/OFF 제어
- 릴레이 제어 결과를 서버로 피드백
3. 통신 구조
- STM32 ↔ Raspberry Pi : Wi-Fi
- Arduino ↔ Raspberry Pi : Bluetooth
중앙 서버인 Raspberry Pi가 모든 데이터를 중계·관리하는 허브 구조로 설계되었다.
4. 주요 기능
1) 태양광 자동 추적
- CDS 센서 간 조도 비교를 통해 최대 광량 방향 계산
- 스텝 모터를 이용한 패널 회전 제어
- 실시간 환경 변화에 따른 패널 각도 갱신
2) 서버 기반 데이터 처리
- 문자열 기반 센서 데이터 패킷 수신
- 패킷 파싱 후 MariaDB에 실시간 저장
- 장치 ID 기반 메시지 라우팅 지원
3) Arduino UNO — LCD UI + 스마트 콘센트 제어
- 서버 명령에 따른 릴레이 제어
- 사용자 입력 이벤트를 서버로 전송
- 패널 상태와 콘센트 상태를 LCD로 동시 출력
5. 담당 역할
IoT 서버 설계 및 구현
① IoT 소켓 서버 설계 및 구현
- 다중 클라이언트 접속을 고려한 TCP 서버 구현
- ID/PW 기반 클라이언트 인증 처리
- 장치별 메시지 분기 및 브로드캐스트 기능 구현
② STM32 데이터 수신 및 DB 연동
- 센서/전압 데이터 패킷 포맷 정의
- 수신 문자열 파싱 로직 구현
- MariaDB 연동 및 실시간 INSERT 처리
6. 트러블슈팅
1) Wi-Fi 통신 중 모터 제어 불안정
- 문제: 통신 루틴이 블로킹 방식으로 동작하며 모터 회전이 끊김
- 해결: 타이머 인터럽트 기반 비동기 모터 제어 구조로 변경
- 결과: 통신과 구동이 독립적으로 동작하며 안정성 확보
2) 모터 구동 시 센서 값 왜곡
- 문제: 모터 동작 시 전류 피크로 ADC 기준 전압 변동 발생
- 해결: 모터 전원과 MCU/센서 전원을 분리
- 결과: CDS 센서 값의 순간 하락 현상 제거
3) LCD 잔상 문제
- 문제: 출력 문자열 길이 변화로 이전 데이터 일부 잔존
- 해결: 전체 clear 방식 제거
- 결과: 출력 품질 및 LCD 반응 속도 개선
Languages
C
99.3%
Assembly
0.3%
Linker Script
0.2%
HTML
0.1%