산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino MP3 플레이어 Catalex

구성품 및 소모품

Arduino UNO
× 1
catalex의 직렬 MP3 플레이어
× 1
멋진 펑크 음악
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

CATALEX의 SERIAL MP3 PLAYER V1.0 사용 방법:

<울>
  • 먼저 평소와 같이 라이브러리를 다운로드합니다.
  • #include   
    <울>
  • 이제 mp3 플레이어에 연결할 Arduino 핀을 선택하고 직렬 프로토콜을 초기화합니다.
  • #define ARDUINO_RX 5//직렬 MP3 플레이어 모듈의 TX에 연결해야 합니다. #define ARDUINO_TX 6//모듈의 RX에 연결 SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//직렬 프로토콜을 초기화하고 알려주십시오. 핀이 TX 및 RX인 myserial에  
    <울>
  • 여기서 #define으로 번역했습니다. 데이터시트의 내용:
  • <사전><코드>/////////////////////////////////////////////// //////////////////////////////////////// //데이터시트에 필요한 모든 명령( http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf[8] ={0};//MP3 플레이어는 8 int 문자열의 주문을 이해하지 못합니다. //0X7E FF 06 명령 00 00 00 EF; (if command =01 다음 곡 순서) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATA IS REQUIRED(곡 번호) #define VOLUME_UP_ONE 0X04 #define VOLUME_DOWN_ONE 0X05 // 0부터 30까지의 볼륨(0x1E)) #define SET_DAC 0X17 #define CMD_PLAY_WITHVOLUME 0X22 //데이터가 필요합니다 0x7E 06 22 00 xx yy EF;(xx 볼륨)(yy 노래 수) #define CMD_X09SELECT STOR 장치, 데이터가 필요합니다. #define DEV_TF 0X02 //HELLO,IM 데이터가 필요합니다 #define SLEEP_MODE_START 0X0A #define SLEEP_MODE_WAKEUP 0X0B #define CMD_RESET 0X0C//CHIP RESET //0 #define CMD_RES 0X0D 재생 일시 중지 #define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0F 00 01 02 EF;(\01\002xxxxxx.mp3 디렉토리로 노래 재생 #define STOP_PLAY 0X16 #define 0X170/x 필요한 데이터는 PLAY_170 00 01 XX EF;(01 폴더 재생)(값 xx는 신경쓰지 않음) #define SET_CYCLEPLAY 0X19//데이터가 필요합니다 00 시작; 01 닫기 #define SET_DAC 0X17//데이터가 필요함 00 DAC OUTPUT 시작;01 DAC 출력 없음 ////////////////////////////// ////////////////////////////////////////////////////// //// <울>
  • MP3 칩은 이 형식의 int 배열[8]로 이루어진 주문을 이해하지 못합니다.
  • 0x7E FF aa bb 00 xx yy EF  

    어디에:

    <울>
  • 첫 번째와 마지막 int는 0x7E 및 0xEF 값으로 고정됩니다.
  • 아아 버전 번호입니다. 0x06을 입력하세요.
  • bb 이전 항목에 나열된 실제 제어 명령입니다.
  • xx 데이터의 첫 번째 b int입니다.
  • yy 데이터의 두 번째 정수입니다.
  • 그리고 이것은 배열을 만드는 실제 함수입니다. #defined 중 하나를 선택하기만 하면 됩니다. 명령어를 입력하고 데이터 값을 입력합니다.

    <사전><코드>무효 sendCommand(int8_t 명령, int16_t 데이터) { 지연(20); Send_buf[0] =0x7e; //시작 바이트 Send_buf[1] =0xff; //버전 Send_buf[2] =0x06; //시작 바이트와 끝 바이트가 없는 명령의 바이트 수 Send_buf[3] =command; // Send_buf[4] =0x00;//0x00 =피드백 없음, 0x01 =피드백 Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //데이터 Send_buf[7] =0xef; // 종료 바이트 for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]); } }

    설정 기능에서 TF에 적합한 장치를 선택하고 정착할 시간을 주어야 합니다(비동기 프로세스 마술).

    void setup() { mySerial.begin(9600);//직렬 모니터용 직렬 통신을 시작합니다! delay(500);//칩 초기화가 완료되기를 기다립니다. sendCommand(CMD_SEL_DEV, DEV_TF);//TF 카드를 선택합니다. delay(200);//200ms 동안 기다립니다. }  

    루프에서 001이라고 표시된 노래를 간단히 재생했습니다.

    void loop() { sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01);//볼륨 15 클래스 지연(1000000)으로 첫 번째 노래 재생;//프로그램은 100초마다 재생 옵션을 catalex 칩으로 보냅니다. }  

    SD 카드에 노래를 업로드하는 방법:

    데이터 시트에서 정말 나쁜 영어로 말했듯이:

    Mp3 칩은 .mp3를 읽습니다. 또는 .wav 알파벳순으로 인덱싱되므로 이름이 01, 02인 폴더를 생성하면 이름이 001xxxxx.mp3인 노래 , 002xxxx.mp3 . 우리는 우리가 사용하고 있는 노래/폴더에 대해 확신할 수 있습니다.

    여기에 무료 사운드 라이브러리가 있습니다.

    해킹을 즐기세요!

    추가:
    동일한 코드이지만 하드웨어 직렬을 사용합니다(내 STM32 보드에 대해 수행해야 함)

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 기기 테스트
  • 기기 테스트Arduino
    Javier Muñoz가 2016년 10월 11일에 재정렬한 볼륨 30
    //code로 한 곡을 재생합니다. [email protected]#include로 문의하세요. Serial MP3 Player module#define ARDUINO_TX 6//모듈의 RX에 연결SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//직렬 프로토콜을 초기화하고 myserial에 핀이 TX와 RX임을 알려줍니다//////////// ////////////////////////////////////////////////////// ////////////////////////데이터시트에 필요한 모든 명령(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//MP3 플레이어는 8 int 문자열의 순서를 이해하지 않습니다. //0X7E FF 06 command 00 00 00 EF;(if command =01 다음 노래 순서) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATA IS REQUIRED(곡 수)#define VOLUME_UP_ONE 0X04#define VOLUME_DOWN_ONE 0X05#define CMD_SET_VOLUME 0X06//DATA IS REQUIRED(볼륨 수 0x1 E 30)#0define 센티미터 D_PLAY_WITHVOLUME 0X22 //데이터가 필요합니다 0x7E 06 22 00 xx yy EF;(xx 볼륨)(yy 노래 수)#define CMD_SEL_DEV 0X09 //SELECT STORAGE DEVICE, DATA IS REQUIRED #define DEV_TF DATA 0,RED 0,002 //HEL #define SLEEP_MODE_START 0X0A#define SLEEP_MODE_WAKEUP 0X0B#define CMD_RESET 0X0C//CHIP RESET#define CMD_PLAY 0X0D //RESUME PLAYBACK#define CMD_PAUSE 0X0E//PLAYBACK IS PAUSED_WITHFF/PLAY;(\01\002xxxxxx.mp3#define STOP_PLAY 0X16#define PLAY_FOLDER 0X17// 데이터가 필요한 디렉토리로 노래를 재생합니다. 0x7E 06 17 00 01 XX EF;(01 폴더 재생)(값 xx는 상관 없음)#define SET_CYCLEPLAY 0X19//데이터가 필요합니다 00 시작; 01 닫기#define SET_DAC 0X17//데이터가 필요함 00 DAC OUTPUT 시작;01 DAC 출력 없음///////////////////////////// ////////////////////////////////////////////////////// ////void setup(){ Serial.begin(9600);//pcmySerial.begin(9600)에서 직렬 모니터용 직렬 통신 시작;//MP3delay(500)용 직렬 통신 시작;//Wait 칩 초기화가 완료되었습니다. sendCommand(CMD_SEL_DEV, DEV_TF);//TF 카드 지연 선택(200);//200ms 대기} 무효 루프(){sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01);//15권 classdelay로 첫 번째 노래 재생 (1000000);//프로그램은 100초마다 재생 옵션을 카탈렉스 칩으로 보냅니다.}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;//0x00 =피드백 없음, 0x01 =피드백 Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //데이터 Send_buf[7] =0xef; // 종료 바이트 for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]);//시리얼 mp3로 비트 전송 Serial.print(Send_buf[i],HEX);/ /PC의 시리얼 모니터로 비트 전송 } Serial.println();}

    회로도

    데이터 시트에서 전원 공급 장치가 3,2에서 5v까지 다양하다는 것을 알 수 있습니다.
    200mA의 소비로

    제조공정

    1. 피아노 연주자
    2. MP3 플레이어에 이 유지 관리 노래를 붙이십시오
    3. Arduino UNO를 사용한 오징어 게임 인형 빌드
    4. Arduino 스파이봇
    5. FlickMote
    6. 수제 TV B-Gone
    7. 마스터 시계
    8. 나를 찾기
    9. Arduino Power
    10. Arduino에서 오디오 재생