콘텐츠로 이동

🔔 소리를 내다 - 부저 제어

🎯 이 장에서 배우는 것

  • 부저의 작동 원리를 이해하고 설명할 수 있다
  • 주파수와 음높이의 관계를 이해할 수 있다
  • 다양한 높이의 소리를 만들 수 있다
  • 도레미파솔라시도 음계를 연주할 수 있다
  • 간단한 멜로디를 코드로 만들 수 있다

💡 왜 이걸 배우나요?

세상에는 눈으로 보여주는 것만으로는 부족한 순간이 있어요.

  • 뒤를 보고 있을 때 → 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

=== WHAT: 부저로 "삐" 소리 내기 ===

부저에 특정 주파수의 신호를 보내서 소리를 만들어요.

--- WHY: 라이브러리 불러오기 ---

PWM: 빠르게 켰다 껐다 하는 신호를 만드는 기능

time: 시간 관련 기능 (대기