콘텐츠로 이동

거리를 재다 - 초음파 센서 기초

Part 2: 거리와 빛으로 세상 감지


🎯 이 장에서 배우는 것

  • 초음파 센서의 작동 원리(음파 반사와 시간 측정)를 설명할 수 있다
  • 초음파 센서를 올바르게 연결할 수 있다
  • 거리를 측정하고 cm 단위로 시리얼 모니터에 출력할 수 있다
  • 측정 가능 범위(2cm~400cm)와 오차 요인을 이해할 수 있다
  • 거리에 따라 LED 색상이 바뀌는 "신호등" 시스템을 만들 수 있다

💡 왜 이걸 배우나요?

박쥐를 본 적 있어? 어둠 속에서도 부딪히지 않고 날아다니지. 어떻게 그게 가능할까?

박쥐는 초음파를 쏘고, 물체에 부딪혀 돌아오는 시간을 측정해서 거리를 알아내. 이걸 반향정위(echolocation)라고 해.

🦇 박쥐의 초음파 원리

     삐익! →→→
    ┌───┐         ┌─────┐
    │🦇│─────────→│ 벽  │
    └───┘←─────── └─────┘
          ←←← 삐익!

   "0.01초 만에 돌아왔네? 
    그럼 벽까지 약 1.7m구나!"

초음파 센서는 이 원리를 그대로 따라한 거야!

실생활에서 초음파가 쓰이는 곳

분야 활용 예시
🚗 자동차 후방 감지 센서 ("삐삐삐" 소리 들어봤지?)
🏥 병원 초음파 검사 (뱃속 아기 사진!)
🤖 로봇 장애물 회피 로봇청소기
📏 측정 레이저 없이 방 크기 측정
🚰 산업 물탱크 수위 측정

이번 챕터에서 배우면, 나중에 이런 걸 만들 수 있어: - 손이 가까이 오면 인사하는 로봇 🤖 - 화장실 사용 중 표시 시스템 🚽 - 쓰레기통이 가득 차면 알려주는 장치 🗑️


📚 핵심 개념

개념 1: 초음파란?

비유로 시작: "초음파는 우리 귀에 안 들리는 아주 높은 소리야. 마치 개만 들을 수 있는 '개 호루라기' 같은 거지."

정확한 정의: 초음파(ultrasonic)는 사람이 들을 수 있는 소리(20Hz~20,000Hz)보다 높은 주파수(20,000Hz 이상)를 가진 음파야. 우리가 사용할 센서는 약 40,000Hz(40kHz)의 초음파를 발생시켜.

예시로 확인: - 사람이 들을 수 있는 소리: 대화 소리, 음악 (약 100~8,000Hz) - 개가 들을 수 있는 소리: 최대 45,000Hz - 초음파 센서: 40,000Hz (사람도 개도 못 들어!)

쉽게 말하면: 초음파는 "조용한 소리"야. 쏘고 있어도 우리 귀엔 아무 소리도 안 들려!


개념 2: 거리 = 속도 × 시간

비유로 시작: "친구에게 '야호!'하고 소리치면 메아리가 돌아오잖아. 멀리 있는 산일수록 메아리가 늦게 돌아오지?"

정확한 정의:

거리 = (소리의 속도 × 왕복 시간) ÷ 2

소리는 공기 중에서 초속 약 343m(340m/s로 계산해도 OK)로 이동해. 초음파를 쏘고 돌아오는 시간을 측정하면 거리를 계산할 수 있어.

예시로 확인:

예: 초음파가 돌아오는데 0.001초(1ms) 걸렸다면?

  거리 = (343m/s × 0.001s) ÷ 2
       = 0.343m ÷ 2
       = 0.1715m
       = 약 17cm

왜 2로 나눌까? 🤔

     발사! →→→
    ┌────┐         ┌─────┐
    │센서│─────────→│물체 │  ← 가는 거리
    └────┘←─────── └─────┘
          ←←← 도착!          ← 오는 거리

   측정한 시간 = 가는 시간 + 오는 시간 (왕복!)
   실제 거리 = 왕복 거리 ÷ 2

쉽게 말하면: 소리가 갔다 오는 시간을 재서, 속도로 나누면 거리가 나와!


개념 3: HC-SR04 초음파 센서 구조

우리가 사용할 센서는 HC-SR04 (또는 Grove 초음파 센서)야.

    ┌─────────────────────────────┐
    │  ┌─────┐       ┌─────┐     │
    │  │  T  │       │  R  │     │  T = Transmitter (송신부)
    │  │ 🔊  │       │ 🎤  │     │  R = Receiver (수신부)
    │  └─────┘       └─────┘     │
    │                             │
    │   VCC  Trig  Echo  GND     │
    │    │    │     │    │       │
    └────┼────┼─────┼────┼───────┘
         │    │     │    │
        5V  신호   신호  접지
           보내기  받기
