注釈

こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好者コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、他の愛好者と共にさらに深く学びましょう。

参加する理由

  • 専門家のサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートを通じて解決できます。

  • 学びと共有: ヒントやチュートリアルを交換し、スキルを向上させましょう。

  • 独占プレビュー: 新製品の発表や先行情報にいち早くアクセスできます。

  • 特別割引: 最新製品に対する独占的な割引を楽しめます。

  • 祝祭のプロモーションやギブアウェイ: ギブアウェイや祝祭のプロモーションに参加できます。

👉 一緒に探求し、創造しませんか?今すぐ [こちら] をクリックして参加しましょう!

3.2 パッシブ・ブザーでカスタム音を再生する

このレッスンでは、Raspberry Pi Pico 2を使用して パッシブ・ブザー を操作し、さまざまな音を再生したり、簡単なメロディーを演奏する方法を学びます!アクティブ・ブザーとは異なり、パッシブ・ブザーは音を出すために変化する電気信号を必要とし、その信号の周波数を変更することで音の高さを制御できます。

必要なもの

このプロジェクトには、以下のコンポーネントが必要です。

全体キットを購入するのが便利です。リンクはこちら:

名称

セット内容

リンク

Newton Lab Kit

450+

Newton Lab Kit

個別に購入することもできます。

SN

コンポーネント

数量

リンク

1

Raspberry Pi Pico 2

1

購入

2

Micro USBケーブル

1

3

ブレッドボード

1

購入

4

ジャンパーワイヤー

数本

購入

5

トランジスタ

1(S8050)

購入

6

抵抗器

1(1KΩ)

購入

7

パッシブ ブザー

1

購入

パッシブ・ブザーの仕組み

パッシブ・ブザーは小さなスピーカーのように動作します。自分で音を出すことはなく、音を出すためには振動信号が必要です。異なる周波数の信号を供給することにより、ブザーは異なる音高を発生させることができ、これによって音符やメロディーを再生することができます。

img_buzzer

回路図

sch_buzzer

この回路では、パッシブ・ブザーはトランジスタ( S8050 NPN)を介して電力供給されます。トランジスタは電流を増幅し、Picoに直接接続した場合よりもブザーの音量を大きくします。

動作は以下の通りです:

  • GP15 が高信号を出力し、トランジスタを制御します。

  • トランジスタが活性化されると、電流がブザーを通じて流れ、音を鳴らします。

1kΩの抵抗 は、トランジスタを保護するために電流を制限します。

配線図

パッシブ・ブザー を使用していることを確認してください。正しいものかどうかは、基板が露出しているかどうかで判断できます(背面が封印されているのはアクティブ・ブザーです)。

img_buzzer

wiring_buzzer

コードの作成

次に、ブザーで異なる音を再生するコードを書いてみましょう。

注釈

  • newton-lab-kit/micropython から 3.2_custom_tone.py を開くか、コードをThonnyにコピーして「実行」ボタンをクリックするか、F5キーを押して実行します。

  • 正しいインタープリタ(MicroPython (Raspberry Pi Pico).COMxx)が選択されていることを確認してください。

import machine
import utime

# GP15でPWMを初期化
buzzer = machine.PWM(machine.Pin(15))

def play_tone(frequency, duration):
    # PWM信号の周波数を設定
    buzzer.freq(frequency)
    # デューティサイクルを50%に設定
    buzzer.duty_u16(32768)
    # 指定された期間だけ音を鳴らす
    utime.sleep_ms(duration)
    # ブザーを停止
    buzzer.duty_u16(0)

# 音をいくつか再生
play_tone(440, 500)  # A4音を500ms再生
utime.sleep_ms(200)
play_tone(494, 500)  # B4音を500ms再生
utime.sleep_ms(200)
play_tone(523, 500)  # C5音を500ms再生

このコードが実行されると、パッシブ・ブザーがA4音を500ms、B4音を500ms、C5音を500msの順に再生します。

コードの説明

  1. PWMの初期化:

    • buzzer = machine.PWM(machine.Pin(15)): GP15ピンでPWM(パルス幅変調)を設定し、これを使ってブザーを制御します。

  2. play_tone 関数の定義:

    def play_tone(frequency, duration):
        buzzer.freq(frequency)
        buzzer.duty_u16(32768)
        utime.sleep_ms(duration)
        buzzer.duty_u16(0)
    
    • frequency: 音の高さ(周波数)。周波数が高いほど高い音になります。

    • duration: 音が鳴る時間(ミリ秒)。

    • buzzer.duty_u16(32768): デューティサイクルを50%に設定(65535の半分)。

    • 再生が終了したら、デューティサイクルを0にしてブザーを停止します。

  3. 音符の再生:

    異なる周波数の音符を再生するために、 play_tone を呼び出します。

    # 音をいくつか再生
    play_tone(440, 500)  # A4音を500ms再生
    utime.sleep_ms(200)
    play_tone(494, 500)  # B4音を500ms再生
    utime.sleep_ms(200)
    play_tone(523, 500)  # C5音を500ms再生
    

メロディーを演奏してみよう

個々の音符を再生する方法を学んだので、次に簡単なメロディーを作成してみましょう!これにより、音符を順番に並べてその持続時間を調整することで、音楽を作成する方法を理解できます。

import machine
import utime

# 音符の周波数(Hz)
NOTE_C4 = 262
NOTE_D4 = 294
NOTE_E4 = 330
NOTE_F4 = 349
NOTE_G4 = 392
NOTE_A4 = 440
NOTE_B4 = 494
NOTE_C5 = 523

melody = [
    NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
    NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
]

note_durations = [
    500, 500, 500, 500,
    500, 500, 500, 500
]

# GP15でPWMを初期化
buzzer = machine.PWM(machine.Pin(15))

def play_tone(frequency, duration):
    buzzer.freq(frequency)
    buzzer.duty_u16(32768)
    utime.sleep_ms(duration)
    buzzer.duty_u16(0)
    utime.sleep_ms(50)  # 音符の間に短い間隔を置く

for i in range(len(melody)):
    play_tone(melody[i], note_durations[i])

このコードを実行すると、ブザーはメロディーを演奏し、各音符が500ミリ秒間鳴り、音符の間には短い間隔があります。ブザーはC4(中のC)からC5(次のオクターブのC)までの昇順のスケールを演奏します。

さらに実験してみよう

  • 自分のメロディーを作成: メロディーと note_durations のリスト内の音符とその持続時間を変更して、自分の曲を作成しましょう。

  • テンポの調整: note_durations の値を変更してメロディーの速さを調整します。

  • 音符を追加: 新しい音符を定義し、その周波数をメロディーに追加します。

  • 音量を変更: buzzer.duty_u16() のデューティサイクルを調整して、ブザーの音量を大きくしたり小さくしたりできます。32768は50%のデューティサイクルに相当します。

結論

このレッスンでは、パッシブ・ブザーを使用して音符やメロディーを再生する方法を学びました。PWM信号の周波数を制御することで、さまざまな音を作成したり、簡単な曲を演奏したりすることができます。これを活用すれば、プロジェクトに音でのフィードバックや楽しい音楽要素を加えることができます。