프로젝트 09: 📡 SF 영화 속 그 기술, 초음파 레이더

서보 모터와 초음파 센서를 결합하여 주변의 장애물을 180도 스캔하는 감시 시스템을 구축합니다.

1. 프로젝트 원리: 스윕(Sweep) & 스캔(Scan)

레이더는 한곳만 보지 않습니다. 고개를 좌우로 돌리며 전체를 살펴야 하죠. 아두이노가 서보 모터를 1도씩 정밀하게 회전시키고, 그때마다 초음파 센서가 거리를 측정하여 "몇 도 방향에 몇 cm 거리에 물체가 있음"이라는 데이터를 생성합니다.

180도 스캐닝 영역
▲ 작동 매커니즘: 서보 모터가 회전하며 초음파 센서의 시야각을 확보합니다.

📦 준비물

아두이노 우노 x 1 초음파 센서 (HC-SR04) x 1 서보 모터 (SG90) x 1 브레드보드 & 점퍼 와이어 서보 모터 위에 센서를 고정할 접착제/테이프

2. 상세 회로 결선도 (Wiring Diagram)

서보 모터는 9번(PWM) 핀에, 초음파 센서는 2번(Trig), 3번(Echo) 핀에 연결합니다. 두 부품 모두 전력을 많이 소모하므로 전원선 연결 시 주의하세요.

Arduino Uno D2(Trig) | D3(Echo) | ~D9(Servo) Servo Motor Ultra Sensor
▲ 레이더 결선도: 서보 모터 위에 초음파 센서를 단단히 고정하는 것이 하드웨어 구축의 핵심입니다.

3. 코드 작성하기

C언어의 for 반복문을 사용하여 각도를 조절하고, 사용자 정의 함수를 만들어 거리를 측정합니다.

#include <Servo.h>

Servo myServo;
int trigPin = 2;
int echoPin = 3;

void setup() {
    myServo.attach(9);
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    Serial.begin(9600);
}

void loop() {
    // 1. 15도에서 165도까지 오른쪽으로 스캔
    for (int i = 15; i <= 165; i++) {
        myServo.write(i);
        delay(30); // 서보가 움직일 시간
        int distance = calculateDistance();
        sendData(i, distance);
    }
    // 2. 165도에서 15도까지 왼쪽으로 다시 스캔
    for (int i = 165; i > 15; i--) {
        myServo.write(i);
        delay(30);
        int distance = calculateDistance();
        sendData(i, distance);
    }
}

// 거리를 측정하는 함수
int calculateDistance() {
    digitalWrite(trigPin, LOW); delayMicroseconds(2);
    digitalWrite(trigPin, HIGH); delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    long duration = pulseIn(echoPin, HIGH);
    return duration * 0.034 / 2;
}

// 데이터를 시리얼 모니터로 전송하는 함수
void sendData(int angle, int distance) {
    Serial.print(angle);
    Serial.print(",");
    Serial.print(distance);
    Serial.println("."); // 데이터 끝 표시
}

4. 프로젝트 핵심 분석

💡 왜 시리얼 모니터에 특별한 형식으로 출력하나요?

위 코드에서 데이터를 120,35. 처럼 보내는 이유는 나중에 **'프로세싱(Processing)'**이라는 프로그램을 사용해 컴퓨터 화면에 실제 레이더 맵을 그리기 위해서입니다. 컴퓨터는 이 데이터를 받아 각도(120도)와 거리(35cm)를 해석해 점을 찍게 됩니다.

5. 🎯 심화 챌린지: 경보 기능 통합

4장에서 배운 **경보기 프로젝트**를 기억하시나요? 레이더가 스캔하던 중 특정 거리(예: 10cm) 이내에 장애물이 포착되면 부저를 울리고 LED를 깜빡이게 기능을 추가해 보세요. 진정한 지능형 감시 레이더가 됩니다!