프로젝트 04: 🚨 꼼짝마! 레이저 도둑 경보기
보이지 않는 빛의 장벽을 만들고, 침입자가 발생하면 강력한 사이렌을 울려봅시다.
1. 프로젝트 원리: 빛의 차단 감지
이 경보기의 핵심 원리는 '일정한 빛의 유지'와 '갑작스러운 변화'입니다. 레이저 포인터가 조도 센서(CdS)를 향해 계속 빛을 쏘고 있으면 센서값은 아주 높게 유지됩니다. 하지만 침입자가 그 사이를 지나가면 순간적으로 빛이 가려지며 센서값이 툭 떨어지게 되죠.
아두이노는 이 값의 변화를 감시하다가, 설정한 기준치(Threshold)보다 낮아지면 피에조 부저를 통해 경보음을 울립니다.
📦 준비물
아두이노 우노 x 1
레이저 모듈 (또는 레이저 포인터) x 1
조도 센서 (CDS) x 1
피에조 부저 x 1
10kΩ 저항 x 1
점퍼 와이어 & 브레드보드
2. 상세 회로 결선도 (Wiring Diagram)
조도 센서는 아날로그 A0 핀에 연결하고, 경보음을 낼 피에조 부저는 디지털 8번 핀에 연결합니다. 레이저 모듈은 전원(5V, GND)만 연결해도 되지만, 코드로 제어하고 싶다면 디지털 핀에 연결해도 좋습니다.
▲ 레이저 경보기 전체 구성도: 레이저가 센서를 직접 조준하도록 배치해야 합니다.
3. 코드 작성하기
시리얼 모니터를 통해 레이저가 켜졌을 때와 가려졌을 때의 값 차이를 먼저 확인하는 것이 중요합니다.
int sensorPin = A0; // 조도 센서 핀
int buzzerPin = 8; // 피에조 부저 핀
int threshold = 700; // 경보 기준값 (레이저가 가려지면 이 값 아래로 떨어짐)
void setup() {
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
Serial.println("보안 시스템 가동 중...");
}
void loop() {
int lightValue = analogRead(sensorPin);
// 센서 값 실시간 모니터링 (기준값을 정할 때 사용하세요)
Serial.print("현재 광량: ");
Serial.println(lightValue);
// 레이저 빛이 가려져서 값이 기준치보다 낮아지면?
if (lightValue < threshold) {
Serial.println("🚨 경보! 침입자 발생!");
// 사이렌 소리 (높은 음과 낮은 음 반복)
for (int i = 0; i < 3; i++) {
tone(buzzerPin, 1000); delay(200);
tone(buzzerPin, 600); delay(200);
}
} else {
noTone(buzzerPin); // 평상시에는 조용히
}
delay(100);
}
4. 프로젝트 핵심 팁
🎯 정교한 기준값(Threshold) 설정하기
장소마다 밝기가 다르기 때문에 코드의 700이라는 숫자는 정답이 아닙니다. 레이저를 쏘고 있을 때 시리얼 모니터에 뜨는 값(예: 900)과, 손으로 가렸을 때의 값(예: 500) 사이의 적당한 중간 숫자를 입력해야 경보기가 오작동하지 않습니다.
⚠️ 안전 주의사항
레이저 모듈을 사용할 때는 절대로 사람이나 동물의 눈을 직접 조준하지 마세요. 시력에 손상을 줄 수 있습니다. 실습 시에는 벽이나 종이 과녁을 향하게 설치하는 것이 안전합니다.
5. 🎯 심화 챌린지: 암호 해제 시스템
한 번 울린 경보가 침입자가 지나간 후에도 계속 울리게 하려면 어떻게 해야 할까요? 또한, 2장에서 배운 버튼을 추가해서 "특정 버튼을 눌러야만 사이렌이 꺼지는" 보안 해제 기능을 추가해 보세요!