树莓派打造mini广播(FM)系统

注意相关法律限制功率大小和频段.,以下只能用于测试目的

github项目:

https://github.com/miegl/PiFmAdv

安装:

apt-get update

`apt-get install git libsox-fmt-mp3 sox libsndfile1-dev

为了使 PLLC调制更稳定 推荐修改gpu频率来匹配安全频率.(使用pllc调制对的时候可能会使电压降低到安全电压以下可能会崩溃.) /boot/config.txt 加入 gpu_freq=250

git clone https://github.com/Miegl/PiFmAdv.git
cd PiFmAdv/src
make clean
make

测试 sudo ./pi_fm_adv 使用手机或收音机调整频率到87.6MHZ (默认频率) 默认使用gpio4 来发射信号的.但也可以修改为 4, 20, 32, 34 如修改为gpio32 使用参数 --gpio 32 即可.

因为相关法律限制我们不可以在相应的gpio发射信号口接馈线或信号传输设备!

播放在线的音频.

sox -t mp3 http://www.linuxvoice.com/episodes/lv_s02e01.mp3 -t wav - | sudo ./pi_fm_adv --audio -

也可以播放本地的音频文件如mp3格式.

sox -t mp3 test.mp3 -t wav - | sudo ./pi_fm_adv --audio -

github上很早就有大神做了网络点歌台.

https://github.com/ma6174/fmpi

该项目简介:

简介

前段时间有人发贴说用树莓派可以发射FM收音机信号, 于是便整来玩玩,发现效果还不错,于是想扩充一下功能。

网上实现的FM发射功能是有局限性的:

  • 只能播放wav格式文件,并且wav文件必须是16 bit 22.5kHz Mono格式的。
  • 只支持播放本地音频文件,或者使用-从终端读取音频

我设想的或已经实现的功能是这样的:

  • 支持mp3格式
  • 支持流媒体,或者说支持直接播放网络上的音乐
  • 可以添加音乐,方便管理
  • 可以批量添加歌曲
  • 可以播放局域网内电脑上的音乐
  • 自动根据歌名在线搜索歌曲并播放
  • 有一个web页面,允许任何人添加自己喜欢的歌曲
  • web页面显示当前正在播放的歌曲和将要播放的歌曲列表
  • 当播放列表里面没有歌曲的时候自动随机播放一首歌曲,保证连续播放
  • 可以跳过正在播放的歌曲播放下一曲

安装我做的系统之后你就可以用树莓派做服务器, 发送广播,播放流行歌曲或者英语听力(或者法律允许播放的东西) 告诉亲朋好友一个网址,然后他们就能在上面点歌。 四六级没过的朋友可以添加四六级听力,模拟真实考试环境。 或者放到敬老院里面,给老年人播放戏曲。 除此之外,只要程序运行着,你就能用收音机听到音乐, 不用天天费神去网上找歌了。 这样也为你的手机节省好多存储歌曲的空间,因为有了树莓派和我的点歌系统, 你用手机上的收音机就能听到想听的歌曲。 我的系统不会给树莓派增加任何垃圾,所有网络歌曲不缓存, 不用担心歌曲过多而将存储卡填满。

关键技术与原理

因为树莓派只支持wav格式音乐,所以要将mp3格式转换成wav格式。

但是一般软件转换效率比较低,树莓派CPU比较差,转换时间更长。

后来我找到一个比较好的解决方案,用mpg123这个软件进行解码, 解码之后输出到终端上,这时就已经转换成wav格式了。 然后树莓派的pifm程序设置成从终端读取音频, 这样再通过一个管道将两个程序连起来,就能实现一边解码一边播放

另外,mpg123的功能比较强,支持直接播放网络音乐, 也就是说,只要给mpg123传递一个歌曲url,就能实现边下载边播放

上面的文字用一条命令总结就是:

mpg123 -m -C -q -s 歌曲地址或url | sudo pifm - 频率 歌曲采样率
例如
mpg123 -m -C -q -s /home/pi/aaa.mp3 | sudo pifm - 98.5 44100
mpg123 -m -C -q -s http://abc.com/123.mp3 | sudo pifm - 98.5 44100

上面的命令看起来很简单,费了半天劲才鼓捣好,因为命令的参数很多, 组合起来让他们协调工作就需要不断尝试!

解决了这个技术难题,下面的任务就简单了,对于pythoner来说, 下面提到的东西都不叫事!^_^

简单列一下:

  • 歌曲是从搜狗mp3抓的,只要输入歌曲的名字,自动搜索,返回歌曲url
  • web管理界面用web.py实现,实时显示正在播放的歌曲和歌曲列表
  • 数据库用sqlite3,用来保存用户输入的歌曲信息,方便日后数据分析
  • 如果列表为空则从本地播放列表(文本文件)随机选一个播放

安装部署方法

为了简化安装部署,我专门写了一个安装脚本,就是setup.sh, 直接执行就能安装。(注意,本系统树莓派专用,请不要在电脑上执行此脚本)

wget https://github.com/ma6174/fmpi/archive/master.zip
unzip master.zip
cd fmpi-master
sudo bash setup.sh

这样就自动安装依赖的软件

使用方法

运行的话可以直接执行程序里面的start.sh:

sudo bash start.sh

然后在树莓派的GPIO4这个引脚上插上一根杜邦线当天线

ifconfig命令察看你的ip地址,然后在浏览器上打开:http://树莓派IP:8000/, 可以看到正在播放的歌曲,然后你可以添加你想要收听的歌曲。

打开收音机,调到FM 98.5频道,你就能听到正在播放的歌曲了!

如果感觉这首歌不好听,可以直接按树莓派的键盘的q键,自动播放下一曲

想终止程序的话按Ctrl + c

可以修改config.py修改默认的98.5这个播放频率。

转载于:https://www.cnblogs.com/lovesKey/p/11075108.html

树莓派打造mini广播(FM)系统相关推荐

  1. 树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit

    树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇二:初步配置 Home Assistant 并连接小米设备与 HomeKit 通过本篇教程,你将完成对 H ...

  2. 树莓派打造一个适合音乐制作的系统(效果器部分)

    我打算挂载LV2插件将树莓派作为效果器使用,之前我们已经创建好了I2S二进二出声卡,请详见树莓派打造一个适合音乐制作的系统(声卡部分)_huanghaoAudio的博客-CSDN博客 1.下载安装LV ...

  3. 树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇三:进阶配置 Home Assistant

    树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统 篇三:进阶配置 Home Assistant 通过本篇教程,你将完成对 Home Assistant 的进一 ...

  4. 品味树莓派:打造数字音频播放系统

    文章目录 目的 数字音频播放系统 系统安装体验 总结 目的 玩了几年Hi-Fi,PC Hi-Fi算是其中接触最多的,USB解码耳放也买过好几台.在PC Hi-Fi系统中使用USB线连接电脑和解码器等设 ...

  5. 树莓派4外置wifi天线_树莓派打造最强车载娱乐终端(1)音乐和WiFi

    开车跑长途的时候总觉得无聊,就会想起飞机上的娱乐终端,那么我们就来自己做一个吧! 这一系列文章里,我会按照功能划分,列出需要的软硬件,尽量做到互相独立,方便自由组合.今天我们先来实现最基本的音乐播放和 ...

  6. keras faster物体检测_【开源项目】特斯拉+树莓派实现车牌识别检测系统

    怎样在不换车的前提下打造一个智能车系统呢?一段时间以来,本文作者 Robert Lucian Chiriac 一直在思考让车拥有探测和识别物体的能力. 本文来源:机器视觉 怎样在不换车的前提下打造一个 ...

  7. sim插拔识别时间_特斯拉+树莓派实现车牌识别检测系统

    转自机器之心 | 作者:Robert Lucian Chiriac | 参与:王子嘉.思.一鸣 怎样在不换车的前提下打造一个智能车系统呢?一段时间以来,本文作者 Robert Lucian Chiri ...

  8. 【开源项目】特斯拉+树莓派实现车牌识别检测系统

    来源:机器之心 | 作者:Robert Lucian Chiriac 参与:王子嘉.思.一鸣 怎样在不换车的前提下打造一个智能车系统呢?一段时间以来,本文作者 Robert Lucian Chiria ...

  9. 树莓派c语言实现modbus主机_特斯拉+树莓派实现车牌识别检测系统

    转自机器之心 | 作者:Robert Lucian Chiriac | 参与:王子嘉.思.一鸣 怎样在不换车的前提下打造一个智能车系统呢?一段时间以来,本文作者 Robert Lucian Chiri ...

最新文章

  1. kohana task 编写计划任务
  2. 寒假集训【1.26】
  3. Android Canvas 图形绘制
  4. TensorFlow:实战Google深度学习框架(四)MNIST数据集识别问题
  5. 你见过的“垃圾”项目是这样子么?
  6. 分布式锁防止订单重复提交_防止表单重复提交看这里!!!
  7. 软件工程——硬件汇编程序设计实验——顺序程序实验
  8. Reg“.NET研究”exOptions.Compiled的含义和使用
  9. zk 02之 Windows安装和使用zookeeper
  10. 查询结果做缓存的例子
  11. python函数定义中参数列表里的参数是_python-函数(def)参数 及参数解构 变量 知识整理...
  12. 微服务的4大设计原则和19个解决方案
  13. 谈谈阿里log4j2事件:严重性是个主观判断
  14. drool 7.x 属性 : no-loop
  15. EChart如何实现中国地图和省份下钻
  16. 这些音乐MV制作堪称大片,看过真是值回票价
  17. 保利威视 获取回放API接口
  18. python绘制三维地形shade()参数_python中的Matplot库和Gdal库绘制富士山三维地形图-参考了虾神的喜马拉雅山...
  19. [FAST 2009]Cumulus:File System Backup to the Cloud
  20. 脱离标准流(1)浮动

热门文章

  1. 拳王虚拟项目公社:知识付费之出售虚拟教程资源赚钱,小白轻松赚钱的方式
  2. 编译安装sqlite-3.6.20【原创】
  3. Java并发编程之ConcurrentHashMap原理解析
  4. 2020解决连不上GitHub github.com port 443: Timed out
  5. C# CollectionBase,ICloneeable
  6. threejs引擎中 环境光线与管道流动
  7. 十六进制转换成字符串——CRC
  8. Java变量的初始化问题探究
  9. Linux安装使用redis
  10. 【Elasticsearch】消除 Elasticsearch 中的重复文档