在本文中,我將介紹如何在面包板上構建一個簡單的 FM 收音機接收器。
如您所見,收音機工作正常,我們可以聽到一些音樂。我正在使用這種廉價的 FM 發射器以這個頻率傳輸一些 YouTube 安全曲目。我使用諾基亞 5110 LCD 顯示屏來顯示所選頻率、信號強度和立體聲圖標(如果我們正在接收立體聲)。該項目的主控是小巧便宜的 Arduino Nano 。我們可以使用電位器來控制揚聲器的音量和無線電頻率。
這是一個引人入勝的項目,而且相對容易構建。讓我們看看如何構建它。
第 1 步:獲取所有零件
構建此項目所需的部分如下:
Arduino Nano
調頻收音機模塊
諾基亞 5110 液晶
10K電位器
3W音箱
大面包板
音頻線
跳線
3合1線
調頻發射機
移動電源
第 2 步:諾基亞 5110 液晶顯示屏
諾基亞 5110 是我最喜歡的 Arduino 項目顯示器。
諾基亞 5110 是一款基本的圖形 LCD 屏幕,最初用于手機屏幕。它使用 PCD8544 控制器,這是一種低功耗 CMOS LCD 控制器/驅動器。因此,顯示器具有令人印象深刻的功耗。
它開啟時僅使用 0.4mA,但背光被禁用。它在睡眠模式下使用小于 0.06mA!這就是使該顯示器成為我最喜歡的原因之一。PCD8544 通過串行總線接口連接到微控制器。這使得屏幕非常易于與 Arduino 一起使用。您只需要連接 8 根電線。
第 3 步:TEA5767 FM 收音機模塊
該項目是圍繞這個 FM 收音機模塊構建的。
該模塊使用TEA5767無線電芯片。該芯片使用 I2C 接口,因此可以直接與 Arduino 一起使用。在模塊上,我們還可以找到一個音頻放大器。不過需要注意的是,這是一個耳機放大器,因此我們無法將揚聲器直接連接到模塊的輸出。因為音頻信號非常微弱,我們需要先放大它。此外,無法通過軟件控制模塊發出的音量,因此稍后我們將使用電位器。模塊上有兩個耳機接口,一個是天線接口,一個是標準耳機輸出接口。該模塊帶有一個小天線,但如果您愿意,您可以輕松構建自己的天線。
第 4 步:連接部件
現在讓我們根據這個示意圖構建電路。
首先,將所有部件放在面包板上。我們把每個部分的接地引腳連接到面包板的接地軌,并將每個部分的 Vcc 引腳連接到面包板的正極軌,除了控制音量的電位器。之后,連接無線電模塊。SLC 引腳連接到 Arduino Nano 的模擬引腳 5,SDA 引腳連接到模擬引腳 4。現在我們將電位器的中間引腳連接到模擬引腳 0。使用這個電位器,我們將選擇頻率。
現在我們需要連接音量電位器來控制音量。我用的是音頻線。我將電纜的一端插入模塊的音頻輸出。接下來,我切斷另一端以在電纜內找到 4 根電線。模塊輸出立體聲,但這次我們只使用一個音頻通道。所以,我只連接兩根電線。其中一個是GND,另一個是需要放大的音頻信號。音頻信號線連接到音量電位器的輸入引腳。電位器的中間引腳是輸出的音頻信號。
為了放大音頻信號,我使用了這個使用LM386放大器芯片的模塊。音頻信號進入此引腳,音頻電纜的接地引腳進入此引腳。現在,我們要做的就是為模塊供電。所以我們將此引腳連接到面包板的正極軌,并將此引腳連接到面包板的負極軌。我們現在唯一要做的就是像這樣將一個小揚聲器連接到模塊的輸出端。有了這個小電位器,我們可以控制信號的放大。現在,我們所要做的就是連接諾基亞 5110 顯示屏。
連接諾基亞 5110 液晶顯示器
RST 轉到 Arduino 的數字引腳 12
CE 轉到 Arduino 的數字引腳 11
DC 連接到 Arduino 的數字引腳 10
DIN 連接到 Arduino 的數字引腳 9
CLK 進入 Arduino 的數字引腳 8
VCC 轉到 Arduino 3.3V
LIGHT 連接到 Arduino GND(背光打開)
GND 連接到 Arduino GND
最后一步是可選的,像這樣將一個 330μF 電容器連接到面包板上,以減少音頻信號上的噪聲。
如果我們現在啟動項目,我們可以看到啟動屏幕顯示 3 秒,然后,我們可以聽到揚聲器的聲音。但揚聲器和此音頻放大器的音質不是最好的。不過如果我們使用另一個帶有嵌入式放大器的商用揚聲器,音質就趨于完美了。所以,模塊的輸出信號是完美的,但是我使用的放大器和揚聲器降低了音質,所以我們可以尋找質量更好的。現在我們已經構建了硬件,讓我們來看看項目的軟件方面。
第 5 步:項目代碼
在這個項目中,我們使用了兩個庫。我正在使用 Nokia5110 圖形庫和 TEA5767 FM 芯片的庫。
代碼是這樣工作的。首先,我們初始化收音機模塊和顯示器,并顯示三秒鐘的閃屏。我在 Photoshop 中設計了這個閃屏。
void setup() {
radio.setMonoReception();
radio.setStereoNoiseCancellingOn();
initScreen();
showSplashScreen();
Serial.begin(9600);
}
接下來,在循環函數中,我們每隔幾毫秒從控制頻率的電位器中讀取值。我們從電位器獲得模擬值,并將其映射到頻率值。由于我們讀取的是模擬值,因此該值不是恒定的;即使我們不轉動電位器,它也會略微上升或下降。
frequencyInt = map(val, 2, 1014, 8700, 10700); //Analog value to frequency from 87.0 MHz to 107.00 MHz
float frequency = frequencyInt/100.0f;
因此,為了獲得穩定的頻率,我們只有在頻率發生顯著變化時才將收音機調到不同的頻率。因此,如果頻率發生顯著變化,我們將無線電模塊調整到該頻率,我們獲得信號強度,然后將其打印在屏幕上,如果需要,我們打印立體聲圖標,最后,我們打印選定的頻率。
if(frequency - previousFrequency 》= 0.1f || previousFrequency - frequency 》= 0.1f) {
lcd.clrScr();
radio.selectFrequency(frequency);
printSignalStrength();
printStereo();
printFrequency(frequency);
previousFrequency = frequency;
}
這就是代碼的工作方式,它很簡單,但工作正常。
第 6 步:最后的想法
正如您在大約半小時內看到的那樣,我們可以在面包板上構建一個 FM 收音機。
我們從這個項目中得到的音質還不是很好。我將在這個項目上做更多的工作,以在每個領域改進它。我想把這個項目變成帶有復古 3D 打印外殼的完整收音機。首先,我將嘗試不同的音頻放大器和揚聲器,以從這個項目中獲得良好的音頻質量。我們還可以把它從面包板上移開,并在原型板上制作它的永久版本。還可以為這個項目設計一個外殼,讓它看起來像一個收音機。當然,項目的代碼也需要大量的改進和調整。我想添加的一個功能是微調功能,它將進一步提高音質。
當顯示器的背光被禁用時,該項目需要大約 50mA 的電流。我們可以進一步減少當前的一些軟件和硬件技巧,以便這個項目可以由電池供電。我認為,結果會令人印象深刻,我迫不及待地想看到這個項目在我的辦公桌上完成。這個項目只是一個開始。
-
接收器
+關注
關注
14文章
2458瀏覽量
71798 -
FM收音機
+關注
關注
2文章
27瀏覽量
14554 -
面包板
+關注
關注
3文章
298瀏覽量
17545
發布評論請先 登錄
相關推薦
評論