littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于Raspberry Pi的FM发射器

项目简介

本项目以Raspberry Pi作为FM发射器,可将音频文件广播为FM信号。用户仅需连接一根20 - 40厘米的导线到Raspberry Pi的GPIO4(PIN 7)作为天线,就能轻松实现FM广播。此项目基于Oliver Mattos和Oskar Weigl的原始想法,并做了扩展与优化。

项目的主要特性和功能

  • FM广播:能把音频文件广播成FM信号。
  • 频率和带宽设置:用户可自定义广播的频率与带宽。
  • DMA支持:借助DMA(直接内存访问)进行数据传输,提升效率。
  • 多平台支持:适用于所有Raspberry Pi型号。
  • 音频格式支持:可直接传输未压缩的WAV文件,还能从标准输入读取音频数据。
  • 麦克风支持:支持实时麦克风输入,并将其转换为FM信号广播。
  • 循环播放:支持音频文件循环播放。

安装使用步骤

1. 安装依赖

更新系统并安装必要依赖: bash sudo apt-get update sudo apt-get install make build-essential 依据操作系统,可能需安装Broadcom库: bash sudo apt-get install libraspberrypi-dev

2. 复制并编译项目

复制项目仓库并编译可执行文件: bash cd fm_transmitter make

3. 开始广播

编译成功后,使用以下命令开始广播: bash sudo ./fm_transmitter -f 100.6 acoustic_guitar_duet.wav 参数说明: - -f frequency:指定广播频率(默认100.0 MHz)。 - acoustic_guitar_duet.wav:要广播的WAV文件。 其他选项: - -d dma_channel:指定使用的DMA通道(默认0),输入255以禁用DMA。 - -b bandwidth:指定带宽(默认100 kHz)。 - -r:循环播放音频文件。

4. 接收广播

广播开始后,将FM接收器调至设定频率即可收听。

5. 其他功能

Raspberry Pi 4 特定设置

在Raspberry Pi 4上,需进行如下设置确保广播正常: 1. 使用GPIO21代替GPIO4: bash make GPIO21=1 2. 调整ARM核心频率: bash echo "performance" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 3. 使用低于93 MHz的FM广播频率。

使用为通用音频输出设备

通过加载snd-aloop模块,将输出从环回设备流式传输到发射器应用程序: bash sudo modprobe snd-aloop arecord -D hw:1,1,0 -c 1 -d 0 -r 22050 -f S16_LE | sudo ./fm_transmitter -f 100.6 - &

麦克风支持

使用麦克风实时输入: bash arecord -D hw:1,0 -c 1 -d 0 -r 22050 -f S16_LE | sudo ./fm_transmitter -f 100.6 - 性能下降时,用plughw:1,0代替hw:1,0bash arecord -D plughw:1,0 -c 1 -d 0 -r 22050 -f S16_LE | sudo ./fm_transmitter -f 100.6 -

6. 支持的音频格式

支持直接传输未压缩的WAV文件,也可从标准输入读取音频数据。如使用MP3文件: bash sudo apt-get install sox libsox-fmt-mp3 sox example.mp3 -r 22050 -c 1 -b 16 -t wav - | sudo ./fm_transmitter -f 100.6 - 若遇“数据损坏”错误,可用SoX或FFMPEG转换: bash sox example.mp3 -r 22050 -c 1 -b 16 -t wav converted-example.wav sudo ./fm_transmitter -f 100.6 converted-example.wav 或使用FFMPEG: bash ffmpeg -i example.webm -f wav -bitexact -acodec pcm_s16le -ar 22050 -ac 1 converted-example.wav sudo ./fm_transmitter -f 100.6 converted-example.wav

法律声明

在某些频率上进行广播可能需要特殊许可,请确保遵守当地法律法规。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】