DFPlayer Mini を使ってArduinoで音声(MP3)を再生する

th_DFPlayer-5

Arduinoでの音声再生は過去にWaveシールドを使ってやったことがあります。が、やっぱりシールドを使うとどうしても図体が大きくなってしまって、使い勝手が悪いです。特にコンパクトな作品を作りたいときには、これは大問題です。

この壁がどうにも克服できなくて、しゃーなしで8ビット音声でごまかしたのが、前に作ったゼルダのごまだれ宝箱だったり、箱入りうさまるだったりします。まあ、これはこれで味があって良かったのですが。

そんなこともあって、「Arduinoで超コンパクトに音声再生できる方法ないかなあ」というのは、ぼんやりとずっと探していたのですが、ようやく見つけました。

安いしコンパクト。まさに自分の理想どおりです。少し前から流通はしていたようなのですが、日本語記事がまだ少なくて、気づくのが遅れてしまいました。

これを使えるようになれば工作の幅が色々広がりそうなので、早速試してみたいと思います。

 

ということで、Amazonでポチ。注文してから1〜2週間ぐらいで中国から届きました。まとめて6個。

 th_DFPlayer-1

中身はこんな感じの小袋がプチプチで包まれて入っているだけ。取説の類は一切なしです。

th_DFPlayer-2

th_DFPlayer-3

うんうん、サイズ感はとてもいい感じです。

 

ではでは、使えるようにしていきましょう。現時点(2016/9)では、日本語では以下の方々の記事が参考になります。

ピン配置や配線についてこちらこちらのPDFがわかりやすいです。このモジュールのシリアルポート(Tx, Rx)が3.3Vなので、5VのArduinoと接続するときは1kΩの抵抗を間に挟むことが推奨されているみたいです。が、今回自分は3.3VのArduino Pro Miniに繋げてみるので、ダイレクト接続で問題なさそうです。

th_DFPlayer-4

ということで、接続はとても簡単。Vcc同士とGND同士を繋いで、ArduinoのRxとDFPlayerのTx、ArduinoのTxとDFPlayerのRxを繋ぐだけ。ソフトウェアシリアルでも大丈夫そうなので、上の写真ではArduinoの2ピンにRx、3ピンにTxを割り当てるつもりで接続しています。ハードウェアシリアルはどうしてもここにしか接続できないような機器との接続のために、できるだけ空けておく方針です。

それから、スピーカーもダイレクトにDFPlayerに繋いでしまってOK。別途アンプを用意しなくていいのも素晴らしいです。

 

さて、次は音声ファイルの準備です。DFPlayerはSDカードから音声ファイルを読み出す形で音声を再生するのですが、いくらDFPlayerが安くてもSDカードが高いと辛いので、Amazonで比較的安めの以下を購入してみました。

ちなみに、普段使いのRaspberry Piの起動SDカードにはSanDisk製を使っています。

 th_DFPlayer-6

ファイル構成はこんな感じで、SDカードのトップに”mp3″フォルダを作って、その中に”0001****.mp3″のようなファイル名でMP3データを置きます。先頭が4桁の数字になってさえいれば、あとは英数字ならあまり制限はなさそうです。

 

あとはプログラムです。こちらからライブラリを落としてきてArduino IDEの”libraries”フォルダ以下に置いたら、ソフトウェアシリアルのサンプルプログラム(”DFPlayer_SoftwareSerial”)を自分の環境に合うよう修正します。

#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

SoftwareSerial mySerial(2, 3); // RX, TX

//
void setup () {
  Serial.begin (9600);
  mySerial.begin (9600);
  mp3_set_serial (mySerial);  //set softwareSerial for DFPlayer-mini mp3 module 
  mp3_set_volume (15);
}

//
void loop () {        
  mp3_play (1);
  delay (6000);
  mp3_play (2);
  delay (6000);
  mp3_play (3);
  delay (6000);
}

では早速。

 

 

うん、大丈夫そう。。。と思いきや。

 

 

途中からこんな感じでひどい雑音しかならなくなってしまいました。

ちょっと調べてみたところ、どうやらDFPlayerの電源はArduinoから直接取らない方が良いとか、電源電圧は4.2Vが最適とか、何やらノウハウが必要なようです。詳細は以下をご参照のこと。

ということで、以下のように、DFPlayerの電源を別にUSB 5Vで取る形で試してみたところ、

th_DFPlayer-5

無事に安定して音が鳴るようになりました。よかったよかった。ちなみにArduinoのVccから電源をとるのがダメなのであって、上記のUSB 5VをArduinoのRAWとDFPlayerのVccに分けて流し込むのはOKです。

 

ということで、ちょっとだけ調査が必要だったりしましたが、比較的簡単にArduinoでMP3を鳴らすことができるようになりました。Arduinoで音声を扱おうと思ったら、これが今のところ最適解かなあという気がしています。安いので多少手荒に扱ったっていいですし、別のアンプも不要でよりコンパクトにできますし。

あとはこれを活用して、光ったり鳴ったりするものをどんどん作っていきたいところです。


「DFPlayer Mini を使ってArduinoで音声(MP3)を再生する」への5件のフィードバック

  1. はじめまして。当方72歳で2年前より電子工作をはじめました。
    今mycomkits.com製のmk-156(@2700)で音楽を再生していますが、中国製の(Hiletgo)のDFplyerが値段が(@250)と安いのでこれを使ってみましたが、うんともすんとも言いません。完全互換ではないのでしょうか?
    あなたの記事の仕様書を見ると同じようですが、どこが違うのでしょうか?ARDUINO UNOで使っています。
    ご教示よろしくお願い申し上げます。

    1. 石川様

      そのメーカーのDFPlayerの存在は初めて知りました。私はそのモジュールを持っていませんので、違いについては残念ながらわかりません。見た感じは同じように見えますが。。。

      モジュールについているLEDからして全く反応しないようであれば、電源の配線ミスか、あるいは初期不良の可能性もあると思います。私が使用したDFPlayerもそうですが、値段が値段の商品ですので、不良品の混在率は高いかなと思っています。Amazonのレビューを見てみても、不良品に当たってしまった人はいるようです。
      LEDは反応しているのに音が鳴らないということであれば、シリアル(ソフトウェア or ハードウェア)の接続は正しいか、mp3ファイルの名前設定とSDカードへのファイルの置き方は正しいか、入力電圧は正しいか、などがチェック項目になるかと思います。

      あまりお役に立つようなことが言えず、申し訳ありません。

    2. DF-Playerのライブラリーには色々な種類とVer違いが存在するようです。私の場合も最初はVer2.0では動作せず「DFPlayer_Mini_Mp3のVer1.0」で動作しました。
      ライブラリーに下位互換は無いようです。

  2. 石川 威 さんへ
    追伸、Arduino を5Vで使用する場合信号レベルを合わせるために、Arduino TX とDF-Player RXの間は10Kの抵抗で結んでください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>