0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Arduino RDA5807 FM接收器的FM調(diào)頻廣播電路

電子設(shè)計 ? 來源:一板網(wǎng) ? 作者:風(fēng)箏 ? 2020-11-30 16:37 ? 次閱讀

幾乎每個人都使用手機(jī)收聽音樂、新聞、播客等。但是不久以前,我們都依靠當(dāng)?shù)氐腇M廣播電臺來獲取最新的新聞和歌曲,這些廣播電臺逐漸失去了知名度,但是在互聯(lián)網(wǎng)出現(xiàn)緊急情況時處于關(guān)閉狀態(tài)時,收音機(jī)在將信息傳輸?shù)接脩舴矫姘缪葜匾巧o線電信號始終存在于空中(由電臺廣播),我們所需要的只是一個FM接收器電路,以捕獲這些無線電信號并將其轉(zhuǎn)換為音頻信號。

在本篇文章中,我們將制作一個Arduino FM接收器。我們將基于Arduino使用RDA5807 FM接收器IC并對它進(jìn)行編程,以便播放任何可由用戶使用電位計進(jìn)行調(diào)諧的FM廣播電臺。我們還將使用音頻放大器和電路來控制Arduino FM收音機(jī)的輸出音量,聽起來有趣嗎?讓我們開始吧。

FM調(diào)頻廣播的工作原理

無線電臺將電信號轉(zhuǎn)換為無線電信號,并且這些信號在通過天線傳輸之前必須進(jìn)行調(diào)制??梢哉{(diào)制信號的方法有兩種,即AM和FM。顧名思義,調(diào)幅(AM)在發(fā)送信號之前先對幅度進(jìn)行調(diào)制,而在調(diào)頻(FM)中,信號的頻率要在通過天線發(fā)送之前進(jìn)行調(diào)制。在無線電臺,它們使用調(diào)頻來調(diào)制信號,然后發(fā)送數(shù)據(jù)。現(xiàn)在,我們需要制作的是一個可以調(diào)諧到特定頻率的接收器,接收這些信號,然后再將這些電信號轉(zhuǎn)換為音頻信號。我們將在本文中使用RDA5807 FM接收器模塊,從而簡化了電路。

所需組件

● Arduino Nano開發(fā)板

● RDA5807接收器

● 音頻放大器

● 連接線

● 100K電位器

● 面包板

RDA5807接收器

RDA5807是具有完全集成的合成器的單芯片FM立體聲無線電調(diào)諧器模塊。該模塊支持全球范圍內(nèi)的50 – 115MHz頻帶、音量控制和靜音,可編程去加重(50 / 75us),接收信號強(qiáng)度指示器和SN??R,32.768KHz晶體振蕩器,數(shù)字自動增益控制等。下圖顯示了RDA5807M調(diào)諧器的框圖。

它具有數(shù)字低中頻架構(gòu),并集成了一個低噪聲放大器(LNA),該放大器支持FM廣播頻段(50至115 MHz)、可編程增益控制(PGA)、高分辨率模數(shù)轉(zhuǎn)換器和高保真數(shù)模轉(zhuǎn)換器DAC)。限幅器可防止過載,并限制相鄰?fù)ǖ喇a(chǎn)生的互調(diào)產(chǎn)物的數(shù)量。 PGA放大混頻器輸出信號,然后用ADC數(shù)字化。 DSP內(nèi)核管理通道選擇、FM解調(diào)、立體聲MPX解碼器和輸出音頻信號。該IC的RDA5807引腳排列圖如下。

該模塊工作在1.8 – 3.3V的電源。當(dāng)進(jìn)入靜止?fàn)顟B(tài)并選擇了控制接口時,模塊會在VIO上電時進(jìn)行復(fù)位,并且還支持通過觸發(fā)02H地址的0到1中的bit1進(jìn)行軟復(fù)位。該模塊使用I2C通信MCU進(jìn)行通信,并且連接以啟動條件、命令字節(jié)和數(shù)據(jù)字節(jié)開始。 RDA5807具有13個16位寄存器,每個寄存器執(zhí)行特定功能。寄存器地址以00H開頭,該地址分配給芯片ID,以0FH結(jié)尾。在所有13個寄存器中,有些位保留,而有些則是R / W。每個寄存器根據(jù)分配給它們的位執(zhí)行諸如改變音量、改變通道等任務(wù)。

