MP3サウンドモジュールDY-SV17をESP32で使ってみましょう。
DY-SV17Fとは
フラッシュ内蔵のMP3サウンドモジュールです。
類似製品としてSDカードタイプのDFPlayerや同種類製品としてJQ6500 などがあります。
DY-SV17の使い方
スイッチでスタンドアローンコントロールしたり、UARTでコントロールしたり出来ます。
まずは、USBでフラッシュメモリに音源を用意しましょう。
なお、ファイル名は00001.MP3~とするようです。
UARTで使う
CON1,CON2をプルダウン
CON3をプルアップします。
この状態で、5Vの入力とUART接続することでArduinoからコントロールできます。
ESP32で使う
ESP32では以下ライブラリを使ってコントロールしようとしましたが素直にUARTで使う事が出来ませんでした。
https://github.com/SnijderC/dyplayer
この為、TXのみでコントロールするプログラムを作ってみました。
初めにUARTの中身をUART tuning toolを使って見てみましょう。
DY-SV17F manual & Datasheet
http://attach01.oss-us-west-1.aliyuncs.com/IC/Datasheet/13441.rar
UART通信の中身
DY-SV17FはUSBフラッシュ以外にSDカードなどを使えるICにが載っています。
まずは、フラッシュで動作するコマンドを送ります。
そのうえで、再生するトラックを指定します。
回路構成
ESP32の15ピンをDY-SV17FのRXにつなぎ
CON1,CON2をプルダウン
CON3をプルアップ
電源は5Vを入力します。
プログラム内容
UART tuning toolで送信するコマンドは以下です。
停止
0xAA, 0x04, 0x00, 0xAE
1曲目(0xXX の6個目が変化します)
0xAA, 0x16, 0x03, 0x02, 0x00, 0x01, 0xC6
2曲目
0xAA, 0x16, 0x03, 0x02, 0x00, 0x02, 0xC7
3曲目
0xAA, 0x16, 0x03, 0x02, 0x00, 0x03, 0xC8
UARTのポートはRXがなく、TXだけとするので-1としました。
DY_TX.begin(9600, SERIAL_8N1,-1, 15);
プログラム
HardwareSerial DY_TX (1); // RX, TX
byte SOUND_1_MUSIC[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x01, 0xC6};
byte SOUND_2_MUSIC[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x02, 0xC7};
byte SOUND_3_MUSIC[] = {0xAA, 0x16, 0x03, 0x02, 0x00, 0x03, 0xC8};
byte SOUND_STOP[] = {0xAA, 0x04, 0x00, 0xAE};
void setup() {
DY_TX.begin(9600, SERIAL_8N1,-1, 15);
Serial.begin(9600);
}
void loop() {
Serial.println("TRACK 1");
DY_TX.write(SOUND_1_MUSIC, sizeof(SOUND_1_MUSIC));
delay(5000);
Serial.println("TRACK Stop");
DY_TX.write(SOUND_STOP, sizeof(SOUND_STOP));
delay(2000);
Serial.println("TRACK 2");
DY_TX.write(SOUND_2_MUSIC, sizeof(SOUND_2_MUSIC));
delay(5000);
Serial.println("TRACK Stop");
DY_TX.write(SOUND_STOP, sizeof(SOUND_STOP));
delay(2000);
Serial.println("TRACK 3");
DY_TX.write(SOUND_3_MUSIC, sizeof(SOUND_3_MUSIC));
delay(5000);
Serial.println("TRACK Stop");
DY_TX.write(SOUND_STOP, sizeof(SOUND_STOP));
delay(2000);
}
以上でコントロールできます。