MP3プレーヤーminiモジュールを使ってみます(PIC編)

〔ボイスモジュール〕 〔プレーヤーモジュール〕 〔マイコンのトップに戻る〕


やっぱりぃ、"DFPlayer mini(MP3プレーヤー)" のライブラリPIC編を作成してしまいました。
プレーヤーモジュールの話は全ページを参照下さい、ここでは省略します。

《回路について》

実態配線図
回路電源は5.0Vです。使うPICは16F1829です。
モジュールは"ADkey Control モード"は使わないでUARTモードのみで操作します。
LCD表示は、モジュールから送られて来るデータを表示する為の物です、
無くても構わないでしょう。
スピーカーの配線は何方でも構いません。


《ダウンロードファイルについて》

↓ここからサンプルプログラムソースファイルをダウンロードして下さい。
PlayerPIC.zip

プログラムソースをダウンロードしたら、MPLAB Xにてプロジェクトを作成します。
以下のファイルをプロジェクトディレクトリにコピーしてプロジェクトに取込んで下さい。
次にコンパイルPIC書き込みを実行して下さい。
MPLAB(R) XC8 C Compiler Version 1.40コンパイラを使用しています。

ダウンロードファイルを解凍すると下記の様なファイル構成です。
 Player.c・・・・・・・・・・・・ 本体メインのサンプルプログラム
 skDFRPlayerM.c・・・・ DFROBOTのMP3 DFPlayer mini モジュール用関数ライブラリのソースファイル
 skDFRPlayerM.h・・・・ DFROBOTのMP3 DFPlayer mini モジュール用関数ライブラリのヘッダファイル
 skUARTlib.c・・・・・・・・ USART関数ライブラリのソースファイル
 skUARTlib.h・・・・・・・・ USART関数ライブラリのヘッダファイル
 skI2Clib.c・・・・・・・・・・ I2C通信を行う関数ソースファイル
 skI2Clib.h・・・・・・・・・・ I2C通信を行う関数のヘッダファイル
 skI2CLCDlib.c・・・・・・ I2C接続LCD関数ライブラリソースファイル
 skI2CLCDlib.h・・・・・・ I2C接続LCDライブラリ用ヘッダファイル

 尚、CPUのクロックは16MHzを想定しています。

Player.c

サンプルは約2秒後にトラック番号1を再生しているだけです。
後は、御自分でおすきにぃ。
再生中は、モジュールのLEDが点灯します。

skDFRPlayerM.c
skDFRPlayerM.h

DFROBOTのMP3 DFPlayer miniモジュールを操作する為の関数ライブラリです。
コマンドはいっぱい有るのですがぁ一部のみ関数にしました。
この関数集自体は他のPICでも利用可能でしょう。
尚、実験は行っていないが"XC16"でのコンパイルだけは通しています。

関数の使い方を説明します。

 void DFRPM_Send(char command,unsigned int para)
  モジュールにコマンドを送信する処理
   command : 送信するコマンドを指定
   para   : コマンドのパラメータを指定

 ※ 送信するコマンドは、モジュールに"返答は不要"で全て送信しています。

 void DFRPM_Receive()
  モジュールからコマンドを受信する処理
  この関数はループ内で常に実行させていないとダメです。
  モジュールから受信したデータは受信ハンドラー関数"ReceiveHandler()"に渡しますので
  必ずアプリケーションのプログラムで記述して下さい。

  受信データを利用しない場合でも以下の様に記述します。
  void ReceiveHandler(char command,char paraH,char paraL)
  {
  
  }
 void DFRPM_Initiate(unsigned char VolumeSU)
  モジュールの初期値設定を行う処理
  この関数はモジュールをリセットし"0x3F"コマンドの返答をまちます、
  その後に、イコライザー(NORMAL)とボリュームの設定を行います。
   VolumeSU : 初期のボリューム値(0-30)

 void DFRPM_Reset()
  モジュールのリセットを行う処理
  このコマンドを実行した後は、"0x3F"コマンドが返ります。

 void DFRPM_Sleep()
  モジュールをスリープさせる処理(未実験)

 ans = DFRPM_Status()
  モジュールの現在の状態を得る処理
   ans : 00=停止 01=再生中 02=一時停止 03=スリープ中 04=SDカードでない

 void DFRPM_PlayNext()
  次の曲の再生を行う処理
  再生した曲が最終トラックだった場合は、トラック1番に戻って再生します。

 void DFRPM_Pause()
  曲の再生を一時停止させる処理

 void DFRVM_Stop()
  全ての曲の再生を止める処理

 void DFRVM_Play()
  曲の再生を開始する処理
  前に再生した曲を開始させます、電源を入れた直は1番トラックを再生します。
  又、一時停止した曲を再開する場合も用います。

 void DFRPM_SpecifyPlay(unsigned int trackNumber)
  ルートディレクトリの曲を指定して再生する処理
  65535まで指定可能ですが3000トラックまでとしましょう。
   trackNumber : 再生するトラックの番号(1-65535)

 ※ 01.mp3/02.mp3の後にフォルダ"11"内に01.mp3を順に書き込んだとする、
   DFRPM_SpecifyPlay(3)と指定したらフォルダ"11"内の01.mp3が再生されます。

 void DFRPM_SpecifyDir(unsigned char dirNumber,unsigned char fileNumber)
  フォルダ内の曲(255曲)を指定して再生する処理
  この関数を使用した場合は255ファイル保存できます。
   dirNumber : 再生するフォルダの番号(1-99)
   fileNumber : 再生するファイルの番号(1-255)

