ESP8266 - MP3 플레이어 | ESP8266 - MP3 Player

이 튜토리얼은 ESP8266, MP3 플레이어 모듈, 마이크로 SD 카드 및 스피커를 사용하여 MP3 플레이어를 만드는 방법을 안내합니다. MP3 파일(음악 또는 녹음된 오디오)은 마이크로 SD 카드에 저장됩니다. 그런 다음, ESP8266은 MP3 플레이어 모듈을 제어하여 선택한 곡을 SD 카드에서 읽고, 오디오 신호로 변환하여 스피커로 신호를 보낼 수 있습니다. 자세히 살펴보면, 우리가 배울 내용은 다음과 같습니다:

그런 다음, 가변 저항기나 로터리 엔코더를 추가하여 볼륨을 조정할 수 있도록 코드를 수정할 수 있습니다.

준비물

1×ESP8266 NodeMCU Amazon
1×Micro USB Cable Amazon
1×Serial MP3 Player Module Amazon
1×Micro SD Card Amazon
1×3.5mm Aux Speaker Amazon
1×Jumper Wires Amazon
1×(Optional) ESP8266 Screw Terminal Adapter Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

시리얼 MP3 플레이어 모듈 및 스피커에 대하여

시리얼 MP3 플레이어 모듈 핀 배치

시리얼 MP3 플레이어 모듈에는 세 가지 인터페이스가 있습니다:

ESP8266에 대한 인터페이스에는 4개의 핀이 포함됩니다:

  • RX 핀: 데이터 핀으로, ESP8266의 TX 핀(하드웨어 또는 소프트웨어 시리얼)에 연결해야 합니다.
  • TX 핀: 데이터 핀으로, ESP8266의 RX 핀(하드웨어 또는 소프트웨어 시리얼)에 연결해야 합니다.
  • VCC 핀: 전원 핀으로, VCC(5V)에 연결해야 합니다.
  • GND 핀: 전원 핀으로, GND(0V)에 연결해야 합니다.

스피커에 대한 인터페이스는 3.5mm Aux 출력 여성 잭입니다.

마이크로 SD 카드에 대한 인터페이스는 모듈 뒷면에 있는 마이크로 SD 카드 소켓입니다.

Serial MP3 Player Module Pinout
image source: diyables.io

스피커 핀아웃

스피커는 보통 두 가지 인터페이스를 가지고 있습니다:

  • 오디오 신호 인터페이스: MP3 플레이어 모듈에 연결되는 3.5mm Aux 남성 커넥터입니다.
  • 전원 인터페이스: USB, 5V 전원 어댑터 또는 그 외의 다른 전원 인터페이스일 수 있습니다.

작동 원리

준비해야 할 것:

  • 우리가 재생하고 싶은 노래 목록이나 녹음된 오디오를 미리 마이크로 SD 카드에 저장하세요.
  • 마이크로 SD 카드를 MP3 플레이어 모듈에 삽입하세요.
  • MP3 플레이어 모듈을 ESP8266에 연결하세요.
  • 스피커를 MP3 플레이어 모듈에 연결하세요.
  • 스피커를 전원 공급원에 연결하세요.

마이크로 SD 카드에 저장된 각 MP3 파일은 인덱스를 가질 것입니다. 인덱스는 저장된 노래의 순서이며, 0부터 시작합니다.

그러면 ESP8266을 프로그래밍하여 MP3 플레이어 모듈에 명령을 보낼 수 있습니다. 다음 명령을 지원합니다:

  • Play - 재생
  • Pause - 일시 정지
  • Play Next - 다음 재생
  • Play Previous - 이전 재생
  • Change volume - 볼륨 조절

MP3 플레이어 모듈이 작동할 때, 마이크로 SD 카드에서 MP3 파일을 읽어서 MP3 파일을 오디오 신호로 변환하고 3.5mm Aux 인터페이스를 통해 스피커로 오디오 신호를 출력합니다.

선연결

ESP8266 NodeMCU MP3 player module Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP8266의 핀 배치ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.

ESP8266 코드 - 음악 재생

아래 코드는 Micro SD 카드에 저장된 첫 번째 노래를 재생합니다.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-mp3-player */ #include <SoftwareSerial.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define ESP8266_RX D5 // ESP8266 핀이 Serial MP3 Player 모듈의 TX에 연결됨 #define ESP8266_TX D6 // ESP8266 핀이 Serial MP3 Player 모듈의 RX에 연결됨 SoftwareSerial mp3(ESP8266_RX, ESP8266_TX); void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // 칩 초기화가 완료될 때까지 기다림 mp3_command(CMD_SEL_DEV, DEV_TF); // TF 카드 선택 delay(200); // 200ms 동안 기다림 mp3_command(CMD_PLAY, 0x0000); // mp3 재생 //mp3_command(CMD_PAUSE, 0x0000); // mp3 일시정지 //mp3_command(CMD_PLAY_NEXT, 0x0000); // 다음 mp3 재생 //mp3_command(CMD_PLAY_PREV, 0x0000); // 이전 mp3 재생 //mp3_command(CMD_SET_VOLUME, 30); // 볼륨을 30으로 변경 } void loop() { } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // 시작 바이트 frame[1] = 0xff; // 버전 frame[2] = 0x06; // 시작 바이트 및 종료 바이트를 제외한 명령의 바이트 수 frame[3] = command; // frame[4] = 0x00; // 0x00 = 피드백 없음, 0x01 = 피드백 있음 frame[5] = (int8_t)(dat >> 8); // 데이터 높은 바이트 frame[6] = (int8_t)(dat); // 데이터 낮은 바이트 frame[7] = 0xef; // 종료 바이트 for (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); } }