將模塊連接到電路時,由于模塊引腳是焊盤形式,我們無法直接使用該模塊。因此,我使用一塊洞洞板和一些插針,將模塊的每個引腳焊接到插針上,如下圖所示。

音頻放大器

音頻放大器是一種電子設(shè)備,可將低功率電子音頻信號放大到足以驅(qū)動揚(yáng)聲器或耳機(jī)的電平。我們使用LM386構(gòu)建了一個簡單的音頻放大器,其電路如下所示。

Arduino FM接收器電路圖

我們使用了兩個電位器來調(diào)節(jié)FM頻段和控制音頻放大器的音量。要更改音量,您可以改變電位器,電位器連接在LM386的1至8號引腳之間,也可以改變電位器,其連接在LM386的3號引腳之間。下圖顯示了Arduino FM收音機(jī)的完整電路圖。

我在放大器上做的一些微小改動。我沒有在放大器中使用兩個電位器,而是僅使用一個。我用電阻互換了用來改變增益的電位器。因此,現(xiàn)在我們的項目有兩個電位器,一個用于調(diào)節(jié),另一個用于改變音量。用于調(diào)節(jié)通道的電位器與Arduino nano連接。電位器的中心引腳連接到Arduino nano的A0引腳,其余兩個引腳中的一個連接到5V,另一個連接到GND。另一個電位器用于控制收音機(jī)的音量,并按上圖所示進(jìn)行連接。

Arduino的引腳A4和A5連接到RDA5807M的SDA和SCL引腳。請記住,接收器模塊只能在3.3V電壓下工作。因此,將Nano的3v3引腳連接到接收器模塊的VCC引腳。建立連接后,設(shè)置如下所示

Arduino FM收音機(jī)代碼說明

該代碼將初始化接收器模塊,然后以預(yù)設(shè)頻率設(shè)置頻道。當(dāng)nano在A0引腳上讀取的值發(fā)生變化(通過改變電位器)時,頻率也會發(fā)生變化,從而改變通道。完整的代碼在頁面末尾給出。

我們在程序開始時添加與RDA5807通信所需的wire庫。然后,定義變量“channel”,設(shè)置頻道。每當(dāng)收音機(jī)啟動時,它都會自動調(diào)諧到該頻道。

#include

uint16_t channel = 187;

接下來,我們將字節(jié)加載到RDA5807 IC上的每個寄存器以設(shè)置我們的初始配置。然后,我們復(fù)位接收器。

uint8_t boot_config[] = {

/* register 0x02 */

0b11000001,

0b00000011,

/* register 0x03 */

0b00000000,

0b00000000,

/* register 0x04 */

0b00001010,

0b00000000,

/* register 0x05 */

0b10001000,

0b00001111,

/* register 0x06 */

0b00000000,

0b00000000,

/* register 0x07 */

0b01000010,

0b00000010,

};

復(fù)位設(shè)備后,我們可以調(diào)諧設(shè)備。要調(diào)整頻道,我們只需要編程前4個字節(jié)。這部分代碼會將頻道更改為所需的頻率。首先在I2C中,我們開始傳輸,寫入或讀取數(shù)據(jù),然后結(jié)束傳輸。在該接收器IC中,我們無需指定地址,因為數(shù)據(jù)表清楚地表明I2C接口具有固定的起始寄存器,即用于寫入操作的0x02h和用于讀取操作的0x0Ah。

uint8_t tune_config[] = {

/* register 0x02 */

0b11000000,

0b00000001,

/* register 0x03 */

(channel >> 2),

((channel & 0b11) << 6 ) | 0b00010000

};

在setup函數(shù)中,我們初始化引導(dǎo)配置,然后通過將調(diào)整配置字節(jié)寫入RDA5807M來調(diào)整至通道。

void setup()

{

Serial.begin(9600);

pinMode(A0,INPUT);

/* Conect to RDA5807M FM Tuner: */

Wire.begin();

Wire.beginTransmission(RDA5807M_ADDRESS);

Wire.write(boot_config, BOOT_CONFIG_LEN);

Wire.endTransmission();

Wire.beginTransmission(RDA5807M_ADDRESS);

Wire.write(tune_config, TUNE_CONFIG_LEN);

Wire.endTransmission();

}

