ค่มูือการใช้งาน - thaieasyelec · 2019-03-26 · 1.3 29...

17
คู ่มือการใช้งาน ThaiEasyElec MP3 Embedded Module Version 1.3

Upload: others

Post on 15-Jan-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

คู่มือการใช้งาน ThaiEasyElec MP3 Embedded Module

Version 1.3

Page 2: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

Venus Supply Co., Ltd. Page 1

ประวติัการเปล่ียนเวอรช์ัน่

เวอรช์ัน่ วนัท่ี การเปล่ียนแปลง 1.3 29 กนัยายน 2560 เปลีย่นรปู,แกไ้ขตวัอยา่ง code 1.2 4 มถุินายน 2557 แกไ้ขค าผดิ,แกไ้ข Link URL 1.1 16 พฤศจกิายน 2556 เปลีย่นรปู,การใชง้านกบั Arduino 1.0 3 ตุลาคม 2556 เวอรช์ัน่แรก

Page 3: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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 สามารถน าไปประยุกต์ในการใช้งานต่างๆ ได้ง่าย เช่น เสยีงเรยีกล าดบัควิ , เสยีงตอบรบัอตัโนมตัิ, เสยีงบอกสถานี เป็นตน้

Page 4: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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

3.5 mm

35 mm

51 mm

3.5 mm

Page 5: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

Venus Supply Co., Ltd. Page 4

คณุสมบติัของบอรด์ MP3 Embedded Module (ETEE043)

หมายเลข 1 LED แสดงเมือ่มไีฟ +5V เขา้ หมายเลข 2 IC Decode MP3 เบอร ์BU94502AKS2 หมายเลข 3 Jumper เลอืก Mode (Serial / Parallel) หมายเลข 4 LED แสดงสถานะขา BUSY หมายเลข 5 พอรต์ Debug MCU หมายเลข 6 MCU เบอร ์STM8S103 หมายเลข 7 Socket Mini SD Card หมายเลข 8 ขาสญัญาณควบคุมโมดลู ประกอบดว้ย 20 ขา คอื

ขาท่ี ช่ือ หน้าท่ี 1-8 P0 – P7 ขา Data Input 9 VOL- ขาลดระดบัเสยีง 10 VOL+ ขาเพิม่ระดบัเสยีง 11 RESERVE ไม่ใช ้12 RESERVE ไม่ใช ้13 BUSY แสดงสถานะของโมดลู Active Low 14 PL ขา Trigger Active Low 15 RXD ขา RX พอรต์ Serial 16 TXD ขา TX พอรต์ Serial 17 HPR สญัญาณเสยีงดา้นขวา

18 HPL สญัญาณเสยีงดา้นซา้ย 19 GND กราวน์ 20 +5V ไฟ +5 V

Page 6: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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 ไป

ประมวลผล

Page 7: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

Venus Supply Co., Ltd. Page 6

- ตวัอยา่งการเรยีงล าดบัโฟลเดอร ์ จากรปูดา้นบนจะมโีฟลเดอรท์ัง้หมด 5 โฟลเดอร ์(รวม Root Directory) หากตอ้งการเขา้ไปเล่นไฟล์เพลงในโฟลเดอรท์ีช่ ื่อ 11 จะตอ้งส่ง command 0xF4(Change to folder 4) ข้อแนะน า ควรจะตัง้ชื่อ folder หรอื file ใหเ้รยีงล าดบั เพื่อสามารถเล่นไฟลต์ามล าดบัไดอ้ยา่งถูกตอ้ง

2. เซตโหมดท างานบนโมดลู (Serial / Parallel) 2.1 การใชง้านโหมด Parallel ใช ้Jumper เชื่อมต่อ M0 ใหต่้อกบักราวน์ ดงัภาพ

*** เบือ้งตน้ตวับอรด์ไดร้บัการตัง้ค่าใหอ้ยูใ่นโหมด Parallel ***

2.2 การใชง้านโหมด Serial ถอด Jumper M0 ออก ดงัภาพ

Page 8: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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

Page 9: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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

Page 10: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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 ((digitalRead(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, HIGH);

delay(100);

digitalWrite(PL, LOW);

cmd_stop = true;

}

}

1. ประกาศชื่อขาทีใ่ชง้าน

2. ประกาศ ฟังกช์ัน่ set_port ()

