ESP32 마이크로파이썬 MP3 플레이어

이 가이드는 MicroPython, MP3 플레이어 모듈, Micro SD 카드, 그리고 스피커를 사용하여 ESP32 마이크로컨트롤러로 MP3 플레이어를 만드는 방법을 알려줍니다. MP3 플레이어는 Micro SD 카드에 저장된 노래나 오디오 파일을 재생합니다. ESP32는 MP3 플레이어 모듈을 제어하여 SD 카드에서 트랙을 선택하고 재생하며, 이를 음향으로 변환하여 스피커로 전송합니다. 자세히는, 다음 내용을 배웁니다:

그런 다음, 볼륨을 제어하기 위해 포텐셔미터나 로터리 인코더를 추가하도록 코드를 수정할 수 있습니다.

ESP32 마이크로파이썬 mp3 플레이어

준비물

1×ESP32 ESP-WROOM-32 개발 모듈 쿠팡 | 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×시리얼 MP3 플레이어 모듈 쿠팡 | 아마존
1×마이크로 SD 카드 아마존
1×3.5mm Aux 스피커 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

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

시리얼 MP3 플레이어 모듈 핀아웃

직렬 MP3 플레이어 모듈은 세 가지 주요 인터페이스를 가지고 있습니다:

  • ESP32 인터페이스:
    • RX 핀: 데이터를 수신하는 데 사용됩니다. 직렬 연결을 통해 이 핀을 ESP32의 TX 핀에 연결하세요.
    • TX 핀: 데이터를 전송하는 데 사용됩니다. 직렬 연결을 통해 이 핀을 ESP32의 RX 핀에 연결하세요.
    • VCC 핀: 전원을 공급합니다. ESP32의 3.3V 핀에 연결하세요.
    • GND 핀: 접지 핀입니다. 이 핀을 접지(0V) 소스에 연결하세요.
  • 스피커 인터페이스:
    • 3.5mm Aux 출력 암잭이 포함되어 있습니다.
  • 마이크로 SD 카드 인터페이스:
    • MP3 모듈 뒷면에 마이크로 SD 카드 슬롯이 위치해 있습니다.
    시리얼 mp3 플레이어 모듈 핀아웃
    image source: diyables.io

    스피커 핀아웃

    스피커는 보통 두 개의 연결 포인트가 있습니다:

    • 오디오 연결: MP3 플레이어에 연결할 수 있는 3.5mm 보조 남성 커넥터가 있습니다.
    • 전원 연결: USB, 5V 전원 어댑터 또는 기타 전원 공급 장치에 연결할 수 있습니다.

작동 방식

당신이 해야 할 일은 다음과 같습니다:

  1. Micro SD 카드에 노래 또는 녹음 목록을 저장합니다.
  2. Micro SD 카드를 MP3 플레이어 모듈에 삽입합니다.
  3. MP3 플레이어 모듈을 ESP32에 연결합니다.
  4. MP3 플레이어 모듈을 스피커에 연결합니다.
  5. 스피커를 전원에 연결합니다. 헤드폰이나 이어폰을 사용하는 경우 이 단계를 건너뛰어도 됩니다.

Micro SD 카드에 있는 각 MP3 파일에는 0부터 시작하는 번호가 매겨지며, 이 번호가 노래의 순서를 결정합니다. ESP32를 위한 MicroPython 스크립트를 작성하여 MP3 플레이어 모듈에 다양한 명령을 보낼 것입니다. 지원되는 명령은:

  • 재생 시작
  • 정지
  • 다음 곡 재생
  • 이전 곡 재생
  • 볼륨 조절

명령을 받으면, MP3 플레이어 모듈은 Micro SD 카드에 저장된 파일들을 재생하고, 이를 오디오 신호로 변환하여 3.5mm Aux 잭을 통해 스피커로 전송합니다.

선연결

ESP32 마이크로파이썬 mp3 플레이어 모듈 배선도

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

ESP32와 mp3 플레이어 연결 방법

