2018年2月26日 星期一

模組介紹 : faya FM模組


學習目標 : 認識faya FM模組的功能及使用方式
學習時間 : 35mins
示範模組 : (1) faya brickNano
                   (2) faya FM模組
                   (3) faya雙聲道喇叭模組 (或自備耳機)
工具 : 積木底板


====================功能介紹====================
faya FM模組使用了一顆FM解碼晶片(代號Si4702),透過簡單的接線後,只要對第三方所提供的函式下指令,就能接收聽FM頻道,函示庫可以到這裡下載,解壓縮後放在Arduino資料夾裡的library裡面。


介紹指令前,先看一下faya FM模組的外觀,它的左邊有六個埠,分別是RST、SEN、SCLK、SDIO、GPIO1、GPIO2,其中SCLK與SDIO是I2C通訊協定,用來和Arduion互相溝通。

Arduino 的I2C通訊有固定的腳位,對於 faya brickNano而言,我們要把SCLK接在A5的位置、SDIO接在A4的位置。

接下來介紹使用指令

  • #include <Si4703_Breakout.h>
使用FM模組函示庫,還需要引入I2C 的函示庫。
  • #include <Wire.h>
引入I2C介面。 
  • Si4703_Breakout 物件名稱;
此指令建構了FM模組的物件,物件名稱 : 可自行命名。 
  • 物件名稱.powerOn();
啟動FM模組。
  • 物件名稱.setVolume();
設定FM模組的音量。 
  • 物件名稱.seekUp();
對FM模組向上掃頻。 
  • 物件名稱.seekDown();
對FM模組向下掃頻。 
  • 物件名稱.setChannel();
設定FM模組頻段。
其他函式如靜音等等功能,大家可以透過Libraries裡的.h檔案,查看呼叫方式

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


Si4702將FM接收電路(濾波器/震盪電路/頻率合成器/類比數位轉換/雜訊抑制等等......)整合在一個系統晶片內,並且搭載一DSP控制器,負責處理內部訊號以及外界的溝通。使用者只要外接電阻、電容以及震盪器,就能利用外部的控制器 (Arduino)控制並接收訊號。需要詳細資訊的讀者,可以參考官方的datasheet

模組電路圖如下所示,我們在電路裡加了TPA6111A2 雙聲道放大器IC,讓使用者收聽品質可以更好。


====================範例實作(一)====================
了解模組功能(原理)後,我們用以下範例來展示模組的功能:

目標:
(1) 使用Serial Monitor,控制FM模組音量及頻道
(2) 利用faya雙聲道喇叭模組撥放接收的FM電台

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


(2) 訊號線連接

                   Arduino_A4 ===> FM模組_SDIO
                   Arduino_A5 ===> FM模組_SCLK
                   Arduino_D2 ===> FM模組_RST
               

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


範例程式:


備註:
- L18: 把連接FM模組的reset, SDIO, SCLK腳位定義好後,就能輕鬆呼叫函式控制模組
- L41~45 : 利用字元 'u' 搜尋下一電台
- L46~50 : 利用字元 'd' 搜尋上一電台
- L51~57 : 利用字元 '+' 提高音量,最高音量15
- L58~64 : 利用字元 '-' 降低音量,最低音量0
- L65~70 : 利用字元 'a' 設定最愛台 (99.7 - 台北愛樂電台)
- L71~76 : 利用字元 'b' 設定最愛台 (100.7 - ICRT電台)


範例結果:



討論:
    範例中我們發現搜尋電台時,不一定會找到最清楚的下(上)一電台,根據經驗這和搜尋的地區有關,電台發射的訊號的強弱會影響搜尋結果。另外,本模組透過音源線當成天線,如果收訊不良,大家可以試試使用不同長度的音源線,並且試試不同的擺放位置。

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

沒有留言:

張貼留言