🔔 소리를 내다 - 부저 제어¶
🎯 이 장에서 배우는 것¶
- 부저의 작동 원리를 이해하고 설명할 수 있다
- 주파수와 음높이의 관계를 이해할 수 있다
- 다양한 높이의 소리를 만들 수 있다
- 도레미파솔라시도 음계를 연주할 수 있다
- 간단한 멜로디를 코드로 만들 수 있다
💡 왜 이걸 배우나요?¶
세상에는 눈으로 보여주는 것만으로는 부족한 순간이 있어요.
- 뒤를 보고 있을 때 → LED가 켜져도 모름
- 다른 일에 집중할 때 → 화면 변화를 놓침
- 긴급한 상황일 때 → 빛보다 소리가 더 효과적
소리는 방향과 상관없이 전달되는 강력한 출력 수단이에요.
┌─────────────────────────────────────────────────────────────┐
│ 소리가 필요한 순간들 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 🚗 자동차 후방 센서 "삐삐삐" → 뒤에 장애물! │
│ ⏰ 알람 시계 "띠리리링" → 일어날 시간! │
│ 🎮 게임 효과음 "띵동!" → 아이템 획득! │
│ 🚨 화재 경보기 "삐이이이" → 대피하세요! │
│ 📱 카카오톡 "카톡" → 메시지 왔다! │
│ │
│ → 모두 "상황을 소리로 알려주는" 시스템 │
│ │
└─────────────────────────────────────────────────────────────┘
이번 장에서 부저를 배우면, 나중에 이런 것들을 만들 수 있어요: - 거리가 가까워지면 경고음이 나는 후방 감지기 - 온도가 높으면 알려주는 과열 경보기 - 버튼을 누르면 멜로디가 나오는 간단한 피아노
📚 핵심 개념¶
개념 1: 부저(Buzzer)란?¶
비유로 시작: 부저는 마치 아주 단순한 스피커와 같아요. 스피커가 다양한 소리를 내는 것처럼, 부저도 전기 신호를 받아서 소리로 바꿔줘요.
정확한 정의: 부저는 전기 신호를 소리(진동)로 변환하는 출력 장치예요. 우리가 사용할 Grove 부저는 "패시브 부저"로, 우리가 보내는 신호에 따라 다양한 음높이의 소리를 낼 수 있어요.
예시로 확인: 전자레인지가 "삐" 하고 울리거나, 엘리베이터가 "딩동" 하는 소리가 모두 부저에서 나와요.
┌─────────────────────────────────────────────────────────────┐
│ 부저의 두 가지 종류 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [액티브 부저] [패시브 부저] ← 우리가 사용 │
│ ┌──────────┐ ┌──────────┐ │
│ │ + ──┐ │ │ + ──┐ │ │
│ │ 회로 │ │ │ 판만 │ │ │
│ │ 내장 │ │ │ 있음 │ │ │
│ └──────────┘ └──────────┘ │
│ │
│ • 전원만 연결하면 소리남 • 신호를 보내야 소리남 │
│ • 한 가지 음만 가능 • 다양한 음높이 가능 │
│ • 단순 알림용 • 멜로디 연주 가능 │
│ │
└─────────────────────────────────────────────────────────────┘
쉽게 말하면: 부저는 전기로 "삐" 소리를 내는 작은 스피커야!
개념 2: 주파수(Frequency)와 음높이¶
비유로 시작: 기타 줄을 생각해봐요. 줄을 빠르게 튕기면 높은 소리, 천천히 튕기면 낮은 소리가 나요. 부저도 마찬가지로, 신호를 빠르게 보내면 높은 소리가 나요.
정확한 정의: 주파수는 1초에 진동하는 횟수예요. 단위는 Hz(헤르츠)를 사용해요. 1Hz는 1초에 1번 진동, 100Hz는 1초에 100번 진동이에요.
예시로 확인: - 낮은 '도' 음: 약 262Hz (1초에 262번 진동) - 높은 '도' 음: 약 523Hz (1초에 523번 진동, 2배!)
┌─────────────────────────────────────────────────────────────┐
│ 주파수와 음높이의 관계 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 낮은 주파수 (200Hz) 높은 주파수 (1000Hz) │
│ ∿∿∿∿∿∿∿ ∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿ │
│ 천천히 진동 빠르게 진동 │
│ → 낮은 음 🔈 → 높은 음 🔊 │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 100Hz 500Hz 1000Hz 2000Hz 4000Hz │ │
│ │ │───────│────────│────────│────────│ │ │
│ │ 저음 중음 고음 아주고음 초고음 │ │
│ │ (웅웅) (삐) (삐이) (찌이) (귀아픔) │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ 💡 사람이 들을 수 있는 범위: 약 20Hz ~ 20,000Hz │
│ │
└─────────────────────────────────────────────────────────────┘
쉽게 말하면: 주파수가 높으면 높은 소리, 낮으면 낮은 소리!
개념 3: PWM으로 소리 만들기¶
비유로 시작: 손뼉을 1초에 2번 치면 "짝, 짝" 소리가 나고, 1초에 100번 치면 "드르르르" 하는 연속된 소리가 나요. 부저도 빠르게 켰다 껐다를 반복하면 소리가 만들어져요.
정확한 정의: PWM(Pulse Width Modulation)을 사용해서 부저를 특정 주파수로 켰다 껐다 반복하면, 그 주파수에 해당하는 음높이의 소리가 나요.
예시로 확인: - 262Hz로 PWM → 1초에 262번 켰다 껐다 → '도' 음 - 440Hz로 PWM → 1초에 440번 켰다 껐다 → '라' 음 (기준음)
┌─────────────────────────────────────────────────────────────┐
│ PWM으로 소리 만들기 │
├─────────────────────────────────────────────────────────────┤
│ │
│ PWM 신호 (262Hz = 도) │
│ │ │
│ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ... (1초에 262번) │
│ │──┘ └──┘ └──┘ └──┘ └──┘ └── │
│ │ │
│ └──────────────────────────────────────────────────→ 시간 │
│ │
│ PWM 신호 (523Hz = 높은 도) │
│ │ │
│ │ ┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ ... (1초에 523번) │
│ │─┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└─ │
│ │ │
│ └──────────────────────────────────────────────────→ 시간 │
│ │
│ → 더 빠르게 반복 = 더 높은 음! │
│ │
└─────────────────────────────────────────────────────────────┘
쉽게 말하면: 빠르게 켰다 껐다 하면 소리가 나고, 그 속도가 음높이를 결정해!
📌 알아보기: 도레미 음계의 주파수¶
| 음이름 | 계이름 | 주파수(Hz) | 설명 |
|---|---|---|---|
| C4 | 도 | 262 | 가운데 도 |
| D4 | 레 | 294 | |
| E4 | 미 | 330 | |
| F4 | 파 | 349 | |
| G4 | 솔 | 392 | |
| A4 | 라 | 440 | 기준음 (피아노 조율 기준) |
| B4 | 시 | 494 | |
| C5 | 높은 도 | 523 | 한 옥타브 위 (주파수 2배) |
💡 기억해요: 옥타브가 올라가면 주파수가 정확히 2배가 돼요!
🔨 따라하기¶
준비물 확인¶
┌─────────────────────────────────────────────────────────────┐
│ 준비물 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ✅ Raspberry Pi Pico (USB 연결됨) │
│ ✅ Grove Shield for Pico │
│ ✅ Grove 부저 (Passive Buzzer) │
│ ✅ Grove 케이블 1개 │
│ │
└─────────────────────────────────────────────────────────────┘
하드웨어 연결¶
┌─────────────────────────────────────────────────────────────┐
│ 연결 방법 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [Grove 부저] │
│ │ │
│ Grove 케이블 │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────┐ │
│ │ Grove Shield for Pico │ │
│ │ │ │
│ │ D16 D18 D20 ... │ │
│ │ ■ ■ ● ... ← D20에 연결 │
│ │ │ │
│ │ [Pico 장착됨] │ │
│ └─────────────────────────────────────┘ │
│ │
│ 💡 Grove 케이블은 방향이 맞아야 해요! │
│ 홈이 있는 쪽을 맞춰서 끼워요. │
│ │
└─────────────────────────────────────────────────────────────┘
⚠️ 주의: 부저를 D20 포트에 연결해요. 다른 포트를 사용하면 코드에서 핀 번호를 바꿔야 해요.
Step 1: 첫 소리 내기 - "삐" 소리¶
목표: 부저에서 소리가 나는지 확인해보자!
코드: ```python