在本文中,我将介绍如何在面包板上构建一个简单的 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 的interwetten与威廉的赔率体系 引脚 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文章
2468浏览量
71886 -
FM收音机
+关注
关注
2文章
27浏览量
14569 -
面包板
+关注
关注
3文章
298浏览量
17560
发布评论请先 登录
相关推荐
评论