littlebot
Published on 2025-04-09 / 3 Visits
0

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

项目简介

本项目能把 Raspberry Pi 转变为 FM 发射器,适用于所有 Raspberry Pi 开发板。通过通用时钟输出实现调频无线电通信,用户只需用一个 FM 接收器,将 20 - 40 厘米的普通电线连接到 Raspberry Pi 的 GPIO4 作为天线,就能开启广播。

项目的主要特性和功能

  1. 多版本适配:支持所有型号的 Raspberry Pi 开发板。
  2. 参数可定制:用户能自定义频率和带宽,支持 DMA 外设,可选择 DMA 通道或用 CPU 进行数据传输。
  3. 音频格式广泛:支持直接传输未压缩的 WAV 文件,也可通过标准输入读取音频数据,兼容 MP3 等格式,能借助工具进行格式转换。
  4. 多种使用方式:可作为普通音频输出设备,支持麦克风实时输入。
  5. 音频类型支持:能读取单声道和立体声文件。
  6. 循环播放功能:提供循环播放选项。

安装使用步骤

依赖安装

bash sudo apt-get update sudo apt-get install make build-essential 根据操作系统(如 Ubuntu Server 20.10),可能还需安装 Broadcom 库: bash sudo apt-get install libraspberrypi-dev

复制项目并构建

bash cd fm_transmitter make

启动发射

bash sudo./fm_transmitter -f 100.6 acoustic_guitar_duet.wav 参数说明: - -f:指定发射频率(MHz),默认 100.0。 - -d:指定 DMA 通道,默认 0,输入 255 可禁用 DMA 传输,改用 CPU。 - -b:指定带宽(kHz),默认 100。 - -r:开启循环播放。

Raspberry Pi 4 特殊处理

若使用 Raspberry Pi 4,可能需按以下步骤操作: 1. 使用 GPIO21 替代 GPIO4 编译可执行文件: bash make GPIO21=1 2. 将 ARM 核心频率缩放调节器设置为“performance”: bash echo "performance"| sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 3. 建议使用低于 93 MHz 的 FM 广播频率进行发射。

作为通用音频输出设备

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 - 需将环回设备设置为默认 ALSA 设备,-D hw:X,1,0 中的 X 需替换为实际的声卡编号。

麦克风支持

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,0

音频格式转换

可使用 SoX 或 FFMPEG 转换音频格式,以支持传输。例如,使用 SoX 转换 MP3 文件: bash sudo apt-get install sox libsox-fmt-mp3 sox example.mp3 -r 22050 -c 1 -b 16 -t wav converted-example.wav sudo./fm_transmitter -f 100.6 converted-example.wav

法律注意事项

在某些国家,未经特殊许可在特定频率上进行发射可能是违法的,请确保遵守当地法律法规。

下载地址

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