当你想用一种比较怀旧的方式来制作时,你会选择做什么?当然是收音机!本文展示的项目将采用非常便宜的无线电模块来制作一台紧凑的Arduino调频收音机,不要认为便宜无好货,在电子的世界里一切皆有可能。
硬件概述
RDA5807M(RDA微电子公司的芯片)调频广播模块,这是非常便宜的单芯片广播调频立体声收音机模块,价格约2-5元。RDA5807M
它具有高灵敏度、低功耗、超小体积、电路外围元件少、噪声系数极小等优点,集成了RDS/RBDS 和 MPX 解码功能,频率范围:50MHz~115MHz ,RDA5807M是一款简单易用且具极高性价比的单芯片FM立体声收音模组。
RDA5807M收音机模块工作电压为2.7-3.6VDC,可以直接驱动32欧姆的耳机。同时,它还可以使用I2C总线进行控制,可以解码立体声信号和无线电数据系统(RDS)。要制作一个可控的调频收音机,可以用Arduino来对模块提供电压和控制信号,3.3V电压可以从Arduino控制板上直接获取,I2C总线可直接连接SDA和SCL使用,不需要额外电平转换。下面是基本的硬件连接图:
Arduino(这里采用Uno R3)的A4连RDA5807M的SDA,A5连RDA5807M的sck/scl引脚实现I2C控制,Arduino3.3 V直接给收音机模块供电。由于RDA5807M模块本身已经带有电阻,所以这里不需要为I2C设置上拉电阻,如果想要连接天线,可以在RDA5807M的5脚ANT上焊接一根约95厘米长的铜线,效果不错。耳机插口可以直接连接一个32欧姆的耳机,没有音频放大功能,当然我们可以通过在模块和耳机插口之间添加一个合适的音频耦合电容和可变电位器,这样可以实现滤波和音量调节功能。
初步测试
从Arduino这样的微控制器向收音机模块发送指令需要Matthias Hertel编写的库文件,这个库文件除了支持RDA5807M之外,还支持其他的广播模块,如TEA5767、SI4703和SI4705。库文件下载地址: https://github.com/mathertel/Radio/archive/master.zip.
下面是测试程序,这个程序代码包含了如何选择接收频率(setBandFrequency),设置音量(setVolume)等等功能,将代码上传到Arduino之前,一定记得修改频率,否则什么也收不到,频率可以是你当地的某一FM频率。
/*
- Arduino FM Radio with RDA5807M - Sketch for Initial Tryout - Based on a Library created by Matthias Hertel */ #include; #include ; #include ; #include ; #define FIX_BAND RADIO_BAND_FM //无线电波段 - FM #define FIX_STATION 10190 //频率设置 - 101.9 MHz #define FIX_VOLUME 4 //音量 - 4 RDA5807M radio; void setup() { // 打开串口 Serial.begin(57600); Serial.println(“My FM Radio”); delay(200); radio.init(); radio.debugEnable(); radio.setBandFrequency(FIX_BAND, FIX_STATION); radio.setVolume(FIX_VOLUME); radio.setMono(false); radio.setMute(false); } void loop() { char s[12]; radio.formatFrequency(s, sizeof(s)); Serial.print(“Station:”); Serial.println(s); Serial.print(“Radio:”); radio.debugRadioInfo(); Serial.print(“Audio:”); radio.debugAudioInfo(); delay(3000); }
音量放大
为了实现音量放大,我们需要一个紧凑的音频功率放大器来集成到收音机里,这里推荐PAM8403立体声音频放大器模块,小而强大。PAM8403模块
因为PAM8403模块已经在左右声道输入电路中配置了必需的滤波电容器和可调电位器,我们直接将耳机输出(AFL和AFR)连接到PAM8403音频模块的线路输入即可。
这样一个原始的Arduino调频收音机就完成了,我们可以根据需要增加频率显示、按键控制等功能,这里暂不赘述。
全部0条评论
快来发表一下你的评论吧 !