핀 이름 역할 설명
VCC 전원 (+) 5V 전원 공급
GND 전원 (-) 접지 (Ground)
Trig 트리거 "발사!" 신호를 보내는 핀
Echo 에코 "돌아왔어!" 신호를 받는 핀

작동 순서

┌──────────────────────────────────────────────────────────┐
│  초음파 센서 작동 과정                                    │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  1️⃣ Trig 핀에 10μs(마이크로초) 동안 HIGH 신호 보내기     │
│     → "준비, 발사!"                                       │
│                                                          │
│  2️⃣ 센서가 8번의 40kHz 초음파 펄스 발사                  │
│     → 삐삐삐삐삐삐삐삐 (우리 귀엔 안 들림)                │
│                                                          │
│  3️⃣ Echo 핀이 HIGH로 변함 (타이머 시작)                  │
│     → "초음파 출발했어!"                                  │
│                                                          │
│  4️⃣ 초음파가 물체에 반사되어 돌아옴                      │
│                                                          │
│  5️⃣ Echo 핀이 LOW로 변함 (타이머 종료)                   │
│     → "초음파 도착했어!"                                  │
│                                                          │
│  6️⃣ HIGH였던 시간 = 왕복 시간 → 거리 계산               │
│                                                          │
└──────────────────────────────────────────────────────────┘

쉽게 말하면: Trig로 "쏴!"하고, Echo로 "돌아왔어!"를 감지해. 그 사이 시간을 재면 끝!


개념 4: 측정 범위와 한계

항목 설명
최소 거리 2cm 이보다 가까우면 정확하지 않음
최대 거리 400cm (4m) 이보다 멀면 감지 안 됨
측정 각도 약 15° 센서 정면 기준 좌우 15도 범위
정밀도 ±3mm 아주 정밀하진 않지만 충분!
        측정 가능 범위 (위에서 본 모습)

              15°↗
               /
              /
    [센서]───────────────────→ 최대 4m
              \
               \
              15°↘

    ※ 원뿔 모양으로 초음파가 퍼져나감

오차가 생기는 이유

상황 문제 해결책
🧸 푹신한 물체 소리가 흡수됨 단단한 물체로 테스트
📐 비스듬한 물체 소리가 다른 방향으로 반사 센서와 수직으로 배치
🌡️ 온도 변화 소리 속도가 달라짐 실내에서 사용
🔊 다른 초음파 간섭 발생 센서 간 거리 유지
📏 너무 가까움 2cm 미만은 부정확 최소 2cm 유지

쉽게 말하면: 딱딱하고, 센서를 똑바로 바라보는 물체가 가장 잘 측정돼!


🔨 따라하기

준비물

부품 수량 설명
Raspberry Pi Pico 1 메인 보드
Grove Shield 1 쉬운 연결을 위한 확장 보드
Grove 초음파 센서 1 또는 HC-SR04
Grove 케이블 1 4핀 케이블
USB 케이블 1 PC 연결용

Step 1: 하드웨어 연결

목표: 초음파 센서를 Pico에 연결하기

Grove 초음파 센서 연결 (쉬움!)

Grove 쉴드를 사용하면 정말 간단해:

    ┌─────────────────────────────────────┐
    │         Grove Shield for Pico       │
    │                                     │
    │   D16 ●────┐                        │
    │            │  Grove 케이블          │
    │            └────────[초음파 센서]   │
    │                                     │
    │   D20 ●  D18 ●  I2C ●  ...         │
    └─────────────────────────────────────┘

연결 방법: 1. Grove 쉴드를 Pico에 꽂는다 2. 초음파 센서를 Grove 케이블로 D16 포트에 연결한다

💡 Grove 초음파 센서는 Trig와 Echo가 하나의 핀(SIG)으로 통합되어 있어서 더 간단해!

HC-SR04 직접 연결 (일반 초음파 센서)

Grove가 아닌 일반 HC-SR04를 사용한다면:

    HC-SR04          Pico
    ─────────        ────────
    VCC     ────────  5V (VBUS)
    GND     ────────  GND
    Trig    ────────  GP16
    Echo    ────────  GP17
         [HC-SR04 센서]

    VCC ─────── 5V (VBUS, 40번 핀)

    Trig ────── GP16 (21번 핀)

    Echo ────── GP17 (22번 핀)

    GND ─────── GND (38번 핀)

⚠️ 주의: HC-SR04는 5V가 필요해! 3.3V로 연결하면 제대로 작동 안 해.


Step 2: 기본 거리 측정 코드

목표: 초음파 센서로 거리를 측정하고 출력하기

코드 (Grove 초음파 센서용):

```python

=== 초음파 센서로 거리 측정하기 (Grove 버전) ===

물체까지의 거리를 cm 단위로 측정합니다

from machine import Pin import time

--- 설정 ---

Grove