Chapter 12

🔈圧電ブザーを鳴らす - ⭐

kotaproj
kotaproj
2021.05.23に更新

💡やること

ブザーを使って、ビープ音を鳴らします。

🏁デモ

🔧パーツ一覧

no 部品名 個数 備考
1 ラズベリーパイ 1 今回は4Bで確認
2 圧電ブザー 1 (PKM13EPYH4000) -秋月電子
3 ジャンパー線 適量 -
4 ブレッドボード 1 -

接続図

💻環境

開発環境

  • ラズベリーパイ
    • Linux rpi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux
  • Python
    • Python 3.7.3 (default, Jan 22 2021, 20:04:44)

ラズベリーパイの設定

特になし

モジュールのインストール

OSのクリーンインストールした前提で記載しています。

apt

pigpioライブラリは、Raspberry PiのGPIOを制御するためのライブラリです。
以下のコマンドは、はじめてインストールする場合のみ必要です。

$ sudo apt install pigpio
$ sudo service pigpiod start
$ sudo systemctl enable pigpiod.service

pip

Pythonに関するモジュールをインストールします。

$ python3 -m venv env
$ source env/bin/activate
(env) $ pip install pigpio
(env) $ pip install gpiozero

📝手順

ブザー音が0.5秒ごとに鳴ります。

コード

buzzer.py
from gpiozero import TonalBuzzer
from gpiozero.tones import Tone
from gpiozero.pins.pigpio import PiGPIOFactory
from time import sleep

# BUZZERのピン設定
BUZZER_PIN = 18

# ドレミ - 音名 + オクターブで指定
ONPUS = [
    "C4",   # ド
    # "D4",   # レ
    "E4",   # ミ
    # "F4",   # ファ
    "G4",   # ソ
    # "A4",   # ラ
    "B4",   # シ
    # "C5",   # ド
]


def main():
    # 各ピンをbuzzer設定
    factory = PiGPIOFactory()
    buzzer = TonalBuzzer(BUZZER_PIN, pin_factory=factory)

    # 音を鳴らす
    try:
        # 音符指定
        for onpu in ONPUS:
            buzzer.play(Tone(onpu))
            sleep(0.5)
        buzzer.stop()
        sleep(0.5)

        # midi note指定 (!!!57-81の範囲のみ指定可能)
        for note_no in range(60, 80, 5):
            buzzer.play(Tone(midi=note_no)) # middle C in MIDI notation
            sleep(0.5)
        buzzer.stop()
        sleep(0.5)

        # 周波数指定
        for freq in range(300, 400, 100):
            buzzer.play(Tone(frequency=freq))
            sleep(0.5)
        buzzer.stop()
        sleep(0.5)
    except:
        buzzer.stop()
        print("stop")

    return

if __name__ == "__main__":
    main()

実行手順

(env) $ python buzzer.py

🔎ポイント

音の指定

以下の形式で指定することができます。

  • 音名+オクターブ指定("C4" : ド、"E4" : ミなど)
    • Tone("C4")
  • MIDI Note指定(60 : ド (C4と同じ))
    • Tone(midi=60)
  • 周波数の指定(400)
    • Tone(frequency=400)

すべての音が指定できるわけではありません
MIDI Noteだと、57 - 81の範囲で指定する必要があります

デバイスに依存し、異なる音を指定しても同じ音になる場合があります。
私の環境では、Tone("C4")とTone("D4")は同じ音に聞こえます。