ESP32 마이크로파이썬 코드 - 음악 재생

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

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-mp3-player */ from machine import UART, Pin import time # Define constants CMD_PLAY_NEXT = 0x01 CMD_PLAY_PREV = 0x02 CMD_PLAY_W_INDEX = 0x03 CMD_SET_VOLUME = 0x06 CMD_SEL_DEV = 0x09 CMD_PLAY_W_VOL = 0x22 CMD_PLAY = 0x0D CMD_PAUSE = 0x0E CMD_SINGLE_CYCLE = 0x19 DEV_TF = 0x02 SINGLE_CYCLE_ON = 0x00 SINGLE_CYCLE_OFF = 0x01 ESP32_RX = 16 # The ESP32 pin GPIO16 connected to the TX of the Serial MP3 Player module ESP32_TX = 17 # The ESP32 pin GPIO17 connected to the RX of the Serial MP3 Player module # Initialize UART with the correct pins and baud rate mp3 = UART(1, baudrate=9600, tx=Pin(ESP32_TX), rx=Pin(ESP32_RX)) def mp3_command(command, dat): frame = bytearray(8) frame[0] = 0x7e # starting byte frame[1] = 0xff # version frame[2] = 0x06 # the number of bytes of the command without starting byte and ending byte frame[3] = command # frame[4] = 0x00 # 0x00 = no feedback, 0x01 = feedback frame[5] = (dat >> 8) & 0xFF # data high byte frame[6] = dat & 0xFF # data low byte frame[7] = 0xef # ending byte mp3.write(frame) # Wait for the chip initialization to complete time.sleep(0.5) # Select the TF card mp3_command(CMD_SEL_DEV, DEV_TF) time.sleep(0.2) # wait for 200ms # Play MP3 mp3_command(CMD_PLAY, 0x0000) # mp3_command(CMD_PAUSE, 0x0000) # Pause mp3 # mp3_command(CMD_PLAY_NEXT, 0x0000) # Play next mp3 # mp3_command(CMD_PLAY_PREV, 0x0000) # Play previous mp3 # mp3_command(CMD_SET_VOLUME, 30) # Change volume to 30 # Main loop to keep the script running while True: time.sleep(0.1) # Prevent tight loop

자세한 사용 방법

Thonny IDE를 사용하여 ESP32에서 MicroPython 코드를 설정하고 실행하는 방법에 대한 지침은 다음과 같습니다:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하세요.
  • ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인하세요.
  • MicroPython이 탑재된 ESP32를 처음 사용한다면 단계별 지침을 제공하는 ESP32 마이크로파이썬 - 시작하기 가이드를 참고하세요.
  • 제공된 다이어그램에 따라 ESP32 보드를 MP3 플레이어 모듈에 연결하세요.
  • USB 케이블을 사용하여 ESP32 보드를 컴퓨터에 연결하세요.
  • 컴퓨터에서 Thonny IDE를 실행하세요.
  • Thonny IDE에서 도구 옵션으로 이동하세요.
  • 인터프리터 탭에서 드롭다운 메뉴에서 MicroPython (ESP32)를 선택하세요.
  • 올바른 포트가 선택되어 있는지 확인하세요. Thonny IDE가 일반적으로 이를 자동으로 감지하지만, 때로는 수동으로 선택해야 할 수도 있습니다 (예: Windows에서는 COM12, Linux에서는 /dev/ttyACM0).
  • 제공된 MicroPython 코드를 복사하여 Thonny의 편집기에 붙여넣으세요.
  • ESP32에 코드를 저장하려면:
  •   - 저장 버튼을 클릭하거나 Ctrl+S를 누르세요.
  •   - 저장 대화 상자에서 MicroPython 장치를 선택하세요.
  •   - 파일 이름을 main.py로 지정하세요.
  • 녹색 실행 버튼을 클릭하거나 F5를 눌러 스크립트를 실행하세요.
  • 음악을 즐기세요.

ESP32 MicroPython 코드 - 제어 버튼으로 음악 재생

ESP32 마이크로파이썬 mp3 플레이어 스피커 배선도

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

