【 第17回 】で、100均のスピーカーを2つRaspberry PiのGPIOに繋いでScratchから音を出したのですが、出てくる音があまりにもショボく、なんとかならないかと考えていたところ、Amazonで99円のD級アンプを見つけたので、早速試してみることにしました。
今回使った部品
- Raspberry Pi 3 Model B × 1
- 40Pinフラットリボンケーブル
- 40Pin T型GPIO拡張ボード
- ブレットボード × 1
- D級ステレオパワーアンプ基板モジュール × 1
- ピンヘッダー オスストレート( × 9ピン分)
- 3.5mmイヤホンジャックアダプター × 2
- マルチメディアスピーカー(セリア) × 2
- 電解コンデンサー 16V 47μF × 2
- 電解コンデンサー 50V 0.22μF × 2
- 抵抗 1/4W 100Ω × 6
- ジャンプワイヤー(オス/オス) × 10
売り上げランキング: 2,503
売り上げランキング: 96,707
売り上げランキング: 127,643
売り上げランキング: 3,324
実体配線図
D級アンプはピンヘッダーをハンダ付けしてブレッドボードに挿します。
D級アンプを使う上で忘れてならないのは、Raspberry Piは、PWMのデューティー比を変化させることで、疑似的なアナログ信号を出力しているということです。
Raspberry PiからのPWM出力を元々、帯域幅の狭いスピーカーなどに接続する場合は音声以外の信号が出力されないので問題はおきにくいのですが、D級アンプのように帯域幅の広いデバイスに接続するとPWMに含まれる音声以外の低域や超高域の信号までも増幅することで、音声信号が乱れ、激しいノイズが出力されてしまいます。
そこで、PWM出力から不要な帯域の信号を除くバンドパスフィルターを通してからD級アンプに入力します。それとこのD級アンプ利得が高く、そのままでは100均スピーカーの音が割れてしまうので、出力側にも100Ωを噛ませました。
電解コンデンサには極性があるので、向きに気を付けて配線してください。
GPIO12,GPIO13の出力には、47μFの電解コンデンサーの+側を接続します。
GPIO12とGPIO13の出力モードをハードウェアPWMに設定する
LXTerminalを起動し、コマンド”gpio -g mode”でGPIO12とGPIO13の出力モードをハードウェアPWMに設定します。
gpio -g mode 12 pwm
gpio -g mode 13 pwm
下のコマンドで実行結果を確認します。
gpio readall
BCM列”12”番と”13”番の”Mode”列が、既定の”IN”から拡張機能の”ALT0”に変わっています。GPIO12とGPIO13の場合はハードウェアPWMの”0″チャンネルと”1″チャンネルが割り当てられます。
併せて、タスクバー右のスピーカーアイコンを右クリックし、オーディオ出力先として「Analog」を選択しておきます。
Scratch 1.4で音源を作成する
今回、楽器の選択肢が多いScratch 1.4で音源を作成します。
D級アンプのおかげで見違えるほど雄大?なサウンドが実現できたので、メロディーはあの曲にしました。
Scratch 1.4を起動し、カテゴリー「音」のブロック「60▼の音符を0.5拍鳴らす」を音符の数だけ、スクリプトエリアに並べます。
最初の音から順に、楽譜に合わせて音階を選択します。
最初の音から順に、楽譜に合わせて音符の長さを選択します。4分音符の1拍を基準にします。
カテゴリー「音」のブロック「楽器を1▼にする」をスクリプトの上に載せます。
ブロック「楽器を1▼にする」の”▼”をクリックして、出てきたメニューの1番下にある「more…」をクリックし、「(20)教会オルガン」を選択します。
カテゴリー「音」のブロック「テンポを60BPMにする」をスクリプトの上に載せます。
カテゴリー「制御」のブロック「スペース▼キーが押されたとき」をスクリプトの上に載せます。
キーボードのスペースキーが押して、プロジェクトを実行します。
プロジェクトを保存する
メニューバーの「ファイル」→「名前を付けて保存」をクリックします。
画面上中央に保存するフォルダが表示されていることを確認し、「新しいファイル名」の入力蘭に今回のプロジェクト名を入力して「OK」ボタンをクリックします。
GPIO12とGPIO13を既定の入力モードに戻しておく
LXTerminal画面に戻って次のコマンドを実行し、GPIO12とGPIO13を既定の入力モードに戻しておきます
gpio -g mode 12 in
gpio -g mode 13 in