MP3プレイヤー「Voice Module」の制御
DFROBOTのMP3プレイヤー「Voice Module(DFR0534)」を、micro:Maqueenに接続して、制御する方法を解説します。
5-17-1.Voice Module(DFR0534)
Voice Module(DFR0534)
Voice Module(DFR0534)は、22mm×30mmの基板上に8MBのメモリーを内蔵したMP3プレイヤーです。アンプを搭載しているので直接スピーカーを接続することができます。対応するフォーマットは、MP3・WAVです。パソコンとUSBケーブル(マイクロUSB Type-B)を接続することで直接内蔵メモリーにファイルを書き込めます。
インターフェースはUART、動作電圧は3.3V/5Vです。Gravityコネクターとスピーカーコネクター、およびDAC出力を備えています。ADKEYには未対応です。
音声ファイル(MP3・WAV)を保存する
パソコンとVoice ModuleをUSBケーブルで接続して、音声ファイルを保存します。対応するフォーマットは、MP3・WAVです。音声ファイルは、8.3形式の短いファイル名にします。例えば「01.mp3」「abcdefgh.wav」などです。
音声ファイルは、読み上げソフトウェアなどを使って作成します。無料で使える「VOICEVOX(ボイボ)」がおすすめです。
5-17-2.Voice Moduleとmicro:Maqueenの接続
Voice ModuleのGravityコネクターに付属の4線ケーブル、スピーカーコネクターにスピーカーを接続します。JST PHコネクター(2ピン)付きのスピーカー(Stereo Enclosed Speaker - 3W 8Ωなど)が用意できればそのまま接続できます。
4線ケーブルの他方はピンソケットになっています。micro:bit用の拡張ボードを用意すると使いやすいでしょう。本記事では、Gravity拡張インタフェース(GPIO)を搭載したmicro:Maqueen(V4.1)を使用します。4線ケーブルの黒・赤・青をそれぞれP2の黒・赤・緑、緑をP1の緑に接続します。
以上で、Voice ModuleとmicroMaqueenの接続は完了です。
5-17-3.プログラム(ブロック)
Voice Moduleコマンドフォーマット
Voice Moduleのインターフェースは、UART(シリアル通信)です。micro:bitからシリアル通信でコマンドを送信することにより、Voice Moduleを制御します。コマンドのフォーマットは次の通りです。戻り値がある場合も同様のフォーマットになります。
コマンドの内容については、Voice ModuleのProduct wikiに掲載されています。後述のプログラムでは、ファイル総数の取得(Command Code:0x0C)・音声ファイルの選択(0x1F)・短いファイル名の取得(0x1E)・音声ファイルの再生(0x07)・ボリュームの設定(0x13)を使用しています。
本プログラムには、ブロックに変換できないコード(グレーのブロック)が含まれています。後述のプログラム(JavaScript)で入力してください。
最初だけ実行するプログラム
変数の定義と初期化、シリアル通信の設定を行っています。受信端子は、Voice ModuleのTransmit(送信)が接続されている「P1」となります。送信端子は、同様にReceive(受信)が接続されている「P2」です。通信速度は「9600」です。最後に、保存されている音声ファイルのファイル名を取得する関数「GetFileName」を呼び出します。
関数:GetFileName
保存されている音声ファイルのファイル名(8.3形式)を取得する関数です。ファイル総数の取得(Command Code:0x0C)した後、順番に音声ファイルを選択(0x1F)して、それぞれのファイル名の取得(0x1E)します。取得したファイル名は、配列「FileNameList」に追加します。なお、ファイル名は、8.3形式の短いファイル名ですべて大文字です。例えば「01.mp3」は「01.MP3」、「abcdefgh.wav」は「ABCDEFGH.WAV」となります。
関数:Play
指定された音声ファイルを再生(0x07)します。ファイル名を、配列「FileNameList」から探して、その番号の音声ファイルを再生します。
関数:Volume
ボリュームを指定したレベルに設定(0x13)します。指定できるレベルは0~30です。
ボタンAが押されたときに実行されるプログラム
サンプルとして、ボタンAが押されたときに、ボリュームレベル15で音声ファイル「01.mp3」を再生するコードです。Play関数の呼び出し時に指定するファイル名は大文字となります。
ボタンBが押されたときに実行されるプログラム
同様に、ボタンBが押されたときに、ボリュームレベル30で音声ファイル「abcdefgh.wav」を再生するコードです。
プログラム(ブロック)
プログラム(JavaScript)です。