Arduino TEA5767 FM 收音机接收器
组件和用品
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
![]() |
|
关于这个项目
简介


亲爱的朋友欢迎回来!在本教程中,我们将在面包板上构建一个简单的 FM Radio 接收器 .
请观看随附的视频,听几秒钟。如您所见,收音机工作正常,我们可以听到一些音乐。我正在使用这个便宜的 FM 发射器以这个频率传输一些 YouTube 安全曲目。我正在使用诺基亚 5110 LCD 显示屏,如果我们正在接收立体声,则可以显示所选频率、信号强度和立体声图标。该项目的核心是小巧且廉价的 Arduino Nano .我们可以用这个电位器来控制扬声器的音量,也可以用这个电位器来改变Radio频率。
这是一个引人入胜的项目,而且相对容易建造。让我们看看如何构建它。
第 1 步:获取所有零件

构建此项目所需的部分如下:
- Arduino Nano
- FM 收音机模块
- 诺基亚 5110 液晶屏
- 10K 电位器
- 音频放大器
- 3W 扬声器
- 大面包板
- 音频线
- 跳线
- 三合一电线
- 调频发射机
- 移动电源
该项目的总成本约为 15 美元。
第 2 步:诺基亚 5110 LCD

诺基亚 5110 是我最喜欢的 Arduino 项目显示器。
诺基亚 5110 是一款基本的图形 LCD 屏幕,最初用作手机屏幕。它使用 PCD8544 控制器,它是一种低功耗 CMOS LCD 控制器/驱动器。因此,显示器具有令人印象深刻的功耗。
开启时仅使用 0.4mA,但禁用背光。它在睡眠模式下使用小于 0.06mA!这就是使这款显示器成为我最喜欢的原因之一。 PCD8544 通过串行总线接口连接到微控制器。这使得屏幕非常容易与 Arduino 一起使用。您只需要连接 8 根电线。我准备了一个详细的教程,教你如何在 Arduino 上使用诺基亚 5110 LCD。
我在本教程中附上了该视频,它将提供有关显示的有用信息,因此我鼓励您仔细观看。显示器的成本约为 4 美元。
你可以在这里得到它。
第 3 步:TEA5767 FM 收音机模块


该项目是围绕这个 FM 收音机模块构建的。
模块采用TEA5767射频芯片 ,这个在这里。该芯片使用 I2C 接口,因此与 Arduino 一起使用非常简单。在模块上,我们还可以找到一个音频放大器。不幸的是,这是一个耳机放大器,因此我们无法将扬声器直接连接到模块的输出端,因为音频信号非常微弱。我们需要先放大它。此外,无法通过软件控制模块输出的音量,因此我们稍后将使用电位计。模块上有两个耳机接口,一个是天线用,一个是标准耳机输出。该模块带有一个小天线,但您可以根据需要轻松构建自己的天线。
你可以在这里得到它。
第 4 步:连接零件











现在让我们根据这个原理图构建电路。
首先,让我们将所有部件放在面包板上。我们将每个部分的接地引脚连接到面包板的接地导轨,并将每个部件的 Vcc 引脚连接到面包板的正极导轨,除了控制音量的电位器。现在,让我们连接无线电模块。 SLC 引脚连接到 Arduino Nano 的模拟引脚 5,SDA 引脚连接到模拟引脚 4。现在我们将电位器的中间引脚连接到模拟引脚 0。使用这个电位器,我们将选择频率。
现在我们需要连接音量电位器来控制音量。我用了音频线。我将电缆的一端插入模块的音频输出。接下来,我切断另一端以在电缆内找到 4 根电线。模块输出立体声,但这次我们将只使用一个音频通道。所以,我只连接了两根电线。其中一个是GND,另一个是需要放大的音频信号。音频信号线连接到音量电位器的输入引脚。电位器中间的脚是出来的音频信号。
为了放大音频信号,我使用了这个使用LM386放大器芯片的模块。音频信号进入此引脚,音频电缆的接地引脚进入此引脚。现在,我们要做的就是为模块供电。因此,我们将此引脚连接到面包板的正极导轨,并将此引脚连接到面包板的负极导轨。我们现在唯一要做的就是像这样将一个小扬声器连接到模块的输出端。有了这个小电位器,我们就可以控制信号的放大。现在,我们要做的就是连接诺基亚 5110 显示器。请观看我关于如何使用诺基亚 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 秒,之后我们可以听到扬声器发出的声音。这款扬声器和这款音频放大器的音质并不是最好的。如果我使用另一个带有嵌入式放大器的商用扬声器,音质是完美的。看看这个。所以,模块的输出信号是完美的,但是我使用的放大器和扬声器降低了音质,所以我需要寻找质量更好的。现在我们已经构建了硬件,让我们来看看项目的软件方面。
第五步:项目代码