3. ใชฟั้งกช์ัน่ set_port() ก าหนดขา input/output

4. ในช่วง void loop ถา้

ตรวจสอบไดว้่า

ขา BUSY และก าหนดขา

ทัง้ 8 bits และ

Edge Falling ทีข่า PL

Page 11: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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 Falling คอืเปลีย่นจากโลจกิ “High” เป็น “Low” และก าหนดตวัแปร

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 ((digitalRead(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, HIGH);

delay(100);

digitalWrite(PL, LOW);

cmd_stop = true;

}

}

Page 12: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

Venus Supply Co., Ltd. Page 11

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, HIGH);

delay(100); digitalWrite(PL, LOW);

}

boolean cmd_stop =false ;

void setup() {

set_port();

}

void loop() {

if ((digitalRead(BUSY) == HIGH) && (cmd_stop == false)) {

send_CMD(0xF3);

delay(200);

while(digitalRead(BUSY) == HIGH) {

send_CMD(0x02);

cmd_stop=true;

}

}

}

1. ประกาศชื่อขาทีใ่ชง้าน

2. ประกาศ ฟังกช์ัน่ set_port ()

3. ประกาศฟังกช์ัน่ send_CMD(unsigned char

cmd)

4. ในช่วง void setup ใชฟั้งกช์ัน่ set_port()

5. ในช่วง void loop ถา้ตรวจสอบไดว้่า

ขา BUSY และตวัแปร cmd_stop เป็น

False จากนัน้สง่ค าสัง่ 0xF3 และ 0x02

โค้ดตวัอย่างท่ี 2 ต่อกบัโมดลู MP3 โหมด Parallel ตอ้งการเล่นไฟล ์002.mp3 โฟลเดอรท์ี ่03

Page 13: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

Venus Supply Co., Ltd. Page 12

จากโค้ดสามารถอธิบายได้ดงันี ้

ประกาศฟังกช์ัน่ send_CMD(unsigned char cmd) เป็นฟังชัน่ส่งค าสัง่ไปทีโ่มดูล โดยรบัพารามเิตอรช์นิด

char ชื่อ cmd และน าตวัแปร cmd ไปตรวจสอบขอ้มลูทลีะบติ ถา้บตินัน้เป็น 1 ใหเ้ซตขานัน้เป็นโลจกิ “High”

แต่ถา้เป็น 0 เซตขานัน้เป็นโลจกิ “Low” จนครบ 8 บติจากนัน้สัง่ใหข้า PL เปลีย่นโลจกิจาก “High”

ไปเป็น “Low”

ถา้ตรวจสอบถา้โลจกิขา 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, HIGH);

delay(100); digitalWrite(PL, LOW);

}

void loop() {

if ((digitalRead(BUSY) == HIGH) && (cmd_stop == false)) {

send_CMD(0xF3);

delay(200);

while(digitalRead(BUSY) == HIGH){

send_CMD(0x02);

cmd_stop=true;

}

}

}

Page 14: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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

Page 15: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

Venus Supply Co., Ltd. Page 14

4.1 การเขียนโปรแกรมทดสอบ (Serial Mode)

ในการทดลองนี้จะใช ้Software Serial โดยก าหนดใหข้า RX อยูท่ีข่า D3 ขา TX อยูท่ีข่า D4

โดยก าหนด Baud rate เป็น 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

Page 16: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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 ((digitalRead(BUSY) == HIGH) && (cmd_stop == false)) {

mySerial.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 ((digitalRead(BUSY) == HIGH) && (cmd_stop == false)) {

mySerial.write(0x01);

cmd_stop=true;

}

}

Page 17: ค่มูือการใช้งาน - Thaieasyelec · 2019-03-26 · 1.3 29 กันยายน 2560 เปลี่ยนรูป,แก้ไขตัวอย่าง

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

#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 ((digitalRead(BUSY) == HIGH) && (cmd_stop == false)) {

mySerial.write(0xF3);

delay(200);

while(digitalRead(BUSY) == HIGH){

mySerial.write (0x02);

cmd_stop=true;

} }

}

void loop() {

if ((digitalRead(BUSY) == HIGH) && (cmd_stop == false)) {

mySerial.write(0xF3);

delay(200);

while(digitalRead(BUSY) == HIGH) {

mySerial.write (0x02); cmd_stop=true;

}

}

}