zoukankan      html  css  js  c++  java
  • 树莓派发射FM波——搭建私人小电台

    树莓派的应用十分广泛,有很多奇思妙想的应用非常有趣,在这里我们想实现一个小电台的功能,但是在这里需要说明,私人架设电台是违法行为,所以本案只作为自我娱乐所用,不能发射大功率的信号干扰正常的FM频段。

      这里需要用到一个开源的小软件PiFmRds" target="_blank">PiFmRds,这个小软件最早是由两位外国朋友Oliver Mattos and Oskar Weigl 开发的,后来,Richard Hirst把这个小软件改成由DMA实现,减少了CPU资源的占用。再后来Christophe Jacquet继续修改软件,添加了RDS数据生成器和调制器,发射器使用Raspberry Pi的PWM发生器产生VHF信号,该软件与Raspberry Pi 1、2和3都兼容。

      该小软件依赖sndfile库,首先安装该库:

    1. sudo apt-get install libsndfile1-dev

      接下来克隆小软件的源码:

      然后进行编译:

    1. cd PiFmRds/src
    2. make clean
    3. make

      编译完成后,输入以下命令运行程序

    1. sudo ./pi_fm_rds

      此时就会在树莓派的GPIO 4 (40针P1接口的第7管脚)上产生FM发射波,默认频率107.9,这个辐射范围通常在100厘米左右,增加20cm的杜邦线,可以使得发射范围增加到100米。

      在pi_fm_rds源码目录中有五个wav声音文件作为示例,可以执行如下命令播放音频。

    1. sudo ./pi_fm_rds -audio sound.wav -freq 100.6

      此时就可以听到一段英文发音,这个时间非常短,只有4秒钟左右,重复执行就可以多次听到了。

      pi_fm_rds更多的应用语法如下:

      pi_fm_rds [-freq freq] [-audio file] [-ppm ppm_error] [-pi pi_code] [-ps ps_text] [-rt rt_text]

      所有参数都是可选的:

    • -freq指定载波频率(以MHz为单位)。例如:-freq 100.6。
    • -audio指定一个音频文件作为音频播放。如果提供立体声文件,则Pi-FM-RDS将产生FM立体声信号。例如:-audio sound.wav。支持的格式取决于libsndfile。这包括WAV和Ogg / Vorbis(等),但不包括MP3。
    • -pi指定RDS广播的PI代码。4个十六进制数字。例如:-pi FFFF。
    • -ps指定RDS广播的电台名称(节目服务名称,PS)。限制:8个字符。例如:-ps RASP-PI。
    • -rt指定要传输的无线文本(RT)。限制:64个字符。例如:-rt 'Hello, world!'。
    • -ctl 指定一个命名管道(FIFO)作为控制通道在运行时改变PS和RT。
    • -ppm 以百万分率(ppm)为单位指定树莓派的振荡器误差。

      如果使用参数-audio -,注意,-audio 后面是一个短横线,Pi-FM-RDS将读取标准输入上的音频数据,这允许您将程序的输出传送到Pi-FM-RDS。他有什么作用呢,这就为我们播放MP3预留了接口,例如,这可以用于使用Sox读取MP3文件:

    1. sox -t mp3 Music.mp3 -t wav - | sudo ./pi_fm_rds -audio -

      这个操作的意思是使用sox工具读取Music.mp3,转换成wav格式并输出到标准输出,同时使用pi_fm_rds来播放(发射)标准输入中的文件(流)。

      或者将声卡的AUX输入传送到Pi-FM-RDS:

    1. sudo arecord -fS16_LE -r 44100  -c 2 - | sudo ./pi_fm_rds -audio -
    2. 超级容易卡死很用CPU

      CPU使用情况如下:

      添加音频时,CPU使用率显著增加,因为程序必须将输入音频文件的采样率采样到228 kHz,即其内部操作采样率,这一动作还是非常消耗CPU资源的。

      通过以上操作,一个小小的私人电台就搭建好了,但是在此重申,搭建私人电台是违法行为,自己短时间,小范围的玩玩可以,不要干扰了正常的FM频段,否则后果很严重。

    man sox
    rec -c1 -r16000 xxx.wav可以录制音频 c指的是声道数 r值得是采样率
    play xxx.wav播放
    sox -V xxx.wav -n查看wav文件的详细参数

    example:16k的音频降采样到8k

    sox -r 16000 input.wav -r 8000 output.wav
    

    多个单通道合并为多通道: sox 1.wav 2.wav 3.wav -t wavpcm -M 4.wav # 4.wav是3通道的
    多个单通道融合为单通道: sox 1.wav 2.wav 3.wav -t wavpcm -m 4.wav # 4.wav是单通道的

    sox input.wav  -c1 output.wav mixer -l 
    

    mp3转wav
    ①安装sox:

    sudo apt-get install lame
    sudo apt-get install sox
    sudo apt-get install libsox-fmt-mp3
    

    ②转换方法
    mp3/wav等等格式转换成ogg格式:
    打开终端,输入: sox 1.mp3 1.ogg
    wav转换mp3格式:
    打开终端,输入: sox 1.wav 1.mp3




    链接:https://www.jianshu.com/p/9fb24dc60f29

    转载于:https://jingyan.eeboard.com/article/76354#/prettyPhoto%5Bpp_gal%5D/0/

  • 相关阅读:
    Electron中git, npm,webpack使用
    Luogu_2061_[USACO07OPEN]城市的地平线City Horizon
    Luogu_1080_国王游戏
    Luogu_2878_[USACO07JAN]保护花朵Protecting the Flowers
    GYOJ_1812_股票(stock)
    JXJJOI2018_三题
    JXJJOI2018_T3_catch
    JXJJOI2018_T1_market
    JXJJOI2018_T2_tank
    Luogu_2876_[USACO07JAN]解决问题Problem Solving
  • 原文地址:https://www.cnblogs.com/Frank-dev-blog/p/10659644.html
Copyright © 2011-2022 走看看