Playground

ArduinoでMK-156(ボイスプレーヤーモジュール)を使う

Playground
この記事は約5分で読めます。
スポンサーリンク

今まではブザーでなんとかメロディを作ってマイコンで音を出していたが、「スピーカーで音楽を!」ということで色々探していたらMK-156という音声もジュールが良いらしいので研究費で購入してみた。

色々探してみると、Arduinoで使っている事例がなかったためまとめてみる。

 

スポンサーリンク

MK-156とは?

MK-156とは、マイコンキットドットコムから発売されているアンプ内蔵で小型の多機能MP3/WAVボイスプレーヤーモジュールです。

シリアル通信(RS232C)で操作できるため、マイコンでも簡単に音を出力ができるモジュールです。

 

MK-156を操作するMK-157というコントローラボードキットも発売されています。

 

音楽データの取り込み

SDカードに音楽データを入れるときに少し工夫が必要です(結構ここで迷った)

また、再生できる音楽データはmp3かwavのみです。

下記のように音楽データを入れること!

フォルダ(01~99) \ 音楽ファイル(001 ~ 255)

ex) 01\001.wav というふうに音楽ファイルを入れていく

フォルダは01~99まで作成可能

音楽ファイルは001~255でフォルダ名をつけてください ex)001.mp3 002.wav

 

接続

下記の画像のとおりにArduinoと接続する

スピーカーは適当なものを購入して接続してください。(私はマルツパーツで小型スピーカーを購入しました)

注意してほしい点として、この記事では “SoftwareSerial.h” のライブラリを利用します。

img_20160918_230923_

プログラム

テストプログラムを下記に記述します。

最初に003番の曲が流れます。

play_file(0x01,0x03);

のところで、play_file(0x01,0x01);と変更すると001番目の音楽が流れます。

このプログラムでは、音量と次、前の音楽ファイルの再生、再生/一時停止の機能をつけています。

その他は、マニュアルを参照してください。

#include <SoftwareSerial.h>

#define HEAD 0x7E
#define END 0xEF
 
SoftwareSerial MK156(10, 11); // RX, TX

int inputvalue = 0;  // 受信データ用
 
void setup() {
  Serial.begin(9600);
  MK156.begin(9600);

  Serial.println("volume: up='q' down='a'");
  Serial.println("music: next music='w' before music='s'");
  Serial.println("play or stop: 'z'");
  
  //play();
  play_file(0x01,0x03);//ディレクトリ,ファイル
}
 
void loop() {
  if (Serial.available() > 0) { // 受信したデータが存在する
    inputvalue = Serial.read(); // 受信データを読み込む

    switch(inputvalue){
      case 'q'://音量増
        command(0x05);
        break;

      case 'a'://音量減
        command(0x06);
        break;

      case 'w'://次のファイルを再生
        command(0x03);
        break;

     case 's'://前のファイルを再生
        command(0x04);
        break;

     case 'z'://再生/一時停止
        command(0x0c);
        break;
    }
  }
}

/*音楽を選択して再生*/
//arg_folder (ディレクトリ名)01~99まで指定可能
//arg_file   (音楽ファイル名)001~255まで指定可能
void play_file(uint8_t arg_folder, uint8_t arg_file){
  MK156.write(HEAD);
  MK156.write(0x04);
  MK156.write(0x42);
  MK156.write(arg_folder);
  MK156.write(arg_file);
  MK156.write(END);
}


/*コマンド*/
//音量
//0x05 1ステップ増
//0x06 1ステップ減

//music
//0x03 次の音楽再生
//0x04 前の音楽再生

//play music
//0x0c 再生/一時停止
//0x01 再生
//0x02 一時停止
//0x0e 停止

void command(uint8_t arg_command){
  MK156.write(HEAD);
  MK156.write(0x02);
  MK156.write(arg_command);
  MK156.write(END);
}

ArduinoとMK-156の接続方法は、

MK-156    Arduino

RXDピン ー 11ピン(TXD)

TXDピン ー 10ピン(RXD)

としてください。

 

実行結果

※音量が小さいので注意

 

 

センサーの値を読み取ってそこから効果音とかでたら面白そう

 

 

参考文献

  1. AVRマイコン総合スレ Part37 http://wc2014.2ch.net/test/read.cgi/denki/1455035922/l50
  2. マイコンキットドットコム MK-156マニュアル http://www.mycomkits.com/reference/MK156manual.pdf

コメント

  1. はじめましてタカハシと申します。貴ブログを参考にarduinoでmk156を動作させることができました。
    しかし間違っていると思われる箇所があると思うので指摘させていただきます。
    ・mk156のRxとTxが逆
    ・シリアル通信のピンがRx→Rx、Tx→TxではなくRx→Tx、Tx→Rx
    の二点です。ご確認くださいませ。

    • お読み頂きありがとうございます。また、ご指摘ありがとうございました。
      早速、MK-156とArduinoの接続の箇所を修正いたしました。
      これからもよろしくお願いします。

タイトルとURLをコピーしました