부저(Buzzer)

아두위키 : Arduwiki
ArduWiki (토론 | 기여)님의 2025년 3월 27일 (목) 14:23 판


概要

ブザー(Buzzer)は音を発生させる装置で、Arduinoのようなマイクロコントローラーボードと組み合わせて使用され、さまざまなプロジェクトで警告音、通知音、音楽などを再生するために使用されます。ブザーは主にアクティブブザー(Active Buzzer)とパッシブブザー(Passive Buzzer)に分けられます。

アクティブブザーとパッシブブザー

アクティブブザー(Active Buzzer)

アクティブブザーは内部に発振回路が内蔵されており、電源を供給するだけで自動的に音を鳴らします。制御が簡単で、主に一定の周波数(音の高さを変えず一種類)の音を出すのに使用されます。

  • 簡単な制御:単に電源をオン・オフするだけで音が出ます。
  • 一定の周波数:特定の周波数の音のみを発生させます。

パッシブブザー(Passive Buzzer)

パッシブブザーは、電源を供給しても自動的には音が出ません。PWM(Pulse Width Modulation)信号を使用して周波数を制御することで、さまざまな周波数の音を生成できます。メロディや多様な音を再生するのに便利です。

  • 複雑な制御:外部回路またはソフトウェアで周波数を制御する必要があります。
  • 多様な周波数:さまざまな周波数の音を発生させることができます。

アクティブブザーとパッシブブザーの識別

アクティブブザーとパッシブブザーは外見では区別が難しい場合があります。簡単なテストで識別する方法があります。

1. ラベルとマーキング

外観による識別方法ですが、製品によって表示が異なるため確実とは限りません。

  • アクティブブザー:「Active」や特定の周波数(例:「5V 12kHz」)と表示されていることがあります。
  • パッシブブザー:「Passive」または周波数表示のないことが多いです。

2. テスト

最も確実な方法は、簡単な回路を組んでテストすることです。

  • アクティブブザー:電源を接続するとすぐに音が出ます。
  • パッシブブザー:電源を接続しても音が出ず、周波数信号を入力すると音が出ます。

回路構成

製品によってブザーの形状は異なりますが、原理は同じです。

ピンが2本の場合

  1. ブザーの+端子をArduinoのデジタルピンに接続します。
  2. ブザーの-端子をArduinoのGNDに接続します。

ピンが3本の場合

  1. ブザーの+端子(またはVCC)をArduinoの5Vピンに接続します。
  2. ブザーの-端子をArduinoのGNDに接続します。
  3. ブザーの信号ピンをArduinoの任意のデジタルピンに接続します。

※ 下の写真と異なるモデルの場合、ピンの位置が異なることがありますので、よく確認して接続してください。

活用例

1. アクティブブザーの制御

アクティブブザーを3回鳴らす例です。

1-1. 回路構成

下の写真は3ピンタイプの例です。2ピンタイプを使用する場合は、上記のハードウェア接続を参考にしてください。

1-2. コード

const int iopin = 7;

void setup() {
  pinMode(iopin, OUTPUT);
  digitalWrite(iopin, HIGH);
  for (int i = 0; i < 3; i++) {
    digitalWrite(iopin, LOW);
    delay(500);
    digitalWrite(iopin, HIGH);
    delay(500);
  }
}

void loop() {
  delay(10);
}

1-3. 実行結果


개요

부저(Buzzer)는 소리를 발생시키는 장치로, 아두이노와 같은 마이크로컨트롤러 보드와 함께 사용되어 다양한 프로젝트에서 경고음, 알림음, 음악 등을 재생하는 데 활용됩니다. 부저는 크게 능동 부저(Active Buzzer)와 수동 부저(Passive Buzzer)로 나뉩니다.


능동 부저와 수동 부저

능동 부저 (Active Buzzer)

능동 부저는 내부에 발진 회로가 내장되어 있어 전원을 공급하면 자동으로 소리를 발생시킵니다. 제어가 간단하며, 주로 일정한 주파수(음의 높낮이 조절없이 한 가지)의 소리를 내는 데 사용됩니다.

  • 간단한 제어 : 단순히 전원을 켜고 끄는 것으로 소리를 발생시킵니다.
  • 일정한 주파수 : 특정 주파수의 소리만 발생시킵니다.


수동 부저 (Passive Buzzer)

