거리를 재다 - 초음파 센서 기초¶
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: 거리 = 속도 × 시간¶
비유로 시작: "친구에게 '야호!'하고 소리치면 메아리가 돌아오잖아. 멀리 있는 산일수록 메아리가 늦게 돌아오지?"
정확한 정의:
소리는 공기 중에서 초속 약 343m(340m/s로 계산해도 OK)로 이동해. 초음파를 쏘고 돌아오는 시간을 측정하면 거리를 계산할 수 있어.
예시로 확인:
왜 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 | 아주 정밀하진 않지만 충분! |
오차가 생기는 이유¶
| 상황 | 문제 | 해결책 |
|---|---|---|
| 🧸 푹신한 물체 | 소리가 흡수됨 | 단단한 물체로 테스트 |
| 📐 비스듬한 물체 | 소리가 다른 방향으로 반사 | 센서와 수직으로 배치 |
| 🌡️ 온도 변화 | 소리 속도가 달라짐 | 실내에서 사용 |
| 🔊 다른 초음파 | 간섭 발생 | 센서 간 거리 유지 |
| 📏 너무 가까움 | 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