樹莓派發射FM波——搭建私人小電臺

樹莓派的應用十分普遍,有不少奇思妙想的應用很是有趣,在這裏咱們想實現一個小電臺的功能,可是在這裏須要說明,私人架設電臺是違法行爲,因此本案只做爲自我娛樂所用,不能發射大功率的信號干擾正常的FM頻段。php

  這裏須要用到一個開源的小軟件PiFmRds" target="_blank">PiFmRds,這個小軟件最先是由兩位外國朋友Oliver Mattos and Oskar Weigl 開發的,後來,Richard Hirst把這個小軟件改爲由DMA實現,減小了CPU資源的佔用。再後來Christophe Jacquet繼續修改軟件,添加了RDS數據生成器和調製器,發射器使用Raspberry Pi的PWM發生器產生VHF信號,該軟件與Raspberry Pi 一、2和3都兼容。css

  該小軟件依賴sndfile庫,首先安裝該庫:git

  1. sudo apt-get install libsndfile1-dev

  接下來克隆小軟件的源碼:github

  而後進行編譯:bash

  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米。spa

  在pi_fm_rds源碼目錄中有五個wav聲音文件做爲示例,能夠執行以下命令播放音頻。code

  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/

相關文章
相關標籤/搜索