수동 부저는 전원 공급 시 자동으로 소리를 내는 능동 부저와 달리 주파수를 제어해야 소리를 발생시킵니다. PWM(Pulse Width Modulation) 신호를 사용하여 다양한 주파수의 소리를 생성할 수 있어, 멜로디나 다양한 음을 재생하는 데 유용합니다.

  • 복잡한 제어 : 외부 회로나 소프트웨어적으로 주파수를 제어해야 합니다.
  • 다양한 주파수 : 다양한 주파수의 소리를 발생시킬 수 있습니다.


능동 부저와 수동 부저의 구분

능동 부저와 수동 부저는 외관 상으로는 구분하기 어려울 수 있습니다. 대신 간단한 테스트를 통해 구분합니다.

1. 레이블 및 마킹

외관으로 구분하는 방법이지만, 제품에 따라 표기가 다를 수 있어 확실한 방법은 아닙니다.

  • 능동 부저 : 보통 "Active" 또는 특정 주파수(예: "5V 12kHz")가 표시된 라벨이 붙어 있을 수 있습니다.
  • 수동 부저 : "Passive" 또는 주파수 표시가 없는 경우가 많습니다.

2. 테스트

가장 확실한 방법은 간단한 회로를 구성하여 테스트를 통해 구분하는 것입니다.

  • 능동 부저 : 전원을 연결하면 바로 소리가 납니다.
  • 수동 부저 : 전원을 연결해도 소리가 나지 않으며, 주파수 신호를 입력해야 소리가 납니다.


회로 구성

제품에 따라 부저 형태는 다를 수 있으나, 같은 원리로 회로를 구성합니다.

핀이 2개인 경우

  1. 부저의 + 단자를 아두이노의 디지털 핀에 연결합니다.
  2. 부저의 - 단자를 아두이노의 GND에 연결합니다.


핀이 3개인 경우

  1. 부저의 + 단자(혹은 VCC)를 아두이노의 5V 핀에 연결합니다.
  2. 부저의 - 단자를 아두이노의 GND에 연결합니다.
  3. 부저의 디지털 핀 단자를 아두이노에서 사용할 디지털 핀에 연결합니다.

※ 아래 사진과 다른 모델일 경우 핀의 위치가 다를 수 있으니 잘 확인해서 연결해야 합니다.

활용 예제

1. 능동 부저 제어

능동 부저가 3번 울리는 예제입니다.

1-1. 회로 구성

아래 사진은 핀이 3개인 제품을 사용할 때 예시이지만, 핀이 2개인 제품을 사용하신다면 위 하드웨어 연결 항목을 참고하여 결선해주세요.

1-2. 코드

const int iopin = 7;

void setup() {
  pinMode(iopin, OUTPUT);
  digitalWrite(iopin, HIGH);
  for (int i = 0; i < 3; i++) {
    digitalWrite(iopin, LOW);
    delay(500);
    digitalWrite(iopin, HIGH);
    delay(500);
  }
}

void loop() {
  delay(10);
}


1-3. 실행 결과


2. 능동 부저와 택트 스위치 혼합 활용

택트 스위치를 누르면 능동 부저가 소리를 발생시키는 예제입니다.

2-1. 회로 구성

해당 예제에서는 택트 스위치 연결 시 INPUT_PULLUP 저항을 활용합니다.

PULLUP, PULLDOWN, INPUT_PULLUP 저항에 대한 자세한 설명은 택트 스위치 문서를 참고해주세요.

2-2. 코드

#define buzzer 6
#define btn 12

void setup() {
  pinMode(buzzer, OUTPUT);
  pinMode(btn, INPUT_PULLUP);
}

void loop() {
  if (!digitalRead(btn)) {
    for (int i = 0; i < 6; i++) {
      digitalWrite(buzzer, !digitalRead(buzzer));
      delay(100);
    }
  }
  delay(10);
}


2-3. 실행 결과


3. 수동 부저 제어로 음계 재생

수동 부저는 능동 부저와 달리 주파수를 제어하여 음을 다르게 표현할 수 있습니다.

도레미파솔라시도 음계를 순서대로 재생하는 예제입니다.

참고자료 : 옥타브 및 음계별 표준 주파수


3-1. 회로 구성

하드웨어 연결 탭의 회로를 참고하세요.


