0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino Uno开发板和有源扬声器的FM收音机制作

电子设计 来源:一板网 作者:风筝 2021-01-13 16:30 次阅读

学习使用SparkFun FM Tuner和Arduino Uno开发板制作一个简单的FM收音机,以接收和显示广播信息

在之前的文章中,我们简单介绍了一下FM收音机的基础知识,以及从头开始制作简易FM收音机所需的零件。本篇文章将主要介绍如何制作一台FM收音机,该收音机能够接收有关广播的信息,并集成到您的项目中。

我们将使用Silicon Laboratories Si4703的SparkFun分线板,以及Arduino Uno开发板和有源扬声器来制作一个简单的FM收音机,可以寻找广播电台、调节音量、保存喜爱的电台,当然还有播放音频

Arduino Uno将通过串行通信与计算机连接,允许通过系统进行控制,并向用户反馈。此外,该系统将能够接收和显示嵌入在子载波频率中的广播公司的信息。

现在,我们来看看制作过程。

Si4703分线板焊接排针

SparkFun Si4703 FM调谐器分线板没有焊接排针,这几乎是每个SparkFun分线板的出货方式。这使您可以灵活地将Si4703分线板与您需要的任何类型的连接器结合到您的项目中。

您可以将导线直接焊接到分线板上的引脚,可以将分线板连接到另一个PCB,或者可以焊接公头或母头。在这个项目中,因为我将在面包板上组装电路,所以焊接一个公头。但是,如果您不使用面包板,则可能希望使用母头排针。将排针焊接到电路板上就可以将其插入到面包板。

连接线缆

开始搭建项目时,我们将SparkFun Si4703分线板连接到Arduino Uno和扬声器。您可以直接将所有内容连接在一起,如上一节所述,或者将电子元件组装在面包板上。

下面的接线图和表格显示了使项目运行所需的所有连接。在接线图之后,提供了有关电子设计和不同连接的更多信息。

o4YBAF_-rsWAMP-OAAA27HqZqoM189.png

Si4703和Arduino Uno的接线表格

pIYBAF_-rtaAdIC4AAEaRuusNJk114.png

Arduino UNO和Si4703之间连接的电路图。

电源

首先,我们将电源和地连接到SparkFun Si4703 FM Tuner Basic分线板。

**请注意,Si4703的工作电源是3.3V,而不是5V。

将Arduino 3.3V引脚连接到Si4703分线板的VCC引脚。然后,将Arduino其中一个GND引脚连接到Si4703的GND引脚。

parkFun Si4703 FM Tuner Basic分线板的电源和地连接。

数据连接

SparkFun FM Tuner Basic Breakout和Arduino Uno开发板通过四条线进行通信。 GPIO2连接允许Arduino Uno在不同的设备模式中进行选择,如搜索/调谐和RDS功能。

在本教程中,我们将使用双线接口来控制Si4703。这两根线是SDIO和SCLK引脚,分别连接到A4和A5。最后,RST引脚用于启用和禁用Si4703。当D2设置为LOW时,Si4703被禁用,当它设置为HIGH时,Si4703退出复位模式。

SparkFun FM Tuner Basic分线板和Arduino Uno的数据连接。

扬声器连接

最后两个连接是Si4703分线板和有源扬声器之间的音频连接。

本项目中,左右音频通道连接的3.5mm连接器的哪一侧无关紧要。只需将3.5毫米尾纤连接器插入FM调谐器分线板上的Lout和Rout引脚即可。

分线板和有源扬声器之间的音频连接。

代码

组装完电子器件后,下一步是将代码上传到Arduino开发板。共有两个步骤:

1. 安装Si4703库

2. 将Si4703_test草图上传到Arduino Uno

安装库

为了更容易控制SparkFun FM Tuner Basic Breakout,以及项目代码更简洁,我们将使用具有控制Si4703功能的库。

首先下载Si4703库.zip文件夹并将其保存在计算机上的某个位置,以便稍后查找。然后,打开Arduino IDE。在Arduino IDE中,从菜单中选择Sketch> Include Library> Add .ZIP Library ....

o4YBAF_-rwGAaqv3AADBWf67Amg212.png

然后,导航到存储Si4703库的位置并选择.zip文件。库安装成功后,窗口底部会显示确认信息。

o4YBAF_-rxCADbtaAAATfGwYEJY023.png

上传代码

现在Si4703库已经安装到Arduino开发环境中,我们可以使用运行简单的FM收音机的代码对Arduino Uno进行编程。首先,下载草图并在Arduino IDE中打开它。

// Arduino Uno Basic FM Radio using SparkFun Si4703 Breakout

// Author:Scott Hatfield (aka Toglefritz)