在这个项目中,我们使用了两个库。我正在使用 Nokia5110 图形库和一个用于 TEA5767 FM 芯片的库。
代码是这样工作的。首先,我们初始化无线电模块和显示器,并显示三秒钟的闪屏。我在 Photoshop 中设计了这个启动画面。如果您想了解如何将图形上传到诺基亚 5110 显示器,请观看我随附的视频教程。
void setup() { radio.setMonoReception(); radio.setStereoNoiseCancellingOn(); initScreen(); showSplashScreen(); Serial.begin(9600);}
接下来,在循环函数中,我们每隔几毫秒从控制频率的电位器中读取值。我们从电位计获得模拟值,并将其映射到频率值。由于我们读取的是模拟值,因此该值不是常数;即使我们不转动电位器,它也会略微上升或下降。
frequencyInt =map(val, 2, 1014, 8700, 10700); //从87.0 MHz到107.00 MHz的模拟值到频率浮动频率=frequencyInt/100.0f;
因此,为了获得稳定的频率,我们只有在频率发生显着变化时才将收音机调谐到不同的频率。因此,如果频率发生显着变化,我们将无线电模块调谐到该频率,获得信号强度,然后将其打印在屏幕上,如果需要,我们将打印立体声图标,最后,我们打印选定的频率.
if(frequency - previousFrequency>=0.1f || previousFrequency - frequency>=0.1f) { lcd.clrScr(); radio.selectFrequency(频率);打印信号强度();打印立体声();打印频率(频率);以前的频率 =频率; }
这就是代码的工作原理,它很简单但工作正常。与往常一样,您可以找到此步骤附带的项目代码。
由于这是一个正在开发的项目,您可以在该项目的网页上找到最新版本的代码:http://eduino-fm-radio-project
调频广播.zip
第 6 步:最后的想法


正如您在大约半小时内看到的那样,我们可以在面包板上构建一个 FM 收音机。多么酷啊!
我们从这个项目中获得的音质还不是很好。我将在这个项目上做更多的工作,以在各个领域改进它。我想把这个项目变成带有复古 3D 打印外壳的完整收音机。首先,我将尝试不同的音频放大器和扬声器,以从这个项目中获得良好的音频质量。我还将把它从面包板上移开,并在原型板上制作一个永久版本。我还将为这个项目设计一个外壳,使它看起来像一个收音机。当然,项目的代码也需要大量的改进和调整。我想添加的一个功能是微调功能,它将进一步提高音质。
当显示器的背光被禁用时,该项目需要大约 50mA 的电流。我们可以进一步减少当前的一些软件和硬件技巧,使这个项目可以由电池供电。我想,结果会令人印象深刻,我迫不及待地想看到这个项目在我的办公桌上完成。这个视频只是一个开始。
我很想听听你对这个项目的看法。你觉得这个项目有趣吗?另外,您建议进行哪些改进?您有什么经验可以改进这个项目吗?
请在下面的评论部分发表您的评论,如果您觉得视频有趣,请不要忘记喜欢该视频并与您的朋友分享!非常感谢!
代码
- 代码片段 #1
- 代码片段 #3
代码片段 #1纯文本
void setup() { radio.setMonoReception(); radio.setStereoNoiseCancellingOn(); initScreen(); showSplashScreen(); Serial.begin(9600);}
代码片段 #3纯文本
if(frequency - previousFrequency>=0.1f || previousFrequency - frequency>=0.1f) { lcd.clrScr(); radio.selectFrequency(频率);打印信号强度();打印立体声();打印频率(频率);以前的频率 =频率; }
示意图

制造工艺