라즈베리 파이 피코 MP3 플레이어

이 안내서는 Raspberry Pi Pico, MP3 플레이어 모듈, Micro SD 카드, 스피커를 사용하여 MP3 플레이어를 만드는 방법을 보여줍니다. MP3 플레이어는 Micro SD 카드의 음악 또는 오디오 파일을 재생합니다. Raspberry Pi Pico는 MP3 플레이어 모듈을 제어하여 SD 카드에서 음악을 선택하고 재생한 후, 이를 소리로 변환하여 스피커로 전송합니다. 이 단계를 자세히 설명하겠습니다.

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

라즈베리 파이 피코 mp3 플레이어

준비물

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

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

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

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

  • Raspberry Pi Pico 인터페이스:
    • RX 핀: 이 핀은 데이터를 수신하는 용도입니다. 시리얼 연결을 통해 Raspberry Pi Pico의 TX 핀에 연결하십시오.
    • TX 핀: 이 핀은 데이터를 전송하는 용도입니다. 시리얼 연결을 통해 Raspberry Pi Pico의 RX 핀에 연결하십시오.
    • VCC 핀: 이 핀은 전원을 공급합니다. Raspberry Pi Pico의 3.3V 핀에 연결하십시오.
    • GND 핀: 이 핀은 접지용입니다. 0V 소스에 연결하십시오.
  • 스피커 인터페이스:
    • 3.5mm AUX 출력 암잭.
  • Micro SD 카드 인터페이스:
    • Micro SD 카드 소켓은 모듈 뒷면에 위치해 있습니다.
    시리얼 mp3 플레이어 모듈 핀아웃
    image source: diyables.io

    스피커 핀아웃

    스피커에는 일반적으로 두 개의 연결 지점이 있습니다:

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

작동 방식

우리가 준비해야 할 것:

  1. 마이크로 SD 카드에 노래 또는 녹음 목록을 저장합니다.
  2. 마이크로 SD 카드를 MP3 플레이어 모듈에 삽입합니다.
  3. MP3 플레이어 모듈을 Raspberry Pi Pico에 부착합니다.
  4. MP3 플레이어 모듈을 스피커에 연결합니다.
  5. 스피커를 전원 공급 장치에 연결합니다.

마이크로 SD 카드의 각 MP3 파일은 0부터 번호가 매겨져 있어 노래의 순서를 나타냅니다.

우리는 Raspberry Pi Pico를 구성하여 MP3 플레이어 모듈에 명령을 보낼 수 있습니다. 이 모듈은 다음 명령들을 지원합니다:

  • 재생 시작
  • 정지
  • 다음 곡 재생
  • 이전 곡 재생
  • 볼륨 변경

MP3 플레이어 모듈은 마이크로 SD 카드에 저장된 MP3 파일을 재생하고 이를 오디오 신호로 변환합니다. 그런 다음 3.5mm Aux 인터페이스를 사용하여 이 신호를 스피커로 전송합니다.

선연결

라즈베리 파이 피코 mp3 플레이어 모듈 배선도

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

Raspberry Pi Pico 코드 - 음악 재생

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

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-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 PICO_RX = 9 # The Raspberry Pi Pico pin GP9 connected to the TX of the Serial MP3 Player module PICO_TX = 8 # The Raspberry Pi Pico pin GP8 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(PICO_TX), rx=Pin(PICO_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가 설치되어 있는지 확인하세요.
  • Raspberry Pi Pico에 MicroPython 펌웨어가 설치되어 있는지 확인하세요.
  • Raspberry Pi Pico를 처음 사용하신다면, 자세한 지침은 라즈베리 파이 피코 - 시작하기 튜토리얼을 참조하세요.
  • 제공된 다이어그램에 따라 Raspberry Pi Pico를 MP3 플레이어 모듈에 연결하세요.
  • USB 케이블을 사용해 Raspberry Pi Pico를 컴퓨터에 연결하세요.
  • 컴퓨터에서 Thonny IDE를 실행하세요.
  • Thonny IDE에서 도구 옵션으로 이동하여 MicroPython (Raspberry Pi Pico) 인터프리터를 선택하세요.
  • 인터프리터 탭에서 드롭다운 메뉴에서 MicroPython (Raspberry Pi Pico)를 선택하세요.
  • 올바른 포트가 선택되었는지 확인하세요. Thonny IDE는 포트를 자동으로 감지해야 하지만, 수동으로 선택해야 할 수도 있습니다 (예: Windows의 COM3 또는 Linux의 /dev/ttyACM0).
  • 위의 코드를 복사하여 Thonny IDE의 편집기에 붙여넣으세요.
  • 다음 단계를 통해 Raspberry Pi Pico에 스크립트를 저장하세요:
    • 저장 버튼을 클릭하거나 Ctrl+S 키를 사용하세요.
    • 저장 대화 상자에서 '이 컴퓨터'와 'Raspberry Pi Pico'라는 두 섹션이 표시됩니다. Raspberry Pi Pico를 선택하세요.
    • 파일 이름을 main.py로 저장하세요.
  • 녹색 실행 버튼을 클릭하거나 F5 키를 눌러 스크립트를 실행하세요. 스크립트가 실행됩니다.
  • 음악을 즐기세요.

라즈베리 파이 피코 코드 - 제어 버튼으로 음악 재생

라즈베리 파이 피코 mp3 플레이어 스피커 배선도

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

다음 코드는 이전 버전의 업데이트된 버전입니다. 네 개의 버튼이 MP3 플레이어 관리를 돕습니다.

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-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 PICO_RX = 9 # The Raspberry Pi Pico pin GP9 connected to the TX of the Serial MP3 Player module PICO_TX = 8 # The Raspberry Pi Pico pin GP8 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(PICO_TX), rx=Pin(PICO_RX)) # Initialize buttons using the Button library button_play = Button(2) # The Raspberry Pi Pico pin GP2 for play button_pause = Button(3) # The Raspberry Pi Pico pin GP3 for pause button_next = Button(4) # The Raspberry Pi Pico pin GP4 for next button_prev = Button(5) # The Raspberry Pi Pico pin GP5 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 버튼을 클릭합니다.
라즈베리 파이 피코 버튼 라이브러리
  • 위의 코드를 복사하여 Thonny IDE 편집기에 붙여넣습니다.
  • 스크립트를 Raspberry Pi Pico에 저장합니다.
  • 초록색 실행 버튼을 클릭하거나 (또는 F5 키를 눌러) 스크립트를 실행합니다. 스크립트가 실행됩니다.
  • 버튼을 하나씩 누릅니다.
  • 음악을 즐기세요.

동영상

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

관련 튜토리얼