※ この関数はトラック番号でなくファイル名の番号での指定です、注意してください。
  例えば、フォルダ"11"でファイル名が"007.mp3"を再生するなら"DFRPM_SpecifyDir(11,7)"です。

 void DFRPM_SpecifyLargeDir(unsigned char dirNumber,unsigned int fileNumber)
  フォルダ内の曲(3000曲)を指定して再生する処理
  この関数を使用すれば”01”〜”15”の15フォルダのみ各フォルダに3000ファイルを保存できます。
   dirNumber : 再生するフォルダの番号(1-99)
   fileNumber : 再生するファイルの番号(1-3000)

※ この関数はトラック番号でなくファイル名の番号での指定です、注意してください。
  例えば、フォルダ"11"でファイル名が"0010.mp3"を再生するなら
  "DFRPM_SpecifyLargeDir(11,10)"です。

 void DFRPM_randomPlay()
  ランダムで曲を再生する処理
  最初は1番トラックを再生し以降はランダムです。

 void DFRPM_RepeatNow()
  今再生中の曲を繰り返して再生する処理
  再生中でないとこの関数は機能しません。

 void DFRPM_RepeatAll(unsigned char instruction)
  全ての曲を繰り返して再生する処理
  フォルダ内のファイルも再生されます。
   instruction : 1=再生開始 0=再生停止

 void DFRPM_RepeatDir(unsigned int dirNumber)
  指定したフォルダ内の曲を繰り返して再生する処理
  この関数を使用すると、フォルダは255を超えるファイルを再生できます。
   dirNumber : 再生するフォルダの番号(1-99)

 void DFRPM_SetVolume(unsigned char VolumeSU)
  ボリュームを設定する処理
   VolumeSU : ボリュームの値(0-30)、デフォルトは"30"です

 void DFRPM_UpVolume()
  ボリュームを上げる(+1)処理

 void DFRPM_DownVolume()
  ボリュームを下げる(-1)処理

 void DFRPM_SetEQ(unsigned char style)
  イコライザーを設定する処理
   style : イコライザーのスタイル値
       00=普通 01=ポップ 02=ロック 03=ジャズ 04=クラシック 05=ベース

skUARTlib.c
skUARTlib.h

モジュールとの通信は、9600bps Data=8bit Parity=none Stop=1bit Flow=noneです。
この内容は”FT232RL使用によりUSBをシリアル変換してマイコンと繋ぎます”を参照下さい。

skI2CLCDlib.c
skI2CLCDlib.h
skI2Clib.c
skI2Clib.h

この内容は”秋月電子I2C接続小型LCDモジュールに表示を行う”を参照下さい。
尚、LCD表示を行わない場合はこのファイルは必要ありません。


《その他》

実験風景
上の実態配線図と写真のブレッドボードは逆さまです。

使ったマイクロSDカードは、TDK 2GBで行っています。
"DFPlayer mini"と検索すればさらに安い物が手に入ります、
例えばこちら、但し国際郵便(メール便)にて出荷なのでぇお届けに日数を要するがぁ。




【きむ茶工房ガレージハウス】
Copyright (C) 2006-2019 Shigehiro Kimura All Rights Reserved.