项目简介
本项目能把 Raspberry Pi 转变为 FM 发射器,适用于所有 Raspberry Pi 开发板。通过通用时钟输出实现调频无线电通信,用户只需用一个 FM 接收器,将 20 - 40 厘米的普通电线连接到 Raspberry Pi 的 GPIO4 作为天线,就能开启广播。
项目的主要特性和功能
- 多版本适配:支持所有型号的 Raspberry Pi 开发板。
- 参数可定制:用户能自定义频率和带宽,支持 DMA 外设,可选择 DMA 通道或用 CPU 进行数据传输。
- 音频格式广泛:支持直接传输未压缩的 WAV 文件,也可通过标准输入读取音频数据,兼容 MP3 等格式,能借助工具进行格式转换。
- 多种使用方式:可作为普通音频输出设备,支持麦克风实时输入。
- 音频类型支持:能读取单声道和立体声文件。
- 循环播放功能:提供循环播放选项。
安装使用步骤
依赖安装
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】