/*

DESCRIPTION:

This sketch for the Arduino Uno controls a simple FM radio using an Si4703 radio

receiver. The sketch allows control of the system and feedback to the user over

serial. The system can seek radio stations, store three favorited radio stations,

adjust volume, and print RDS information.

PARTS:

* Arduino Uno R3: < https://www.sparkfun.com/products/11021 >

* SparkFun FM Tuner Basic Breakout:< https://www.sparkfun.com/products/11083 >

* Generic powered speaker

HARDWARE CONNECTIONS:

* Si4703 VCC --> 3.3V

* Si4703 GND --> GND

* Si4703 SDIO --> A4

* Si4703 SCLK --> A5

* Si4703 RST --> D2

* Si4703 GPIO2 --> D3

* Si4703 ROUT --> Speaker

* Si4703 LOUT --> Speaker

*/

#include // Load the SparkFun Si4703 library < https://cdn.sparkfun.com/assets/learn_tutorials/2/7/4/Si4703_Breakout.zip >

#include

int resetPin = 2; // The Si4703 breakout RST pin connects to the Arduino D2 pin

int SDIO = A4; // The Si4703 breakout SDIO pin connects to the Arduino A4 pin

int SCLK = A5; // The Si4703 breakout SCLK pin connects to the Arduino A5 pin

// Initialize the Si4703_Breakout object

Si4703_Breakout radio(resetPin, SDIO, SCLK);

int channel;

int volume = 5;

char rdsBuffer[10];

// Favorite stations

int favA = 1041; // Set your favorite stations by inputting their FM frequency (omitting the period)

int favB = 931;

int favC = 937;

void setup()

{

// The Arduino communicates with the computer via serial

Serial.begin(9600);

Serial.println("\n\nSi4703_Breakout Basic Radio");

Serial.println("\n\nControls:");

Serial.println("a, b, c Favourite stations"); // In the configuration above, you can set three favorite stations

Serial.println("+, - Volume (max 15)");

Serial.println("u, d Seek up / down");

Serial.println("r, Print RDS Data (15 sec timeout)");

Serial.println("\n\n");

radio.powerOn(); // Enable the Si4703

radio.setVolume(5); // Set the starting volume to 5 (out of 15)

}

void loop()

{

// Listen for serial commands

if (Serial.available())

{

char ch = Serial.read();

// u = seek up

if (ch == 'u')

{

channel = radio.seekUp();

displayInfo();

}

// d = seek down

else if (ch == 'd')

{

channel = radio.seekDown();

displayInfo();

}

// + = increase volume

else if (ch == '+')

{

volume ++;

if (volume == 16) volume = 15;

radio.setVolume(volume);

displayInfo();

}

// - = decrease volume

else if (ch == '-')

{

volume --;

if (volume < 0) volume = 0;

radio.setVolume(volume);

displayInfo();

}

// a = favorite station a

else if (ch == 'a')

{

channel = favA;

radio.setChannel(channel);

displayInfo();

}

// b = favorite station b

else if (ch == 'b')

{

channel = favB;

radio.setChannel(channel);

displayInfo();

}

// c = favorite station c

else if (ch == 'c')

{

channel = favC;

radio.setChannel(channel);

displayInfo();

}

// r = print RDS information

else if (ch == 'r')

{

Serial.println("RDS listening...");

radio.readRDS(rdsBuffer, 15000);

Serial.print("RDS info: ");

Serial.println(rdsBuffer);

}

}

}

// The displayInfo function prints the current channel and volume over serial

void displayInfo()

{

Serial.print("Channel:");

Serial.print(channel);

Serial.print(" Volume:");

Serial.println(volume);

}

代码可以像任何其他草图一样通过USB上传到Arduino Uno开发板。

pIYBAF_-ryCAapBNAADpkr0VSMQ204.png

代码将使用串行通信连接您的计算机。因此,在代码成功上传到Arduino Uno之后,我们需要打开并设置串行监视器。您将在Tools > Serial Monitor中找到串口监视器工具。

pIYBAF_-ryyAQH32AAFRaRzI2TM387.png

打开串口监视器后,请确保使用窗口右下角的下拉列表将波特率设置为9600。当草图开始运行时,您应该看到来自Arduino的消息,其中包含控制无线电的说明。

pIYBAF_-rzaAbsQ0AADgsjXJB3w293.png


控制收音机

Arduino Uno通过串口与计算机通信,以便接收命令并发送反馈。当草图首次开始运行时,Arduino将使用用于控制系统的各种命令向串行监视器打印指令。

连接可选天线

如果您发现系统很难接收无线电台,您可以通过将天线连接到分线板上的ANT引脚来提高Si4703的性能。 如果您希望收听的电台在您所在地区有强烈信号,则天线不是绝对必要的。 但是,天线对于拾取更远的信号非常有用。

天线由单根导线制成。 电线可以焊接到FM Tuner Basic Breakout上的ANT引脚上,也可以用鳄鱼夹固定。 连接天线后,您应该能够更轻松地接收无线电信号。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • pcb
    pcb
    +关注

    关注

    4220

    文章

    22472

    浏览量

    385747
  • FM收音机
    +关注

    关注

    2

    文章

    26

    浏览量

    14436
