아두이노 초음파 보안 시스템: 실시간 거리 감지 알람
부품 및 소모품
| 부품 |
수량 |
비고 |
| 아두이노 우노 (Arduino UNO) |
1 |
|
| 브레드보드 |
1 |
|
| 초음파 센서 HC-SR04 |
1 |
거리 측정 |
| 부저 (Buzzer) |
1 |
경보음 |
| LED (적/황/녹) |
각 1 |
거리 단계 표시 |
| 저항 220Ω |
1 |
LED/부저 전류 제한 |
| 점퍼 와이어 |
10 |
|
프로젝트 제작 단계
Step 1: 재료 준비
Step 2: 핀 연결 계획
- 아두이노 5V → 브레드보드 + 레일 (빨간 선)
- 아두이노 GND → 브레드보드 - 레일 (검은 선)
- 부저 → 디지털 핀 7
- HC-SR04: Trig → 핀 2, Echo → 핀 3
- LED: 녹색 → 핀 6, 노란색 → 핀 5, 빨간색 → 핀 4 (애노드: 긴 다리, 캐소드: 짧은 다리 → 220Ω 저항 → - 레일)
Step 3: 브레드보드 전원 레일 연결
Step 4: 초음파 센서 연결
센서를 브레드보드 오른쪽 끝에 배치하고 바깥향하게 고정. VCC→+레일, GND→-레일, Trig→핀2, Echo→핀3.
Step 5: LED 연결
각 LED 애노드(긴 다리)를 지정된 핀에, 캐소드(짧은 다리)를 220Ω 저항 통해 -레일에 연결. 저항은 필수는 아니나 권장.
Step 6: 부저 연결
부저 긴 다리(애노드) → 핀7, 짧은 다리(캐소드) → 220Ω 저항 → -레일. 저항은 음량 감소 및 부저 수명 연장에 필수적.
코드
Ultrasonic Security System
#define trigPin 2
#define echoPin 3
#define LEDlampRed 4
#define LEDlampYellow 5
#define LEDlampGreen 6
#define soundbuzzer 7
int sound = 500;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDlampRed, OUTPUT);
pinMode(LEDlampYellow, OUTPUT);
pinMode(LEDlampGreen, OUTPUT);
pinMode(soundbuzzer, OUTPUT);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1; // cm 단위
// 거리별 LED 제어
if (distance < 50) digitalWrite(LEDlampGreen, HIGH); else digitalWrite(LEDlampGreen, LOW);
if (distance < 20) digitalWrite(LEDlampYellow, HIGH); else digitalWrite(LEDlampYellow, LOW);
if (distance < 5) { digitalWrite(LEDlampRed, HIGH); sound = 1000; }
else { digitalWrite(LEDlampRed, LOW); }
// 부저 및 시리얼 출력
if (distance > 5 || distance <= 0) {
Serial.println("Outside the permissible range of distances");
noTone(soundbuzzer);
} else {
Serial.print(distance);
Serial.println(" cm");
tone(soundbuzzer, sound);
}
delay(300);
}
참고: 원본 코드에 `distanceincm`/`distance` 변수 혼용과 `distanceinsm` 오타가 있어 위 코드에서 정리했습니다.
회로도