본문 바로가기
아두이노 사운드

[사운드/MP3 재생] MP3를 재생하는 MP3 shield를 만나보자

by 작동미학 2015. 4. 2.
반응형

MP3 쉴드를 사용해 음악을 재생해보자

 

▶ 이 가이드를 따라하면

- MP3파일 재생을 아두이노에서 할 수 있다.

 

▶ 부품 설명 및 회로 구성

Elechouse브랜드로 몇가지 플레이어 모듈이 있는데, 2년전쯤 출시된 이 모듈은 USB/SD 메모리로부터 mp3재생이 가능하다. 작은 용량의 플래쉬 메모리도 내장하고 있어, 아두이노로 효과음을 재생하거나 할 때 유용하게 사용할 수 있다.

이 모듈은 독립되어 운영되며 시리얼로 아두이노로부터 명령을 받아 내장하는 메모리의 파일을 가지고 오디오에서 제공하는 다양한 기능을 활용할 수 있도록 만들어져 있다.

<Elechouse의 mp3 shield. USB메모리/SD메모리 슬롯, 사운드 단자를 보유하고 있다>

<자체 보드에 다양한 기능을 수행할 수 있는 버튼이 존재한다>

기본적인 매뉴얼은 http://www.elechouse.com/elechouse/images/product/Arduino%20MP3%20Shield/Arduino%20MP3%20Shield%20User%20Guide.pdf 에서 찾을 수 있으나 여기서는 간단히 SD메모리를 이용해 재생하는 예제를 보도록 하자. (참조로 기본 내장 메모리의 경우 특정한 작동을 수행하면 외부 메모리의 파일을 복사하는 진행이 가능하다. 필자도 시도해보았으나, 쉽지도 않고, 성공한 후에는 10초 있다가 파일이 재생되는 기이한 버그가 생기는 바람에 별로 추천하지 않는다.)

먼저 SD메모리는 FAT16/32를 지원해야 하며, MP3파일 몇 개를 준비해두는데, 루트 폴더(디렉토리를 만들지 말기 바란다)만 인식한다. 재생순서는 먼저 복사된 순서다. MP3는 16K~320Kbps, 8K~44.1Khz의 샘플링 레이트를 지원하는데, 이 정도면 대부분의 MP3라 할 수 있다.

▶ 소스 코드 입력 및 구동

일단 MP3 shield를 아두이노에 연결하자. 그러면 연결하고 잠시 후 기본 mp3를 들을 수 있다. 아래를 보면 알겠지만, 시리얼 통신을 binary 데이터를 보내서 특정 명령을 수행한다. 아래는 Elechouse제공 소스를 최대한 단순하게 바꾼 것이다. Elechouse에 가보면 좀더 다양한 제어를 제공하는 소스를 받을 수 있다.

아래 소스는 작동 하자마자 볼륨을 정하고, SD메모리를 선택하여, 무한반복하는 예시이다.

소스 :

//..............................................................................................

//Written by : Mohannad Rawashdeh

// this code For MP3 Shield Elechosue

// Software serial interface

// For product : http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=168_170&products_id=2193

//http://www.instructables.com/member/Mohannad+Rawashdeh/

#include <SoftwareSerial.h>

SoftwareSerial Geno(7,8); // Rx , Tx

unsigned char cmd_buf[10];

unsigned char i;

 

void ArduinoMP3Shield_SendCMD(unsigned char *cmd_buf, unsigned len)

{

unsigned i;

for(i=0; i<len; i++){

Geno.write(cmd_buf[i]);

}

}

 

void setup(void)

{

/** wait until arduino mp3 shield get ready */

delay(1000);

 

Geno.begin(9600);

 

/** set volume */

cmd_buf[0] = 0x7E; // START

cmd_buf[1] = 0x03; // Length

cmd_buf[2] = 0xA7; // Command

cmd_buf[3] = 0x0F; // new volume

cmd_buf[4] = 0x7E; // END

ArduinoMP3Shield_SendCMD(cmd_buf, 5);

 

/** select SD card first music and play */

cmd_buf[0] = 0x7E; // START

cmd_buf[1] = 0x04; // Length

cmd_buf[2] = 0xA0; // For U Disk change this line to 0xA2

cmd_buf[3] = 0x00; // file number high byte

cmd_buf[4] = 0x01; // file number low byte

cmd_buf[5] = 0x7E; // END

ArduinoMP3Shield_SendCMD(cmd_buf, 6);

 

/** set play mode repeat all */

cmd_buf[0] = 0x7E; // START

cmd_buf[1] = 0x03; // Length

cmd_buf[2] = 0xA9; // Command SET MODE

cmd_buf[3] = 0x02; // set mode

cmd_buf[4] = 0x7E; // END

ArduinoMP3Shield_SendCMD(cmd_buf, 5);

 

}

 

void loop(void)

{

}

 

이제 소리가 들리는가? 스티브 잡스가 아이폰 혁신을 위해 맨 먼저 MP3 플레이어인 아이팟을 만들기 시작한 풍미를 느끼기 바란다.

 

▶ 구매 가이드

elechouse : http://www.aliexpress.com/wholesale? SearchText=elehouse+mp3+shield ($15)

 

강의 키워드

아두이노 MP3 재생, MP3 쉴드, mp3 shield, elechouse mp3, elechouse mp3 shield, Arduino mp3 player

 

반응형