收藏 人收藏

    评论

    相关推荐

    小安派-UNO-ET485 Arduino开发板简介

    前面几款小安派出来的时候,经常有粉丝询问是否支持Arduino?其它款小安派也是支持的,大家可以去安信可社区搜索查看,小安派-UNO-ET485 Arduino开发板来了,兼容
    的头像 发表于 12-03 09:58 477次阅读
    小安派-<b class='flag-5'>UNO</b>-ET485 <b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>简介

    车载AM/FM收音机电路设计

    电子发烧友网站提供《车载AM/FM收音机电路设计.doc》资料免费下载
    发表于 11-20 11:33 4次下载
    车载AM/<b class='flag-5'>FM</b><b class='flag-5'>收音机</b>电路设计

    网络收音机原理图

    通过网络流媒体进行接收。 2. 可接收的频率和内容:普通收音机主要用于接收广播电台的无线电信号,可以收听调频(FM)和调幅(AM)广播电台。而网络收音机可以通过互联网接收来自世界各地的广播电台、音乐流媒体服务、播客等广播内
    发表于 11-09 08:31 0次下载
    网络<b class='flag-5'>收音机</b>原理图

    S66E六管超外差式调幅收音机制作报告

    电子发烧友网站提供《S66E六管超外差式调幅收音机制作报告.doc》资料免费下载
    发表于 10-13 10:04 0次下载
    S66E六管超外差式调幅<b class='flag-5'>收音机制作</b>报告

    使用TDA2030设计一个简单的多路有源扬声器音频系统电路

      使用TDA2030音频IC可以设计一个非常简单的多路有源扬声器音频系统电路。   这种TDA2030有源扬声器音频系统电路旨在提供最佳的声学性能,因为每个
    发表于 09-08 16:42

    制作便携式扬声器的方法,DIY制作便携式扬声器的教程

      你们都见过便携式扬声器现在变得流行,但其中大多数都非常昂贵,所以我将向您展示如何用最少的零件制作自己的便携式扬声器制作和测试只需要 1小时,并且可以在任何常用的 USB 充电器上
    发表于 07-31 16:18

    如何使用Arduino Uno和三个LED制作简单的电子蜡烛?

    在本文中,工程师展示了如何使用Arduino Uno开发板和三个LED制作简单的电子蜡烛,你可以根据需要增加LED的数量。
    的头像 发表于 07-11 09:49 1107次阅读
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b>和三个LED<b class='flag-5'>制作</b>简单的电子蜡烛?

    arduino uno制作暗/亮电平表

    电子发烧友网站提供《用arduino uno制作暗/亮电平表.zip》资料免费下载
    发表于 07-04 09:35 0次下载
    用<b class='flag-5'>arduino</b> <b class='flag-5'>uno</b><b class='flag-5'>制作</b>暗/亮电平表

    在面包板上构建一个简单的FM收音机接收器

    电子发烧友网站提供《在面包板上构建一个简单的FM收音机接收器.zip》资料免费下载
    发表于 06-30 14:51 0次下载
    在面包板上构建一个简单的<b class='flag-5'>FM</b><b class='flag-5'>收音机</b>接收器

    索尼有源线阵列扬声器SLS-1A

    这款有源线阵列扬声器SLS-1A是大型显示设备的理想搭档。不同于传统点源式扬声器,SLS-1A旨在覆盖更大面积的聆听范围——小至公司展厅、大厅和零售区域,大至讲堂和剧院,可以为不同空间环境创造出的清晰连贯的声场。
    的头像 发表于 06-28 17:25 588次阅读
    索尼<b class='flag-5'>有源</b>线阵列<b class='flag-5'>扬声器</b>SLS-1A

    带线性刻度的DIY复古外观FM收音机

    电子发烧友网站提供《带线性刻度的DIY复古外观FM收音机.zip》资料免费下载
    发表于 06-25 15:25 0次下载
    带线性刻度的DIY复古外观<b class='flag-5'>FM</b><b class='flag-5'>收音机</b>

    Arduino Uno制作的四轴飞行器

    电子发烧友网站提供《Arduino Uno制作的四轴飞行器.zip》资料免费下载
    发表于 06-15 09:26 4次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b><b class='flag-5'>制作</b>的四轴飞行器

    调频FM收音机是如何被发明的?

    调频FM 收音机进一步改善了我们交流的方式。  根据霍华德·阿姆斯特朗的对手戴维·萨尔诺夫的说法,调频广播是“一场革命”。 
    的头像 发表于 06-12 09:25 1088次阅读
    调频<b class='flag-5'>FM</b><b class='flag-5'>收音机</b>是如何被发明的?

    这么漂亮的Arduino开发板你见过吗?

    摘要:找到几块基于Arduino UNO形状的开发板,一起来欣赏下。
    的头像 发表于 06-06 09:52 1120次阅读
    这么漂亮的<b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>你见过吗?

    基于LM555构建的AM收音机

    AM收音机围绕555定时器芯片构建。唯一的有源器件(硅、锗或其他)是 LM555。调谐由电感器和电容器完成,LM555 充当 AM 解调器和 D类功率放大器来驱动扬声器
    的头像 发表于 05-23 14:32 1381次阅读
    基于LM555构建的AM<b class='flag-5'>收音机</b>