當(dāng)使用電位器調(diào)諧到某個頻率時,我遇到了一個問題。 A0引腳讀取的值不是恒定的。噪聲與所需的值成比例。我使用了一個連接在A0和GND之間的0.1uF陶瓷電容器,盡管該噪聲已降至最低,但仍未達(dá)到所需的水平。因此,我必須對代碼進(jìn)行一些更改。首先,我記下了受噪聲影響的讀數(shù)。我發(fā)現(xiàn)噪聲的最大值是10。因此,我以這樣的方式編寫程序,即只有在同一引腳的新值和舊值之間的差大于10時,它才會考慮新值。然后調(diào)諧到所需的頻道。

void loop()

{

int channel1 =187 ,avg=0, newA;

static int oldA = 0;

int result = 0;

newA = analogRead(A0);

if ((newA - oldA) > 10 || (oldA - newA) > 10){

Serial.println(newA);

if(newA!= oldA){

channel = channel1+(newA/10);

myChangeChannel(channel);

oldA=newA;

}

}

}//loop end

以下函數(shù)用于設(shè)置tune_config數(shù)組的字節(jié),然后使用I2C協(xié)議將數(shù)據(jù)發(fā)送到RDA5807M。

void myChangeChannel(int channel){ /* void if nothing is returned else int */

tune_config[2] = (channel >> 2);

tune_config[3] = ((channel & 0b11) << 6 ) | 0b00010000;

Wire.begin();

Wire.beginTransmission(RDA5807M_ADDRESS);

Wire.write(tune_config, TUNE_CONFIG_LEN);

Wire.endTransmission();

}

Arduino FM收音機(jī)的工作過程

當(dāng)模塊上電時,我們的代碼會復(fù)位RDA5807-M并將其設(shè)置為所需用戶的通道(注意:該頻率被視為將增加頻率的基準(zhǔn)頻率)。通過更改電位器(連接到A0),Arduino Nano讀取的值會更改。如果新值和舊值之間的差大于10,我們的代碼將考慮該新值。根據(jù)新值與舊值之間的變化來更改通道。增大或減小音量取決于連接在引腳3和GND之間的電位器。

電路搭建和代碼編寫完成后,您將擁有自己的FM收音機(jī)。希望您喜歡本篇文章并學(xué)到一些有用的東西。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 音頻放大器
    +關(guān)注

    關(guān)注

    39

    文章

    898

    瀏覽量

    52985
  • 無線電臺
    +關(guān)注

    關(guān)注

    1

    文章

    26

    瀏覽量

    13702
  • 無線電信號
    +關(guān)注

    關(guān)注

    1

    文章

    50

    瀏覽量

    12785
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6458

    瀏覽量

    186504
