今回は、MP3プレイヤーモジュール「DFPlayer Mini」を使って、 マイコンから音楽を再生してみましょう。

ボタンやゲームと組み合わせることで、 効果音やBGMをつけられるようになります。

サンプルのinoファイルはこちら

mp3player1


今回使う部品

・DFPlayer Mini(MP3-TF-16P V3.0)
・スピーカー(イヤホンジャックのついた有線イヤホンでもOK)
・microSDカード
・抵抗(1kΩ 茶黒赤金)

DFPlayer Miniは正規品と互換品がありますが 今回は互換品をつかいました。
電子工作ステーションで購入できます。

sc8_607DFPlayer Mini (¥270)
DFPlayer Miniは、実はマイコンがなくても動かすことができます。
ボタンを直接つなぐことで、再生や曲送りができるしくみがあります。

今回はマイコンから操作することで、より自由にコントロールしていきます。

UIAPduinoはメモリの容量があまり大きくないため、
DFPlayerを使えば、音声ファイルはSDカードに保存しておけるので、
きれいな音のまま、好きなときに再生することができます。

配線をしよう(UIAPduinoとDFPlayerをつなぐ)

図のように配線してみましょう。

(クリックで拡大できます)
sc8_608

DFPlayerは、シリアル通信(TX / RX)を使って命令を送ります。

TXとRX

TXは「送信」、RXは「受信」という意味です。

マイコンのTX → DFPlayerのRX
マイコンのRX → DFPlayerのTX

このように、交差させて接続します。
抵抗を入れる

DFPlayerは3.2〜5Vで動作し、RXピンも5V信号を受け取ることができます。

ただし、信号を安定させたりノイズを減らすために、
マイコンのTX →(1kΩ抵抗)→ DFPlayerのRX
とするのがおすすめです。

DFPlayerのピン配置は下図のようになっています。

・VCCを電源に
・RXを抵抗を経由してUIAPduinoのTXに
・TXをUIAPduinoのRXに
・GNDをGNDに
・SPK1をスピーカーのプラスに
・SPK2をスピーカーのマイナスに

それぞれつなげましょう

sc8_606



イヤホンを使いたいとき

ステレオイヤホンのプラグは、3つのパーツに分かれています。

 先端(チップ): 左耳のプラス (L)
 真ん中(リング): 右耳のプラス (R)
 根元(スリーブ): 共通のマイナス (GND)


ワニ口クリップを使って
SPK1の線を先端に、SPK2の線を根本にはさみこむと、
イヤホンの左耳から音が聞こえるようになります。
wani1


図のように「先端」と「真ん中」の2つの節を同時にガブッとはさみ込むと
両耳から聞こえるようになります。
wani2

SPKからの信号はステレオなので、両側から同じ音が聞こえますが
DAC_LDAC_Rのピンはモノラルに対応しているので

DAC_Lを先端に、DAC_Rを中央のリングに接続すれば
モノラルで聞こえるようになります。
3.5mmステレオジャックを使うと接続が簡単になります)

SDカードに曲を入れよう

DFPlayerは、microSDカードに入れた音楽ファイルを再生します。

ファイル名は、次のように4ケタの数字でつけましょう。

0001.mp3
0002.mp3
0003.mp3

フォルダ分けをしたいときはフォルダ名を2ケタの数字でつけます。

日本語や英語の名前がついたmp3も再生できましたが
「何番のファイルを再生」という命令を出したいときには
きちんと番号がついていないと、ファイルを指定できません。

プログラムを書こう

Arduinoでは専用ライブラリを使うことが多いですが、 UIAPduinoではそのまま使えませんでした。

そこで今回は、DFPlayerの仕様書にしたがって、 コマンドを直接送る方法で再生します。

(くわしいしくみは次回解説します)

■ サンプルコード
// DFPlayerにコマンドを送る関数
void sendCommand(uint8_t cmd, uint8_t p1, uint8_t p2) {
  uint8_t packet[10] = {
    0x7E, 0xFF, 0x06, cmd, 0x00,
    p1, p2,
    0x00, 0x00, 0xEF
  };

  uint16_t sum = 0;
  for (int i = 1; i < 7; i++) {
    sum += packet[i];
  }
  sum = -sum;

  packet[7] = (sum >> 8) & 0xFF;
  packet[8] = sum & 0xFF;

  Serial1.write(packet, 10);
  delay(200);
}

void setup() {
  Serial1.begin(9600);
  delay(2000);

  sendCommand(0x0C, 0, 0); // リセット
  delay(1000);

  sendCommand(0x0D, 0, 0); // 再生スタート
}

void loop() {
}

動かしてみよう

プログラムを書き込んで電源を入れると、 音楽が再生されます。

※注意!

まだ音量調整をしていないので、
イヤホンを使っている人は爆音になる可能性があります。
耳から離して聞いてみてね。


音が出ないときは、次のポイントを確認してみましょう。

  • SDカードのファイル名が正しいか(0001.mp3 など)
  • TX / RXの接続が逆になっていないか
  • 抵抗が正しく入っているか

まとめ

これで、マイコンから音を再生できるようになりました。

次回は、ボタンを使って「再生・停止」や「曲送り」ができるようにしていきます。

音が出せるようになると、作品の幅がぐっと広がりますよ!


DFPlayerのマニュアル