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
    +关注

    关注

    4322

    文章

    23124

    浏览量

    398504
  • FM收音机
    +关注

    关注

    2

    文章

    27

    浏览量

    14593
收藏 人收藏

    评论

    相关推荐

    自己设计的Arduino UNO R3主控原理图+PCB源文件(可直接打样)

    一年前做的Arduino UNO r3,开源精神,把自己这块板子奉献给大家,板子没有什么问题,可以直接打样制作,原理图文件都表明了型号。不用谢~ Arduino
    发表于 12-10 10:14

    基于Arduino的串口通信项目

    基于Arduino的串口通信项目涉及多个方面,包括硬件连接、软件编程、串口参数配置等。 一、硬件准备 Arduino开发板 :确保你有一块Arduino
    的头像 发表于 11-22 09:24 699次阅读

    TPA751输出接8ohm扬声器扬声器是否可以接地设计?

    TPA751输出接8ohm扬声器扬声器是否可以接地设计。
    发表于 09-29 07:12

    想使用DRV2700EVM作为一个压电扬声器驱动装置,怎么操作?

    如果我想使用DRV2700EVM作为一个压电扬声器驱动装置,从开发板的in输入口输入音频信号,从out端口输入到压电扬声器(需要30v以上的电压),我应该怎么配置开发板,或者是怎么使
    发表于 09-27 06:16

    扬声器的材质对音质有什么影响

    扬声器的材质对音质有着显著的影响,不同的材质在物理特性、声音特性以及耐用性等方面存在差异,从而直接影响扬声器的声音表现。以下将从多个方面详细探讨扬声器材质对音质的影响。
    的头像 发表于 08-08 18:20 3772次阅读

    扬声器的发声原理是什么

    扬声器的发声原理是一个涉及电声转换的复杂过程,其核心在于将电信号转化为声波,从而被人耳所接收。
    的头像 发表于 08-08 18:16 1840次阅读

    多波段和全波段收音机有什么不同

    多个频段的收音机,通常包括AM(调幅)和FM(调频)两个频段。 接收频率范围:多波段收音机的接收频率范围通常为535-1605kHz(AM)和87.5-108MHz(FM)。 接收信号
    的头像 发表于 08-06 10:17 7161次阅读

    收音机全波段的还是调频的好

    。 信息丰富:全波段收音机可以提供更多的信息来源,包括新闻、音乐、体育、教育等各种类型的节目。 可定制性高:用户可以根据自己的喜好和需求,选择不同的频道和节目。 调频收音机: 调频收音机主要接收调频(
    的头像 发表于 08-06 10:15 1969次阅读

    全波段和调频收音机怎么选择

    和调频等波段。全波段收音机可以接收来自世界各地的广播信号,包括新闻、音乐、体育赛事等。 调频收音机 调频收音机是一种专门接收调频(FM)信号的收音机
    的头像 发表于 08-06 10:09 4212次阅读

    晶体管收音机和半导体收音机哪个好

    晶体管收音机和半导体收音机都是无线电接收的一种,它们的主要区别在于使用的电子元件。晶体管收音机使用真空管,而半导体收音机使用半导体二极管或
    的头像 发表于 08-05 15:47 1987次阅读

    扬声器与音响的区别

    在音频设备领域,扬声器和音响是两个常见且容易混淆的概念。尽管它们都与声音的播放和传播有关,但在性质、作用、结构以及应用场景等方面存在显著的差异。本文将对扬声器和音响进行详细的比较和解析,旨在帮助读者更清晰地理解它们之间的区别。
    的头像 发表于 05-31 18:09 5272次阅读

    苹果公司申请一种新型MEMS扬声器或微型扬声器设计

    据麦姆斯咨询报道,美国专利商标局近日公布了一项苹果公司的新专利申请,该发明申请提出了一种新型MEMS扬声器或微型扬声器设计,苹果公司指出这种微型扬声器适用于各种智能电子设备。
    的头像 发表于 05-06 09:15 935次阅读
    苹果公司申请一种新型MEMS<b class='flag-5'>扬声器</b>或微型<b class='flag-5'>扬声器</b>设计

    蓝牙扬声器中应用的模拟功放芯片

    扬声器是一种把电信号转变为声信号的换能器件,扬声器的性能优劣对音质的影响很大。扬声器在音响设备中是一个较薄弱的器件,而对于音响效果而言,它又是一个较重要的部件。
    的头像 发表于 03-07 09:24 833次阅读
    蓝牙<b class='flag-5'>扬声器</b>中应用的模拟功放芯片

    如何使用Arduino UNO和电位控制伺服电机

    在本Arduino伺服电机教程中,您将学习如何使用Arduino UNO和电位控制伺服电机。
    的头像 发表于 02-11 10:11 2868次阅读
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>UNO</b><b class='flag-5'>板</b>和电位<b class='flag-5'>器</b>控制伺服电机

    扬声器外壳的选择技巧

     选择扬声器外壳的类型对性能有重大影响,并决定了整个扬声器系统的许多特性。
    的头像 发表于 01-30 10:49 2154次阅读