收藏 人收藏

    評論

    相關(guān)推薦

    RDA5807的RSSI信號響應(yīng)RF強(qiáng)度測試

    RSSI:Received Signal StrengthIndicator,表明了接收機(jī)接收到的信號的強(qiáng)度。一般使用分貝(db)從0到-120db。RDA5807內(nèi)部接收器中具有RS
    的頭像 發(fā)表于 11-25 15:01 ?5879次閱讀

    基于RDA5807調(diào)頻收音模塊案例

    ,排針在最下面,從左到右的功能分別是: 在新的功能模塊上增加了3.3V的穩(wěn)壓芯片:A1117-3.3V,I2C總線的上拉電阻:10k \Omega。 : 將RDA5807焊接在轉(zhuǎn)接板上。需要在頂部的天線部分增加一個長度為10厘米的軟線作為RF接收天線。 測試實驗 硬件 將
    的頭像 發(fā)表于 11-25 15:13 ?1.1w次閱讀
    基于<b class='flag-5'>RDA5807</b>的<b class='flag-5'>調(diào)頻</b>收音模塊案例

    基于Arduino-Nano的數(shù)字FM接收器

    描述帶有 Arduino 的數(shù)字 FM 接收器FM 發(fā)射/接收器是任何電子愛好者最喜歡的
    發(fā)表于 06-20 07:57

    基于樹莓派pico的FM接收器

    描述Pico 收音機(jī)是一個簡單的基于樹莓派 pico 的 FM 接收器,它使用 rda5807m 調(diào)諧到 FM 頻道??梢酝ㄟ^在 SMA 連接
    發(fā)表于 07-08 07:56

    用于Arduino Uno的Fm無線電屏蔽

    描述FM 無線電盾牌 ARDUINO UNO用于 Arduino Uno 的 Fm 無線電屏蔽。便于使用。簡單便宜的 Rda5807
    發(fā)表于 08-26 07:19

    基于RDA5807的收音機(jī)

    本系統(tǒng)為立體聲調(diào)頻收音機(jī),設(shè)計采用RDA5807收音模塊,與單片機(jī)相結(jié)合,使收音解調(diào)電路設(shè)計變的簡單,實現(xiàn)FM收音并顯示頻率。我們通過矩陣鍵盤設(shè)定我們需要的頻段,并設(shè)置音量大小,通過諾
    發(fā)表于 03-21 14:14 ?74次下載

    RDA5807系列FM收音芯片C語言程序參考代碼資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是RDA5807系列FM收音芯片C語言程序參考代碼資料免費(fèi)下載。
    發(fā)表于 10-08 08:00 ?94次下載
    <b class='flag-5'>RDA5807</b>系列<b class='flag-5'>FM</b>收音芯片C語言程序參考代碼資料免費(fèi)下載

    RDA5807系列參考代碼的詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是RDA5807系列參考代碼的詳細(xì)資料免費(fèi)下載。1、此代碼為RDA FM系列產(chǎn)品的參考代碼,已通過讀ID的方式兼容RDA5807P、
    發(fā)表于 02-11 08:00 ?127次下載
    <b class='flag-5'>RDA5807</b>系列參考代碼的詳細(xì)資料免費(fèi)下載

    使用RDA5807制作收音機(jī)的Arduino代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用RDA5807制作收音機(jī)的Arduino代碼免費(fèi)下載。
    發(fā)表于 01-17 17:35 ?67次下載
    使用<b class='flag-5'>RDA5807</b>制作收音機(jī)的<b class='flag-5'>Arduino</b>代碼免費(fèi)下載

    RDA5807收音機(jī)原理圖免費(fèi)下載

    RDA5807收音機(jī)原理圖免費(fèi)下載。
    發(fā)表于 02-18 15:38 ?59次下載

    帶有Arduino的數(shù)字FM接收器

    電子發(fā)燒友網(wǎng)站提供《帶有Arduino的數(shù)字FM接收器.zip》資料免費(fèi)下載
    發(fā)表于 07-19 11:31 ?4次下載
    帶有<b class='flag-5'>Arduino</b>的數(shù)字<b class='flag-5'>FM</b><b class='flag-5'>接收器</b>

    使用RDA5807構(gòu)建一個Arduino FM收音機(jī)

    在本教程中,我們將構(gòu)建一個Arduino FM 接收器,并將其添加到我們的項目庫中。我們將使用帶有 ArduinoRDA5807
    發(fā)表于 08-19 14:50 ?1.9w次閱讀
    使用<b class='flag-5'>RDA5807</b>構(gòu)建一個<b class='flag-5'>Arduino</b> <b class='flag-5'>FM</b>收音機(jī)

    基于RDA5807M的FM收音機(jī)

    該項目是個通過觸摸按鈕控制的收音機(jī), RDA5807M 和 arduino nano 使 FM 收音機(jī)功能齊全。
    發(fā)表于 12-07 10:30 ?28次下載

    基于RDA5807的迷你立體聲收音機(jī)

    該項目是一個帶有 RDA5807 的易于構(gòu)建和使用的立體聲 RDS FM 接收器,即收音機(jī)。
    發(fā)表于 12-07 11:18 ?31次下載

    基于ArduinoFM調(diào)頻收音機(jī)

    方案介紹這是一個基于 Arduino 的開源的收音機(jī)項目,它具備一臺標(biāo)準(zhǔn)收音機(jī)的全部功能,從控制部分到外殼都可以自己 DIY。在項目中,我們將介紹讓 FM 收音機(jī)調(diào)諧RDA5807
    發(fā)表于 12-26 16:21 ?16次下載