다음 코드는 이전 버전의 업데이트된 버전입니다. MP3 플레이어를 관리하는 데 도움이 되는 네 개의 버튼이 포함되어 있습니다.

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-mp3-player */ from machine import UART, Pin import time from DIYables_MicroPython_Button import Button # Define constants CMD_PLAY_NEXT = 0x01 CMD_PLAY_PREV = 0x02 CMD_PLAY_W_INDEX = 0x03 CMD_SET_VOLUME = 0x06 CMD_SEL_DEV = 0x09 CMD_PLAY_W_VOL = 0x22 CMD_PLAY = 0x0D CMD_PAUSE = 0x0E CMD_SINGLE_CYCLE = 0x19 DEV_TF = 0x02 SINGLE_CYCLE_ON = 0x00 SINGLE_CYCLE_OFF = 0x01 ESP32_RX = 16 # The ESP32 pin GPIO16 connected to the TX of the Serial MP3 Player module ESP32_TX = 17 # The ESP32 pin GPIO17 connected to the RX of the Serial MP3 Player module # Initialize UART with the correct pins and baud rate mp3 = UART(1, baudrate=9600, tx=Pin(ESP32_TX), rx=Pin(ESP32_RX)) # Initialize buttons using the Button library button_play = Button(32) # The ESP32 pin GPIO32 for play button_pause = Button(33) # The ESP32 pin GPIO33 for pause button_next = Button(25) # The ESP32 pin GPIO25 for next button_prev = Button(26) # The ESP32 pin GPIO26 for previous # Set debounce time to 50 milliseconds for each button button_play.set_debounce_time(50) button_pause.set_debounce_time(50) button_next.set_debounce_time(50) button_prev.set_debounce_time(50) def mp3_command(command, dat): frame = bytearray(8) frame[0] = 0x7e # starting byte frame[1] = 0xff # version frame[2] = 0x06 # the number of bytes of the command without starting byte and ending byte frame[3] = command # frame[4] = 0x00 # 0x00 = no feedback, 0x01 = feedback frame[5] = (dat >> 8) & 0xFF # data high byte frame[6] = dat & 0xFF # data low byte frame[7] = 0xef # ending byte mp3.write(frame) # Wait for the chip initialization to complete time.sleep(0.5) # Select the TF card mp3_command(CMD_SEL_DEV, DEV_TF) time.sleep(0.2) # wait for 200ms # Main loop to check buttons and send commands while True: # Update the state of each button button_play.loop() button_pause.loop() button_next.loop() button_prev.loop() # Handle play button press if button_play.is_pressed(): print("Play mp3") mp3_command(CMD_PLAY, 0x0000) # Handle pause button press if button_pause.is_pressed(): print("Pause mp3") mp3_command(CMD_PAUSE, 0x0000) # Handle next button press if button_next.is_pressed(): print("Play next mp3") mp3_command(CMD_PLAY_NEXT, 0x0000) # Handle previous button press if button_prev.is_pressed(): print("Play previous mp3") mp3_command(CMD_PLAY_PREV, 0x0000) time.sleep(0.01) # Small delay to be gentle on the CPU

자세한 사용 방법

  • Thonny IDE에서, Thonny IDE의 도구 패키지 관리로 이동합니다.
  • “DIYables-MicroPython-Button”를 검색한 후, DIYables가 만든 Button 라이브러리를 찾습니다.
  • DIYables-MicroPython-Button를 클릭한 후, Button 라이브러리를 설치하려면 Install 버튼을 클릭합니다.
ESP32 마이크로파이썬 버튼 라이브러리
  • 위의 코드를 복사하여 Thonny IDE의 편집기에 붙여넣으세요.
  • 스크립트를 ESP32 보드에 저장하세요.
  • 녹색 Run 버튼을 클릭하거나 (또는 F5를 누르세요) 스크립트를 실행합니다. 스크립트가 실행될 것입니다.
  • 버튼들을 하나씩 누르세요.
  • 음악을 즐기세요.

동영상

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

관련 튜토리얼