CatalexシリアルMP3プレーヤー:Arduino UNOで簡単セットアップと制御
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | |
| Catalex シリアルMP3プレーヤー V1.0 | 1 | |
| お好みの音楽ファイル(MP3/WAV) | 1 | microSDカードに保存 |
使用アプリ・オンラインサービス
- Arduino IDE
プロジェクト概要
CatalexシリアルMP3プレーヤー V1.0の使い方
まず必要なライブラリをインクルードします。
#include <SoftwareSerial.h>
ArduinoのどのピンをMP3モジュールのTX/RXに接続するか定義し、ソフトウェアシリアルを初期化します。
#define ARDUINO_RX 5 // モジュールのTXに接続
#define ARDUINO_TX 6 // モジュールのRXに接続
SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);
データシートに基づくコマンド定義
モジュールは8バイトのコマンド配列 0x7E FF 06 command 00 00 00 EF 形式で動作します。主なコマンドを#defineで定義します。
#define NEXT_SONG 0X01
#define PREV_SONG 0X02
#define CMD_PLAY_W_INDEX 0X03 // 曲番号指定再生(データ必要)
#define VOLUME_UP_ONE 0X04
#define VOLUME_DOWN_ONE 0X05
#define CMD_SET_VOLUME 0X06 // 音量0-30(0x1E)指定(データ必要)
#define CMD_PLAY_WITHVOLUME 0X22 // 音量と曲番号指定(データ必要)
#define CMD_SEL_DEV 0X09 // ストレージ選択(データ必要)
#define DEV_TF 0X02 // microSDカード選択
#define SLEEP_MODE_START 0X0A
#define SLEEP_MODE_WAKEUP 0X0B
#define CMD_RESET 0X0C
#define CMD_PLAY 0X0D
#define CMD_PAUSE 0X0E
#define CMD_PLAY_WITHFOLDER 0X0F // フォルダ指定再生
#define STOP_PLAY 0X16
#define PLAY_FOLDER 0X17
#define SET_CYCLEPLAY 0X19
#define SET_DAC 0X17
コマンド送信関数
コマンドとデータから8バイト配列を組み立て、シリアル送信する関数です。
static int8_t Send_buf[8] = {0};
void sendCommand(int8_t command, int16_t dat) {
delay(20);
Send_buf[0] = 0x7e;
Send_buf[1] = 0xff;
Send_buf[2] = 0x06;
Send_buf[3] = command;
Send_buf[4] = 0x00; // フィードバックなし
Send_buf[5] = (int8_t)(dat >> 8);
Send_buf[6] = (int8_t)(dat);
Send_buf[7] = 0xef;
for (uint8_t i = 0; i < 8; i++) {
mySerial.write(Send_buf[i]);
}
}
セットアップとループ
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
delay(500);
sendCommand(CMD_SEL_DEV, DEV_TF); // TFカード選択
delay(200);
}
void loop() {
sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01); // 音量15で最初の曲再生
delay(1000000); // 100秒ごとに再生コマンド送信
}
SDカードへの楽曲配置方法
データシートによると、チップは.mp3/.wavファイルをアルファベット順にインデックスします。確実に制御するには、フォルダを01, 02...、曲ファイルを001xxxx.mp3, 002xxxx.mp3...のように命名します。
Enjoy your hacking!
ソースコード(完全版)
// Javier Muñoz 作成 2016/11/10
#include <SoftwareSerial.h>
#define ARDUINO_RX 5
#define ARDUINO_TX 6
SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);
static int8_t Send_buf[8] = {0};
// コマンド定義(上記と同一)
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
delay(500);
sendCommand(CMD_SEL_DEV, DEV_TF);
delay(200);
}
void loop() {
sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01);
delay(1000000);
}
void sendCommand(int8_t command, int16_t dat) {
delay(20);
Send_buf[0] = 0x7e;
Send_buf[1] = 0xff;
Send_buf[2] = 0x06;
Send_buf[3] = command;
Send_buf[4] = 0x00;
Send_buf[5] = (int8_t)(dat >> 8);
Send_buf[6] = (int8_t)(dat);
Send_buf[7] = 0xef;
for (uint8_t i = 0; i < 8; i++) {
mySerial.write(Send_buf[i]);
Serial.print(Send_buf[i], HEX);
}
Serial.println();
}
回路図
電源電圧は3.2〜5V、消費電流約200mAです。

製造プロセス
- 「維持管理クライシスソング」ブルース&レゲエ版を無料DL、危機啓発を増幅
- プレーヤーピアノ:音響伝統と自動演奏精密技術の融合
- Arduino UNOで作る『イカゲーム』テーマのインタラクティブ人形 - DIYプロジェクト
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino UNOとDFPlayer Miniで音声を再生する方法 - ステップバイステップガイド
- Arduinoウェブ制御MP3プレーヤー:ブラウザから簡単オーディオ再生