아두이노 자동 야간 조명: LDR/릴레이/프로테우스 시뮬레이션 완전 가이드
아두이노 기반 자동 야간 조명(가로등) 제어 시스템 - 코드, 동작, 시뮬레이션
자동화는 보일러 온도 제어부터 대형 플랜트 관리까지 폭넓게 적용되며, 개방 루프(입력만)와 폐쇄 루프(피드백) 방식으로 나뉩니다. 본 프로젝트는 **아두이노 우노 + LDR(조도 센서) + 릴레이 + 프로테우스(Proteus) 시뮬레이션**을 조합해, 주변 밝기에 따라 조명이 자동 점등/소등되는 시스템을 구현합니다.
장단점 분석
| 장점 | 단점 |
| 생산성 향상, 품질 균일화, 강건성, 인건비 절감, 고정밀, 단순 반복 작업 해방 | 보안 취약점, 개발비 초과 위험, 초기 구축 비용 높음, 일자리 감소 우려 |
장점이 단점을 압도해 전 산업군에서 자동화 전환 가속화 중입니다.
필요 하드웨어 및 소프트웨어
하드웨어
- 아두이노 우노 (Arduino UNO)
- 릴레이 5V (또는 릴레이 모듈)
- LDR (광의존 저항)
- 저항 10kΩ (분압용)
- 트랜지스터 BC547 (NPN, 릴레이 드라이버용)
- DC 5V 전원 (아두이노 5V 핀 활용), AC 220V 전원 (부하측)
소프트웨어
- Arduino IDE (코드 작성/업로드)
- Proteus Design Suite (회로 시뮬레이션, PCB 설계)
부품 상세 설명
아두이노 우노
ATmega328P, 16MHz, 14 디지털 I/O(6 PWM), 6 아날로그 입력(10비트 ADC), USB Type-B 프로그래밍. 전원: USB 5V 또는 DC 잭 7~20V. 온보드 3.3V 레귤레이터 내장.
릴레이 (5V 전자기 릴레이)
코일 측 저전압(5V)으로 접점 측 고전압(AC 220V) 부하 제어. COM/NO/NC 3단자 출력. 아두이노 핀 전류(~20mA)로 직접 구동 불가 → **트랜지스터 드라이버 필수**.
LDR (Light Dependent Resistor)
조도 ↑ → 저항 ↓ (MΩ → 수백 Ω). 10kΩ 고정 저항과 분압 회로 구성해 아두이노 아날로그 핀(A3)에 전압 입력. 밝을수록 아날로그 값 증가(또는 감소, 결선 방식에 따라).
BC547 NPN 트랜지스터
릴레이 코일 구동용 스위칭 트랜지스터. 베이스 전류로 컬렉터-이미터 대전류 제어. 정격: VCEO=45V, IC=100mA. 베이스 저항(1k~10kΩ) 필수.
회로도 (Proteus 시뮬레이션용)

핵심 결선: LDR-10kΩ 분압점 → A3, 핀 12 → 베이스 저항 → BC547 베이스, 컬렉터 → 릴레이 코일, 이미터 → GND. 릴레이 NO 접점에 AC 부하(램프) 직렬. 프리휠링 다이오드(1N4007) 릴레이 코일 병렬 필수.
아두이노 스케치 (주석 포함)
int analogIN = A3; // LDR 분압 전압 입력 핀
int triggerPin = 12; // 릴레이 드라이버 출력 핀
int threshold = 692; // 임계값 (시리얼 모니터로 실측 후 조정)
void setup() {
Serial.begin(9600);
pinMode(analogIN, INPUT);
pinMode(triggerPin, OUTPUT);
}
void loop() {
int value = analogRead(analogIN); // 0~1023 (10비트 ADC)
Serial.println(value); // 시리얼 플로터/모니터로 임계값 캘리브레이션
if (value < threshold) { // 어두울 때 (값이 작을 때)
digitalWrite(triggerPin, HIGH); // 트랜지스터 ON → 릴레이 ON → 램프 ON
Serial.println("Lamp is ON");
} else {
digitalWrite(triggerPin, LOW); // 밝을 때 → 램프 OFF
Serial.println("Lamp is OFF");
}
delay(100); // 안정화를 위한 짧은 딜레이
}
코드 핵심 포인트
analogRead(): 10비트 ADC → 0~1023 정수값 반환
- 임계값(threshold) 캘리브레이션: 시리얼 모니터로 주간/야간 아날로그 값 관측 후 중간값 설정
digitalWrite(triggerPin, HIGH): 5V 출력 → BC547 베이스 전류 흐름 → 릴레이 코일 여자 → NO 접점 폐쇄 → AC 부하 전원 공급
void loop() 무한 반복으로 24/7 감시 동작
Proteus 시뮬레이션 진행 순서
- 아두이노 IDE: 파일 → 환경설정 → '상세 출력 표시' 컴파일/업로드 모두 체크
- 코드 컴파일 → 하단 출력창에서 **.hex 파일 경로** 복사
- Proteus: 아두이노 우노 컴포넌트 더블클릭 → 'Program File'에 .hex 경로 붙여넣기 → OK
- 시뮬레이션 실행 (Run) → LDR 조도 파라미터 조절하며 동작 검증
실제 하드웨어 구현 시 추가 고려사항
- 프리휠링 다이오드: 릴레이 코일 병렬로 1N4007 필수 (역기전력 보호)
- 베이스 저항: BC547 베이스에 1k~4.7kΩ 직렬 (과전류 방지)
- AC 배선 안전: 릴레이 단자 커버, 절연 튜브, 접지 연결 필수
- 전원 분리: 아두이노 5V(제어 회로)와 AC 220V(부하 회로) 완전 절연
- 히스테리시스 로직 추가: 임계값 부근 깜빡임 방지용 상/하한 분리 (예: ON < 600, OFF > 700)
확장 아이디어
- RTC 모듈 추가로 시간대별 제어 병행
- ESP8266/ESP32 교체로 IoT 원격 모니터링/제어 구현
- PIR 인체 감지 센서 결합으로 '사람 있을 때만 점등' 로직 추가
- 태양광 충전 배터리 시스템 연계로 오프그리드 가로등 구현
마무리
아두이노와 LDR, 릴레이로 구현하는 자동 야간 조명은 임베디드 입문자에게 최적의 실습 프로젝트입니다. 프로테우스 시뮬레이션으로 하드웨어 없이도 로직 검증이 가능하며, 실물 제작 시 안전 설계(절연, 보호 소자, 히스테리시스)만 철저히 하면 실용적인 자동 제어 시스템으로 바로 활용 가능합니다.