3-2. 코드

#define buzzer 11
int numTones = 8;

//순서대로 (4옥도,4옥레,4옥미,4옥파,4옥솔,4옥라,4옥시,5옥도)
double tones[] = { 261.6256, 293.6648, 329.6276, 349.2282, 391.9954, 440, 493.8833, 523.2511 };

int cnt = 0;

void setup()
{

}

void loop()
{
    if (cnt == 0)
    {
        for (int i = 0; i < numTones; i++)
        {
            //tone(핀번호, 주파수)로 사용합니다.
            tone(buzzer, tones[i]);
            delay(500);
        }
        //noTone함수를 사용하지 않을 시 이전에 입력된 tone함수가 계속 실행이 되므로 
        //noTone함수로 소리를 꺼줍니다.
        noTone(buzzer);
        delay(500);
        cnt++;
    }
}


3-3. 실행 결과


4. 수동 부저 제어로 멜로디 재생

수동 부저로 간단한 멜로디를 재생하는 예제입니다.

본 예제를 바탕으로 다른 멜로디를 재생하도록 변형이 가능합니다.

4-1. 회로 구성

하드웨어 연결 탭의 회로를 참고하세요.


4-2. 코드

#define buzzer 11

int numTones = 8;
double g_tones[] = { 195.9977, 220, 246.9417, 261.6256, 293.6648, 329.6276, 349.2282, 391.9954 };
//솔0,라1,시2,도3,레4,미5,파6,솔7
int cnt = 0;

void setup()
{

}

void loop()
{
    if (cnt == 0)
    {
        tone(buzzer, g_tones[0]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[6]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[1]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[1]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250 * 4);
        noTone(buzzer);
        cnt++;
    }else
    {

    }
}


4-3. 실행 결과

영상 첨부 예정


기타 활용 예시

부저는 소리가 필요한 다양한 프로젝트에서 활용될 수 있습니다.

  • 알람 시스템: 특정 조건이 만족될 때 경고음을 울리는 시스템
  • 타이머: 시간 경과를 알리는 소리
  • 음악 재생: 간단한 멜로디나 효과음을 재생하는 장치
  • 게임: 게임에서의 효과음이나 승리/패배 알림음


구매 링크

3. パッシブブザーで音階を再生

パッシブブザーは、アクティブブザーとは異なり、周波数を制御して異なる音を表現できます。

「ドレミファソラシド」の音階を順に再生する例です。

参考資料:オクターブおよび音階ごとの標準周波数

3-1. 回路構成

ハードウェア接続の回路を参考にしてください。

3-2. コード

#define buzzer 11
int numTones = 8;

double tones[] = { 261.6256, 293.6648, 329.6276, 349.2282, 391.9954, 440, 493.8833, 523.2511 };

int cnt = 0;

void setup()
{

}

void loop()
{
    if (cnt == 0)
    {
        for (int i = 0; i < numTones; i++)
        {
            tone(buzzer, tones[i]);
            delay(500);
        }
        noTone(buzzer);
        delay(500);
        cnt++;
    }
}

3-3. 実行結果

4. パッシブブザーでメロディを再生

パッシブブザーで簡単なメロディを再生する例です。

この例を基に、他のメロディにも応用可能です。

4-1. 回路構成

ハードウェア接続の回路を参考にしてください。

4-2. コード

#define buzzer 11

int numTones = 8;
double g_tones[] = { 195.9977, 220, 246.9417, 261.6256, 293.6648, 329.6276, 349.2282, 391.9954 };
int cnt = 0;

void setup()
{

}

void loop()
{
    if (cnt == 0)
    {
        tone(buzzer, g_tones[0]);
        delay(500);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(500);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(500);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[6]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[1]);
        delay(500);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(500);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(500);
        noTone(buzzer);
        tone(buzzer, g_tones[1]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(250);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(1000);
        noTone(buzzer);
        cnt++;
    }
    else
    {

    }
}

4-3. 実行結果

動画準備中

その他の活用例

ブザーは音が必要なさまざまなプロジェクトに活用できます。

  • アラームシステム:特定の条件が満たされたときに警告音を鳴らすシステム
  • タイマー:時間の経過を知らせる音
  • 音楽再生:簡単なメロディや効果音を再生する装置
  • ゲーム:ゲーム内の効果音や勝敗を知らせる音