คมอการใชงาน ThaiEasyElec MP3 Embedded Module
(ฉบบภาษาไทย)
Version 1.1
ประวตการเปลยนเวอรชน
Venus Supply Co., Ltd. Page 1
เวอรชน วนท การเปลยนแปลง 1.1 16 พฤศจกายน 2556 เปลยนรป,การใชงานกบ Arduino 1.0 3 ตลาคม 2556 เวอรชนแรก
Venus Supply Co., Ltd. Page 2
คมอการใชงานบอรด ThaiEasyElec MP3 Embedded Module (ETEE043)
บอรด ThaiEasyElec MP3 Embedded Module (ETEE043) เปนโมดลทออกแบบมาสาหรบเลนไฟลเสยงเพลงนามสกล .MP3 งายตอการใชงาน ราคาถก โดยใช IC decode เบอร BU94502AKS2 ซงใหเสยงคณภาพด รองรบอตราการ Sample Rates ตงแต 8kHz ถง 48kHz. สามารถควบคมการใชงานได 2 รปแบบ คอโหมด Parallel และ Serial ผใชงานสามารถใช MCU เบอรตางๆ เพอมาควบคมไดงาย โดยมชดคาสงตางๆ ในการเลนไฟลเพลง เชน คาสงเลนเพลง , คาสงปรบเปลยนระดบความดงของเสยงเพลง, คาสงเปลยนแปลงโฟลเดอรทตองการจะเลนไฟลเสยงเพลง เปนตน ไฟลเสยงเพลงจะจดเกบอยใน micro SD Card และรองรบขนาดความจของ micro SD Card ไดสงสดถง 32GByte สามารถนาไปประยกตในการใชงานตางๆ ไดงาย เชน เสยงเรยกลาดบคว , เสยงตอบรบอตโนมต, เสยงบอกสถาน เปนตน
Venus Supply Co., Ltd. Page 3
ความสามารถของบอรด MP3 Embedded Module
- รองรบการเลนไฟลนามสกล .MP3 แบบ Stereo - สามารถควบคมผานไมโครคอนโทรลเลอรได 2 รปแบบ Serial และ Parallel - รองรบระบบไฟล FAT32 และ FAT16 - รองรบ micro SD Card SDHC(สงสด 32 GB). - รองรบ Sample rates of 8 kHz ~ 48 kHz. - ใชไฟเลยงบอรด 5 VDC - Connector ขนาด 2.54 mm 20 ขา - บอรดมขนาด 35 x 51 mm.
Electrical Parameters
Parameter Min. Typ. Max. Unit.
Operating voltage 4 5 9 V Operating current - - 150 mA Input voltage 3.1 - 5.3 V Output voltage 3.1 - - V Audio Distortion rate - 0.005 0.05 % Audio Dynamic range - 90 - dB Audio Max output level 0.6 0.75 - Vrms
35 mm
51 mm
3.5 mm
3.5 mm
Venus Supply Co., Ltd. Page 4
คณสมบตของบอรด MP3 Embedded Module (ETEE043)
หมายเลข 1 LED แสดงเมอมไฟ +5V เขา หมายเลข 2 IC Decode MP3 เบอร BU94502AKS2 หมายเลข 3 จดบดกร Mode Setting (Serial / Parallel) หมายเลข 4 LED แสดงสถานะขา BUSY หมายเลข 5 พอรต Debug MCU หมายเลข 6 MCU เบอร STM8S103 หมายเลข 7 Socket Mini SD Card หมายเลข 8 ขาสญญาณควบคมโมดล ประกอบดวย 20 ขาคอ
ขาท ชอ หนาท 1 +5V ไฟ +5 V 2 GND กราวน 3 HPL สญญาณเสยงดานซาย 4 HPR สญญาณเสยงดานขวา 5 TXD ขา TX พอรต Serial 6 RXD ขา RX พอรต Serial 7 PL ขา Trigger Active Low 8 BUSY แสดงสถานะของโมดล Active Low 9 RESERVE ไมใช 10 RESERVE ไมใช
11 VOL+ ขาเพมระดบเสยง 12 VOL- ขาลดระดบเสยง
13-20 P0 – P7 ขา Data Input
1.
5. 8.
7.
2.
3.
4. 6.
Pin1
7.
Venus Supply Co., Ltd. Page 5
การเชอมตอกบบอรด MP3 Embedded Module
1. เตรยมไฟลบน SD Card การตงชอและการนาไฟลเสยงมาใสใน micro SD Card จะตองตงชอไฟลเปนลาดบตวเลข โดยไฟลเพลงลาดบท 1 ใหตงชอ 001.mp3 โดยเรยงไปเรอยจนถง 199.mp3 โดยสามารถใสไฟลเพลงในแตละโฟลเดอรไดสงสดถง 199 ไฟลและสามารถมโฟลเดอรไดสงสด 15 โฟลเดอรโดยใหนบ Root Directory เปนโฟลเดอรท 1 สวนโฟลเดอรตอไปจะเรมตงแต 02 ไปจนถง 15 ดงรปดานลาง ลาดบการเรยงของไฟลและโฟลเดอร โดยจะเรยงลาดบตามตวอกษร - ตวอยางการเรยงลาดบไฟลเพลง จากรปดานบนจะมไฟลเพลงทงหมด 4 ไฟลโดยจะเรยงลาดบจากซายไปขวา หากตองการจะสงเลนไฟลเพลงทชอ 017.mp3 จะตองสง command 0x03 หรอลาดบท 3 ไปสง MP3 Module ถงจะเลนไฟลเพลงไดอยางถกตอง
Note!! BUSY Pin: ในสภาวะ Low จะเกดขนได 2 กรณคอ Power on initial หรอก าลงเลนไฟลเพลงในขณะนน แต
หากในสภาวะปกต หรอไมไดมการเลนไฟลเสยง สภาวะจะเปน High ตลอด
PL Pin: เปนขาส าหรบ Trig (Active Low) เพอบอกให MP3 module น าสญญาณจาก P0-P7 ไปประมวลผล
Venus Supply Co., Ltd. Page 6
- ตวอยางการเรยงลาดบโฟลเดอร จากรปดานบนจะมโฟลเดอรทงหมด 5 โฟลเดอร (รวม Root Directory) หากตองการเขาไปเลนไฟลเพลงในโฟลเดอรทช อ 11 จะตองสง command 0xF4(Change to folder 4) ขอแนะน า ควรจะตงชอ folder หรอ file ใหเรยงลาดบ เพอสามารถเลนไฟลตามลาดบไดอยางถกตอง
2. เซตโหมดท างานบนโมดล (Serial / Parallel) 2.1 การใชงานโหมด Parallel ตองบดกรจด M0, M1 ใหตอกบกราวน ดงภาพ
*** เบองตนตวบอรดไดรบการตงคาใหอยในโหมด Parallel ***
2.2 การใชงานโหมด Serial ตองบดกรจด M0 ใหลอยขาไว สวน M1 ใหตอลงกราวน ดงภาพ
Venus Supply Co., Ltd. Page 7
3. การใชงานโหมด Parallel ตวอยางการใชงานจะตอรวมกบบอรด Arduino UNO R3 (EADN014) โดยใชขาสญญาณควบคมทงหมด 10 เสน คอ ขา Data 8 bits, ขา PL และขา BUSY ซงอาจจะตอสวตซทขา –VOL, +VOL เพอใหผใชงานสามารถควบคมระดบเสยงโดยตรง ดงภาพ
จากภาพจะเหนไดวา มบอรด Arduino UNO R3 (EADN014) ตอกบโมดล MP3 ดงน
Arduino / Other บอรด MP3 +5V +5V GND GND D2-D9 P0–P7 A4 BUSY A5 PL Switch 1 VOL+ Switch 2 VOL- Audio Jack L HP_L Audio Jack R HP_R
Data In 8 Bits
BUSY
PL
+5V
GND
Switch -Vol
Switch +Vol
HP_L
HP_R
Venus Supply Co., Ltd. Page 8
3.1 การเขยนโปรแกรมทดสอบ (Parallel Mode) จากวงจรจะเหนไดวา ขาสญญาณทใชควบคม ม P0-P7, PL และ BUSY โดยหลกการควบคมคอ ถาตรวจสอบวาขา BUSY เปนโลจก “High” คอโมดลพรอมทางาน โปรแกรมจะสงคาสงไปทขา P0-P7 จากนนสง PL ใหเปนโลจก “Low” โดยคาสงทสามารถรนบน Parallel Mode มดงน
Command Word Function BIN HEX DEC
P7 P6 P5 P4 P3 P2 P1 P0 0 0 0 0 0 0 0 1 0x01 001 เลนเพลงลาดบท 1 0 0 0 0 0 0 1 0 0x02 002 เลนเพลงลาดบท 2 … …. … … … …. …. … … ….. …. 1 1 0 0 0 1 1 1 0xC7 199 เลนเพลงลาดบท 199 1 1 0 0 1 0 0 0 0xC8 200 ความดงเสยงระดบ 0 (ตาสด) 1 1 0 0 1 0 0 1 0xC9 201 ความดงเสยงระดบ 1 … …. … … … …. …. … … ….. …. 1 1 1 0 0 1 1 1 0xE7 231 ความดงเสยงระดบ 31 (สงสด) 1 1 1 0 1 0 0 0 0xE8 232 เพมความดงเสยง 1 ระดบ 1 1 1 0 1 0 0 1 0xE9 233 ลดความดงเสยง 1 ระดบ 1 1 1 0 1 0 1 1 0xEB 235 หยดการเลนไฟลชวขณะ (Pause) 1 1 1 0 1 1 0 0 0xEC 236 กลบไปเลนไฟลทเลอกไว (Resume) 1 1 1 0 1 1 1 1 0xEF 239 หยดเลนไฟล (Stop) 1 1 1 1 0 0 0 1 0xF1 241 เปลยนโฟลเดอรท 01 (Root directory) 1 1 1 1 0 0 1 0 0xF2 242 เปลยนโฟลเดอรท 02 … …. … … … …. …. … … ….. …. 1 1 1 1 1 1 1 1 0xFF 255 เปลยนโฟลเดอรท 15
Venus Supply Co., Ltd. Page 9
โคดตวอยางท 1 ตอกบโมดล MP3 โหมด Parallel เลนไฟล 001.mp3
const int P0 = 2;
const int P1 = 3;
const int P2 = 4;
const int P3 = 5;
const int P4 = 6;
const int P5 = 7;
const int P6 = 8;
const int P7 = 9;
const int BUSY = A4;
const int PL = A5;
void set_port() {
pinMode(P0, OUTPUT);
pinMode(P1, OUTPUT);
pinMode(P2, OUTPUT);
pinMode(P3, OUTPUT);
pinMode(P4, OUTPUT);
pinMode(P5, OUTPUT);
pinMode(P6, OUTPUT);
pinMode(P7, OUTPUT);
pinMode(PL, OUTPUT);
pinMode(BUSY,INPUT);
}
boolean cmd_stop =false;
void setup() {
set_port();
}
void loop() {
if (BUSY == HIGH) {
digitalWrite(P0,HIGH);
digitalWrite(P1,LOW);
digitalWrite(P2,LOW);
digitalWrite(P3,LOW);
digitalWrite(P4,LOW);
digitalWrite(P5,LOW);
digitalWrite(P6,LOW);
digitalWrite(P7,LOW);
delay(100);
digitalWrite(PL, LOW);
delay(100);
digitalWrite(PL, HIGH);
cmd_stop = true; }
}
1. ประกาศชอขาทใชงาน
2. ประกาศ ฟงกช น set_port ()
3. ใชฟงกช น set_port() กาหนดขา input/output
4. ในชวง void loop ถาตรวจสอบไดวา ขา BUSY และกาหนดขาทง 8 bits และ Edge Rising ทขา PL
Venus Supply Co., Ltd. Page 10
จากโคดสามารถอธบายไดดงน
ประกาศฟงกชน set_port () ใชกาหนดใหขาทกาหนดชอไวเปน Input หรอ Output
ในฟงกชน setup() ใชฟงกชน set_port() ทประกาศไวจากโคดสวนบน
ถาตรวจสอบถาโลจกขา BUSY (A4) เปน “High” คอบอรดพรอมรบคาสงและตวแปร cmd_stop เปน
False จากนนกาหนดใหขาสญญาณ Data ทง 8 bits เปน 00000001 หรอ 0x01 คอคาสงใหโมดลเลนไฟล
ลาดบท 1 จากนนใหขา PL เกด Edge Rising คอเปลยนจากโลจก “Low” เปน “High” และกาหนดตวแปร
cmd_stop เปน True ทาใหโปรแกรมจะสงคาสง 0x01 ครงเดยว
void set_port() {
pinMode(P0, OUTPUT);
pinMode(P1, OUTPUT);
pinMode(P2, OUTPUT);
pinMode(P3, OUTPUT);
pinMode(P4, OUTPUT);
pinMode(P5, OUTPUT);
pinMode(P6, OUTPUT);
pinMode(P7, OUTPUT);
pinMode(PL, OUTPUT);
pinMode(BUSY,INPUT);
}
void setup() {
set_port();
}
void loop() {
if (BUSY == HIGH && cmd_stop == false)
digitalWrite(P0,HIGH);
digitalWrite(P1,LOW);
digitalWrite(P2,LOW);
digitalWrite(P3,LOW);
digitalWrite(P4,LOW);
digitalWrite(P5,LOW);
digitalWrite(P6,LOW);
digitalWrite(P7,LOW);
delay(100);
digitalWrite(PL, LOW);
delay(100);
digitalWrite(PL, HIGH);
cmd_stop = true;
}
}
Venus Supply Co., Ltd. Page 11
โคดตวอยางท 2 ตอกบโมดล MP3 โหมด Parallel ตองการเลนไฟล 002.mp3 โฟลเดอรท 03
const int P0 = 2;
const int P1 = 3
const int P2 = 4;
const int P3 = 5;
const int P4 = 6;
const int P5 = 7;
const int P6 = 8;
const int P7 = 9;
const int BUSY = A4;
const int PL = A5;
void set_port() {
pinMode(P0, OUTPUT);
pinMode(P1, OUTPUT);
pinMode(P2, OUTPUT);
pinMode(P3, OUTPUT);
pinMode(P4, OUTPUT);
pinMode(P5, OUTPUT);
pinMode(P6, OUTPUT);
pinMode(P7, OUTPUT);
pinMode(PL, OUTPUT);
pinMode(BUSY,INPUT);
}
void send_CMD(unsigned char cmd) {
if( cmd&0x01 ) digitalWrite(P0, HIGH); //Bit 0
else digitalWrite(P0, LOW);
if( cmd&0x02 ) digitalWrite(P1, HIGH); //Bit 1
else digitalWrite(P1, LOW);
if( cmd&0x04 ) digitalWrite(P2, HIGH); //Bit 2
else digitalWrite(P2, LOW);
if( cmd&0x08 ) digitalWrite(P3, HIGH); //Bit 3
else digitalWrite(P3, LOW);
if( cmd&0x10 ) digitalWrite(P4, HIGH); //Bit 4
else digitalWrite(P4, LOW);
if( cmd&0x20 ) digitalWrite(P5, HIGH); //Bit 5
else digitalWrite(P5, LOW);
if( cmd&0x40 ) digitalWrite(P6, HIGH); //Bit 6
else digitalWrite(P6, LOW);
if( cmd&0x80 ) digitalWrite(P7, HIGH); //Bit 7
else digitalWrite(P7, LOW);
delay(100); digitalWrite(PL, LOW);
delay(100); digitalWrite(PL, HIGH);
}
boolean cmd_stop =false ;
void setup() {
set_port();
}
void loop() {
if ((BUSY == HIGH) && (cmd_stop == false)) {
send_CMD(0xF3);
delay(200);
while(BUSY == HIGH) {
send_CMD(0x02);
cmd_stop=true;
}
}
}
3. ประกาศฟงกช น send_CMD(unsigned char cmd)
5. ในชวง void loop ถาตรวจสอบไดวา ขา BUSY และตวแปร
cmd_stop เปน False จากนนสงคาสง 0xF3 และ 0x02
1. ประกาศชอขาทใชงาน
2. ประกาศ ฟงกช น set_port ()
4. ในชวง void setup ใชฟงกช น set_port()
Venus Supply Co., Ltd. Page 12
จากโคดสามารถอธบายไดดงน
ประกาศฟงกชน send_CMD(unsigned char cmd) เปนฟงชนสงคาสงไปทโมดล โดยรบพารามเตอรชนด char
ชอ cmd และนาตวแปร cmd ไปตรวจสอบขอมลทละบต ถาบตนนเปน 1 ใหเซตขานนเปนโลจก “High” แตถา
เปน 0 เซตขานนเปนโลจก “Low” จนครบ 8 บตจากนนสงใหขา PL เปลยนโลจกจาก “Low” ไปเปน “High”
ถาตรวจสอบถาโลจกขา BUSY เปน “High” และตวแปร cmd_stop เปน false จากนนสงคาสง 0xF3 คอ
เปลยนโฟลเดอร 03 จากนนรอจนกวาโมดลจะพรอมทางาน จากการตรวจสอบทขา BUSY ถาเปน “High” ให
สงคาสง 0x02 คอใหโมดลเลนไฟลเพลงลาดบท 2 ในโฟลเดอร 03
void send_CMD(unsigned char cmd) {
if( cmd&0x01 ) digitalWrite(P0, HIGH); //Bit 0
else digitalWrite(P0, LOW);
if( cmd&0x02 ) digitalWrite(P1, HIGH); //Bit 1
else digitalWrite(P1, LOW);
if( cmd&0x04 ) digitalWrite(P2, HIGH); //Bit 2
else digitalWrite(P2, LOW);
if( cmd&0x08 ) digitalWrite(P3, HIGH); //Bit 3
else digitalWrite(P3, LOW);
if( cmd&0x10 ) digitalWrite(P4, HIGH); //Bit 4
else digitalWrite(P4, LOW);
if( cmd&0x20 ) digitalWrite(P5, HIGH); //Bit 5
else digitalWrite(P5, LOW);
if( cmd&0x40 ) digitalWrite(P6, HIGH); //Bit 6
else digitalWrite(P6, LOW);
if( cmd&0x80 ) digitalWrite(P7, HIGH); //Bit 7
else digitalWrite(P7, LOW);
delay(100); digitalWrite(PL, LOW);
delay(100); digitalWrite(PL, HIGH);
}
void loop() { if ((BUSY == HIGH) && (cmd_stop == false)) { send_CMD(0xF3); delay(200); while(BUSY == HIGH) { send_CMD(0x02); cmd_stop=true; } } }
Venus Supply Co., Ltd. Page 13
4. การใชงานโหมด Serial
ตวอยางการใชงานจะตอรวมกบบอรด Arduino UNO R3 (EADN014) โดยจะใชสญญาณควบคม
โมดล 3 ขาคอ พอรต Serial (TX, RX) และขา BUSY
จากภาพจะเหนไดวา มบอรด Arduino UNO R3 (EADN014) ตอกบโมดล MP3 ดงน
Arduino / Other บอรด MP3 +5V +5V GND GND D4 TX D3 RX D5 BUSY Switch 1 VOL+ Switch 2 VOL- Audio Jack L HP_L Audio Jack R HP_R
TX(D4)>>RX RX(D3)<<TX
(D5) BUSY
PH_L
PH_R
GND +5V
Venus Supply Co., Ltd. Page 14
4.1 การเขยนโปรแกรมทดสอบ (Serial Mode)
ในการทดลองนจะใช Software Serial โดยกาหนดใหขา RX อยทขา D3 ขา TX อยทขา D4
โดยก าหนด Baudrate เปน 9600, Data Bit : 8, Stop Bit :1, Parity : None
คาสงทสามารถรนบน Serial mode จะเหมอนกบ Parallel mode มดงน
Command word Function HEX DEC
0x01 001 เลนเพลงลาดบท 1 0x02 002 เลนเพลงลาดบท 2 … ….. …. 0xC7 199 เลนเพลงลาดบท 199 0xC8 200 ความดงเสยงระดบ 0 (ตาสด) 0xC9 201 ความดงเสยงระดบ 1 … ….. …. 0xE7 231 ความดงเสยงระดบ 31 (สงสด) 0xE8 232 เพมความดงเสยง 1 ระดบ 0xE9 233 ลดความดงเสยง 1 ระดบ 0xEB 235 หยดการเลนไฟลชวขณะ (Pause) 0xEC 236 กลบไปเลนไฟลทเลอกไว (Resume) 0xEF 239 หยดเลนไฟล (Stop) 0xF1 241 เปลยนโฟลเดอรท 01 (Root directory) 0xF2 242 เปลยนโฟลเดอรท 02 … ….. …. 0xFF 255 เปลยนโฟลเดอรท 15
Venus Supply Co., Ltd. Page 15
โคดตวอยางท 1 ตอกบโมดล MP3 โหมด Serial ถาตองการเลนไฟล 001.mp3
จากโคดจะเหนไดวา
1. ประกาศใชฟงกชน Software Serial ใหชอ mySerial โดยกาหนดให ขา D3 เปน RX และขา D4 เปน TX
2. ในฟงกชน void setup เซตขา D5 เปน input กาหนด Baud rate ของ software เปน 9600 bps
3. ในฟงกชน void loop ถาขาสญญาณ D5 เปน “High” และตวแปร cmd_stop เปน False โปรแกรมจะสง
คาสง 0x01 ผานพอรต software serial ทไดประกาศไวจากดานบนแลว และเซตตวแปร cmd_stop เปน True
ทาใหโปรแกรมสงคาสงเพยงรอบเดยว
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4); // RX, TX
const int BUSY = 5;
boolean cmd_stop =false;
void setup() {
pinMode(BUSY, INPUT);
mySerial.begin(9600);
}
void loop() {
if (BUSY == HIGH && cmd_stop == false) {
Serial.write(0x01);
cmd_stop=true;
}
}
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4); // RX, TX
void setup() {
pinMode(BUSY, INPUT);
mySerial.begin(9600);
}
void loop() {
if (BUSY == HIGH && cmd_stop == false) {
mySerial.write(0x01);
cmd_stop=true;
}
}
Venus Supply Co., Ltd. Page 16
โคดตวอยางท 2 ตอกบโมดล MP3 โหมด Serial ตองการเลนไฟล 002.mp3 โฟลเดอรท 03
จากโคดจะเหนไดวา
ในฟงกชน void loop ถาขาสญญาณ D5 เปน “High” และตวแปร cmd_stop เปน False โปรแกรม
จะสงคาสง 0xF3 ผานพอรต software serial คอคาสงเปลยนโฟลเดอร 03 จากนนรอจนกวาโมดลจะพรอม
ทางาน จากการตรวจสอบทขา BUSY ถาเปน “High” ใหสงคาสง 0x02 คอใหโมดลเลนไฟลเพลงลาดบท 2 ใน
โฟลเดอร 03
void loop() {
if (BUSY == HIGH && cmd_stop == false) {
mySerial.write(0xF3);
delay(200);
while(BUSY == HIGH) {
mySerial.write (0x02);
cmd_stop=true;
}
}
}
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4); // RX, TX
const int BUSY = 5;
boolean cmd_stop =false ;
void setup() {
pinMode(BUSY, INPUT);
mySerial.begin(9600);
}
void loop() {
if (BUSY == HIGH && cmd_stop == false) {
mySerial.write(0xF3);
delay(200);
while(BUSY == HIGH) {
mySerial.write (0x02);
cmd_stop=true;
}
}
}