2019年3月13日 星期三

模組介紹 : faya MP3模組


學習目標 : 認識faya MP3模組的功能及使用方式
學習時間 : 60~90 mins
示範模組 : (1) faya brickNano
                   (2) faya MP3模組
                   (3) faya SD卡模組
                   (4) faya雙聲道喇叭模組 (或自備耳機)
工具 : 積木底板、音源線、SD卡


====================功能介紹====================
faya MP3模組使用MP3解碼晶片(代號VS1053B),透過簡單的接線後,只要對第三方所提供的函式下指令,就能從SD卡讀取MP3檔案並播放,函示庫可以到這裡下載,解壓縮後放在Arduino資料夾裡的library裡面。


介紹指令前,先看一下faya MP3模組的外觀,它的左邊有七個埠,分別是RST、DREQ、MISO、MOSI、SCK、XDCS、XCS,其中MISO、MOSI、SCK屬於SPI通訊協定,用來和Arduion互相溝通。

Arduino 的SPI通訊有固定的腳位,對於 faya brickNano而言,我們要把SCK接在D13位置、MISO接在D12位置、MOSI接在D11的位置。

接下來介紹使用指令

  • #include <SFEMP3Shield.h>
使用MP3模組函示庫,還需要引入SD與SPI的函示庫。
  • #include <SdFat.h>
  • #include <SdFatUtil.h>
使用SD卡模組函示庫。
  • #include <SPI.h>
引入SPI介面。 
  • SdFat 物件名稱;
此指令建構了SD卡模組的物件,物件名稱 : 可自行命名。 
  • SFEMP3Shield 物件名稱;
此指令建構了MP3模組的物件,物件名稱 : 可自行命名。  
其他函式功能,大家可以透過Libraries裡的.h檔案,查看呼叫方式

====================原理知識====================
以下解釋提供給有需要知道背後原理的人:


VS1053B將Ogg/MP3/AAC/WMA/MIDI解碼電路整合在一個系統晶片內,並且搭載一DSP控制器,負責處理內部訊號以及外界的溝通。使用者只要外接電阻、電容以及震盪器,就能利用外部的控制器 (Arduino)控制並接收訊號。需要詳細資訊的讀者,可以參考官方的datasheet

模組電路圖如下所示:


====================範例實作(一)====================
了解模組功能(原理)後,我們用以下範例來展示模組的功能,我們直接利用官方所提供的程式,加了些註解,讓使用者可以看到MP3的函式的全部功能,未來要使用此模組時,直接複製裡面的函示來用即可。

目標:
(1) 利用MP3模組撥放SD卡裡面的音樂
(2) 使用Serial Monitor,控制MP3模組的撥放與各種功能
(3) 利用faya雙聲道喇叭模組撥放MP3的音樂

接線:
(1) 電源線連接如下圖所示,連接的說明請看這篇文章簡易版


(2) 訊號線連接
     
     SD卡模組接法如下 : 
                   Arduino_D9   ===> SD卡模組_CS
                   Arduino_D11 ===> SD卡模組_MOSI
                   Arduino_D13 ===> SD卡模組_SCLK
                   Arduino_D12 ===> SD卡模組_MISO
     
     MP3模組接法如下 : 
                   Arduino_D8   ===> MP3模組_RST
                   Arduino_D2   ===> MP3模組_DREQ
                   Arduino_D12 ===> MP3模組_MISO
                   Arduino_D11 ===> MP3模組_MOSI
                   Arduino_D13 ===> MP3模組_SCK
                   Arduino_D7   ===> MP3模組_XDCS
                   Arduino_D6   ===> MP3模組_XCS               

需要連接的訊號線比往常都還要多,如果要連的整齊一點,可以參考以下連接方式

首先將MP3和SD卡模組的SPI介面MOSI, SCLK, MISO對連,注意到MP3模組的SCLK標示為SCK,如下圖中紫色的單芯線。


接著將MP3模組的RST, DREQ, XDCS, XS分別連到Arduino的D8, D2, D7, D6腳位,如下圖中紅色單芯線


然後將MP3模組的MISO和MOSI分別連到Arduino的D12和D11腳位,如下圖中的黃色單芯線


最後將SD卡模組的CS和SCLK分別連接到Arduino的D9和D13腳位,如下圖中的綠色單芯線

             
(3) 音源線連接 - 將音源線插入MP3模組和雙聲道喇叭模組的音源座


安裝SD卡:
將MP3檔案透過讀卡機或筆電的SD卡插槽複製到SD卡裡面,MP3的檔名必須符合程式的格式,從TRACK000.MP3開始編起,第一首歌TRACK000.mp3,第二首歌TRACK001.MP3,依此類推,複製完成後,再將SD卡插到SD卡模組。


範例程式:

備註:
完成燒錄後,打開串列埠傳輸介面,傳輸速率選擇115200,畫面會顯示歡迎畫面、功能介紹和列出SD卡內的MP3清單



 [l]:小寫L,顯示MP3歌曲清單,左邊是編號,右邊是檔案名稱



 [1-9] : 輸入數字撥放清單上的編號歌曲
 [p] : 暫停/回復撥放
 [s]: 停止撥放
 [+ or -] : 改變聲音大小
 [> or <] : 改變撥放速度
 [l] Display list of music files
 [h] : 顯示所有指令


範例結果:

討論:
    你可以試著加入硬體按鈕直接控制MP3晶片,這樣就可以不用依賴Serial Monitor介面,脫離電腦變成一台獨立的MP3撥放器,只要一顆行動電源就可以選歌聽歌,這樣是不是方便多了呢。

也歡迎大家在底下留言或到我們的粉絲團留言喔!
====================================

沒有留言:

張貼留言