Raspberry Pi Picoとブザーで始める電子工作 PWM制御による音の出し方

目次

はじめに

各種センサを使えるようになってきたら、ぜひブザーをつかって音を鳴らしてみましょう。

ブザーの構造と動作原理

基本構造

ブザーの内部には以下の部品が含まれています
・振動板 : 電気信号によって振動する薄い膜
・ピエゾ素子または電磁コイル : 電圧が加わると振動版を駆動する
・ケース : 音を増幅する

動作原理

ブザーの動作原理は、内部の駆動方式によって異なります

ピエゾ式ブザー

1.ピエゾ素子に電圧をかけると、素子が変形する(逆圧電効果)
2.変形が振動板を駆動し、高速で振動
3.振動が空気を押し引きして音波を発生させる

電磁式ブザー

1.コイルに電流を流すと磁場が発生。磁力で振動板を引き寄せる
2.電流のON/OFF(または極性の反転)を繰り返すことで振動板が振動
3.振動によって音波が発生

ブザーと周波数

音の高さ(周波数)は、振動の速さ(Hz)によって決まる
・高い周波数 → 高音
・低い周波数 → 低音
1オクターブ 違う=周波数が2倍違う ということです

音階周波数(Hz)
261.6
293.7
329.6
ファ349.2
392
440
493.9
523.3

ブザーの種類

今回紹介しているのは、電磁式のパッシブブザーです

項目アクティブブザーパッシブブザー
制御のしやすさ簡単周波数の調整が必要
音色の自由度限定的高い
用途アラーム音メロディー作成

配線

配線は非常にシンプルですが、足の長さに注意してください。

RaspberryPi Picoブザー
GP15(20番)正極(長い足)
GND(38番)負極(短い足)
()内はピン番号

ブザーを鳴らす

コードを解説します。

PWM制御(Pulse Width Modulation、パルス幅変調)を使ってブザーを制御します。
音の高さは周波数(Hz)で指定し、ラの音を0.5秒間隔で5秒間鳴らします。

PWM制御は、デジタル信号を使ってアナログ値を模擬する手法です。
一定の周期でONとOFFを繰り返し、見かけ上アナログ値のように見せます。この信号のONの割合をデューティ比といい、制御対象です。

from machine import Pin, PWM
import time

# ブザーを接続したピン番号
BUZZER_PIN = 15

# PWMオブジェクトを作成
buzzer = PWM(Pin(BUZZER_PIN))

def play_tone(frequency, duration):
    """
    指定した周波数と長さで音を鳴らします
    :param frequency: 音の周波数 (Hz)
    :param duration: 音の長さ (秒)
    """
    buzzer.freq(frequency)
    buzzer.duty_u16(32768)  # デューティ比50%
    time.sleep(duration)
    buzzer.duty_u16(0)  # 音を止める

try:
    # 5秒間、ブザーを鳴らす
    start_time = time.time()
    while time.time() - start_time < 5:
        play_tone(440, 0.5)  # ラ(A4)の音を0.5秒鳴らす
        time.sleep(0.5)  # 0.5秒間隔を開ける
finally:
    # クリーンアップ処理
    buzzer.duty_u16(0)
    buzzer.deinit()
    print("ブザーを停止し、クリーンアップが完了しました。")
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次