You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
7.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
layout: post
title: 用树莓派自制FM电台
tags: [树莓派, 电台, FM]
---
无线电还挺有意思啊。<!--more-->
# 起因
其实我在很早以前就知道树莓派可以当广播电台了,但是我由于我作死的最早开始用的系统是[piCore](/2020/12/07/picore.html)而且感觉它功能够用就再没换回成官方系统。然而树莓派很多有趣的项目都是基于官方系统而不是不知名的发行版制作的所以实际上虽然我知道树莓派有能力成为电台但是从来没有试过。然后最近突然想试试看所以就把Raspberry Pi OS lite又下载回来刷到卡里想试试看做个电台怎么样。
# 树莓派电台软件的选择
一般从网上找教程的话好像推荐直接安装[rpitx](https://github.com/F5OEO/rpitx)不过我看这个项目有段时间没有更新了虽然功能好像更强大吧……不过我目前就只用的是FM电台的功能我更希望它的电台功能更强大所以我又看了看别的项目。我最先看的是[fm_transmitter](https://github.com/markondej/fm_transmitter)这个项目根据文档所述的方法安装之后确实能用不过在整这个项目的时候因为我没有杜邦线传输距离很短大概信号范围也就1m左右吧。后来我又搜了一下找到了[PiFmAdv](https://github.com/miegl/PiFmAdv)这个项目,它看起来是基于[PiFmRds](https://github.com/ChristopheJacquet/PiFmRds)项目改编升级的功能多了很多但是我不知道这个作者是怎么想的原来的项目还支持ARM64(aarch64)结果改完之后反倒不支持了😓最开始我怎么编译都不通过后来看了一眼Makefile发现不太对劲然后我就简单改了一下参数总算可以编译通过了。这一点我已经[提了issue](https://github.com/miegl/PiFmAdv/issues/93)不知道作者会不会改如果不会改的话大家要是想在64位的树莓派系统上运行需要注意改一下Makefile。
# PiFmAdv的体验
用了一下PiFmAdv之后发现这个清晰度真的和项目描述一样音质比fm_transmitter好了很多也没有杂音了。后来我又看了看文档发现它最多支持同时通过3个GPIO接口发射信号于是我试了试用以下命令启动
```shell
sox audio.mp3 -t wav - repeat - | sudo ./pi_fm_adv --audio - --freq 108.0 --power 7 --gpio 4 --gpio 20 --gpio 32 --rds 0
```
信号也真的好了很多。这下一下就让我起了兴趣于是就去淘宝上买了点杜邦线回来当天线。按照说明来看这个程序只能在GPIO的4、20和32号口输出信号貌似是用到了GPCLK的功能所以只能用这些针脚。4号和20号口很容易找具体位置可以看下面我打"x"的位置:
```
,--------------------------------.
| ooooooooooooooooooxo J8 +====
| 1ooxoooooooooooooooo | USB
| +====
| Pi Model 3B V1.2 |
| +----+ +====
| |D| |SoC | | USB
| |S| | | +====
| |I| +----+ |
| |C| +======
| |S| | Net
| pwr |HDMI| |I||A| +======
`-| |--------| |----|V|-------'
```
但是32号口我是怎么找都没找到在网上各种查资料都没有找到32号GPIO口……可能它是走的板子内的某根线吧……
具体要接多长的天线呢我看一般人推荐就接一节杜邦线就行了大概10cm当然这我肯定不会满足我查了一下相关原理好像说4号口理论上接1.5m长的天线可以最大化利用它的能力所以我就直接买的公对母的线接了2条大概1.4m的线接到了4号和20号口打开一试信号真的一下就扩展到了将近1km的样子我用手机的收音机功能测试在只有1道墙隔开的情况基本上1km没有任何问题如果隔得墙多了大概只能到50m左右。不过这个发射信号的能力倒是比WiFi强了不少估计是因为频率比较低吧。
这个程序不仅支持发射音频信号还能发射RDS数据不过很遗憾我没有接收RDS数据的设备所以我也测不了……
# 可能的风险与危害
首先个人发射无线电波在很多国家都是违法的我搜了一下大多数国家在电台频段个人发射的功率限制基本上连1mW都不到树莓派一个针脚最大发射电流是16mA和电压3.3V相乘就要接近50mW了所以要想玩的话要么就不要接天线或者说不要接太长的天线或者不要开时间太长免得被别人搜到还有就是不要占用有信号的频道一是自己听着也乱二是这样如果有人在用更容易被发现。另外不推荐设置超过87-108Mhz的频率一是这样中国的收音机也接收不到二是再往上就要到航空用频道再往下就可能到军用频道的那些频道占用的话还是挺危险的所以一般给无线电爱好者分的频段好像都在300-400Mhz的样子当然这样那就不是FM电台了在那个频段的好像都是对讲机啥的。所以最终还是推荐别开时间太长而且不推荐播小广告啥的放音乐一般好像没人管播广告那就是妥妥的“黑广播”了。
另外还有可能的危害比如说假如有人在飞机上在航空频段开广播,这个程序可是没有限制频率的,那可能真的可以让飞机驾驶舱播广播,这可就不是小问题了。严重的可能飞行员就只能迫降了,毕竟要是听不清塔台的信号那还是有大问题的。
# 来点阴谋论
综上所述我觉得从权力机构的层面可能因此有限制无线电知识的情况。其实普通人想发射无线电是非常容易的事情有电流通过的地方就有电磁波这么说来那我觉得不只是树莓派这种连接虚拟与现实的设备能做得到发射无线电但凡是有导线能改变通电状态的设备理论上应该都可以。那我是不是用扬声器USB线等能传输信号的设备都可以发射这让我想起了Fabrice Bellard大神写的一个[用VGA显卡来发射DVB-T信号的程序](https://bellard.org/dvbt/)那个程序应该说是非常厉害了我觉得理论上我用扬声器发射FM信号这种事情应该是能做到的就是不知道声卡能不能不解码直接向扬声器发射电流另外还有个好处就是树莓派实际上是用PMW模拟的FM信号而扬声器是可以调整电流大小的理论上实现可能更简单吧……其实要是说呢以前的手机是支持当作FM电台的现在就都不支持了所以我觉得说不定不是大家做不出来这样的程序而是做出来的人都消失了😂。希望能有大佬给点力吧能把这种软件多开源点出来。
# 感想
感觉无线电还挺有意思的,要不然回头学一学考个业余电台操作证书?我之前还看过一位大佬[用卫星和世界各地的人通信](https://blog.aoaoao.me/p/amateur-satellite/),感觉真的非常厉害。不过在这里面有好多法律的限制还挺麻烦的……可能也就只能自己玩玩了吧。