사용 방법

Arduino IDE에서 ESP8266를 시작하려면 다음 단계를 따르세요:

  • ESP8266을 처음 사용하는 경우, Arduino IDE에서 ESP8266 환경 설정하는 방법 튜토리얼을 확인하세요.
  • 다이어그램에 표시된 대로 구성 요소를 연결하세요.
  • USB 케이블을 사용하여 컴퓨터에 ESP8266 보드를 연결하세요.
  • 컴퓨터에서 Arduino IDE를 엽니다.
  • 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요.
  • 작동 원리에 나와 있는 지침을 따르세요
  • 위의 코드를 복사하고 Arduino IDE로 엽니다
  • Arduino IDE에서 Upload 버튼을 클릭하여 ESP8266에 코드를 업로드하세요
  • 음악을 즐기세요

ESP8266 코드 - 컨트롤 버튼으로 음악 재생

아래 코드는 이전 코드의 업그레이드 버전입니다. MP3 플레이어와 상호 작용할 수 있게 해주는 네 개의 버튼을 추가합니다.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-mp3-player */ #include <SoftwareSerial.h> #include <ezButton.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define ESP8266_RX D5 // ESP8266 핀은 Serial MP3 플레이어 모듈의 TX에 연결됩니다. #define ESP8266_TX D6 // ESP8266 핀은 Serial MP3 플레이어 모듈의 RX에 연결됩니다. SoftwareSerial mp3(ESP8266_RX, ESP8266_TX); ezButton button_play(D1); // 핀 D1에 대한 ezButton 객체 생성 ezButton button_pause(D2); // 핀 D2에 대한 ezButton 객체 생성 ezButton button_next(D3); // 핀 D3에 대한 ezButton 객체 생성 ezButton button_prev(D4); // 핀 D4에 대한 ezButton 객체 생성 void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // 칩 초기화가 완료될 때까지 기다립니다. mp3_command(CMD_SEL_DEV, DEV_TF); // TF 카드 선택 delay(200); // 200ms 기다립니다 button_play.setDebounceTime(50); // 디바운스 시간을 50 밀리초로 설정 button_pause.setDebounceTime(50); // 디바운스 시간을 50 밀리초로 설정 button_next.setDebounceTime(50); // 디바운스 시간을 50 밀리초로 설정 button_prev.setDebounceTime(50); // 디바운스 시간을 50 밀리초로 설정 } void loop() { button_play.loop(); // MUST call the loop() function first button_pause.loop(); // MUST call the loop() function first button_next.loop(); // MUST call the loop() function first button_prev.loop(); // MUST call the loop() function first if (button_play.isPressed()) { Serial.println("Play mp3"); mp3_command(CMD_PLAY, 0x0000); } if (button_pause.isPressed()) { Serial.println("Pause mp3"); mp3_command(CMD_PAUSE, 0x0000); } if (button_next.isPressed()) { Serial.println("Play next mp3"); mp3_command(CMD_PLAY_NEXT, 0x0000); } if (button_prev.isPressed()) { Serial.println("Play previous mp3"); mp3_command(CMD_PLAY_PREV, 0x0000); } } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // 시작 바이트 frame[1] = 0xff; // 버전 frame[2] = 0x06; // 시작 바이트 및 종료 바이트를 제외한 명령의 바이트 수 frame[3] = command; // frame[4] = 0x00; // 0x00 = 피드백 없음, 0x01 = 피드백 있음 frame[5] = (int8_t)(dat >> 8); // 데이터 상위 바이트 frame[6] = (int8_t)(dat); // 데이터 하위 바이트 frame[7] = 0xef; // 종료 바이트 for (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); } }

위 코드에 대한 배선도:

ESP8266 NodeMCU MP3 player speaker Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

이제 프로젝트를 수정하여 더 많은 기능을 추가할 수 있습니다. 예를 들어:

  • 볼륨을 제어하기 위해 포텐쇼미터를 추가하십시오. ESP8266 포텐쇼미터 튜토리얼을 참조해 주세요.
  • IR 리모콘을 추가하십시오. ESP8266 IR 리모트 컨트롤러 튜토리얼을 참조해 주세요.
  • RFID 리더와 카드를 추가하여 RFID MP3 플레이어를 만드십시오. ESP8266 RFID 튜토리얼을 참조해 주세요.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!