1. 程式人生 > >audio 應用:聲波通訊(3)接收原理

audio 應用:聲波通訊(3)接收原理

一上來還是整個流程圖鎮樓 在這裡插入圖片描述 這裡介紹整個流程種最複雜的部分:解析。 上一篇已經實現了資料到頻率訊號的轉換,這部分就是一個逆過程,這裡需要使用幅頻變換,幅頻變換在大學都應該學過過程比較簡單,這部分就使用開原始碼去實現。 FFT 在開源能做到不錯的也就FFTW和kiss_fft ,FFTW一般使用在pc 上,他對機選效能能的要求比較高,我的板子的算力比較弱,又不能用浮點,所以還是選用了kiss_fft ,這個號稱同等算力消耗的情況下效果最好,2017年就停更了,看來也是演算法收斂到了穩定期了。 他的介紹 Kiss FFT is small no frills (just like this page) able to do fixed or floating point with just a recompile efficient enough for all but the most demanding applications distributed with an easy-going license (BSD) visit the SourceForge project for the latest code and news. 現在他已經掛在了github上了

https://github.com/bazaar-projects/kissfft 下載zip ,解壓出來 在這裡插入圖片描述 在test 有demo ,readme裡面有移植呼叫的方法,比較容易上手。 第一步:通過fft 實現資料到頻率

在這裡插入圖片描述 這裡有一個點需要注意: 這個fft 的視窗需要設定到小於輸出的資料長度,不然很容易混入到了其他頻率訊號造成識別錯誤 第二步: 頻率導資料 同樣通過查詢表實現 頻率的查詢表 頻率到資料 定義這個頻率查詢表是根據輸出定下來的,範圍不能卡的太窄,頻率會被幹擾偏移,計算也會有偏差一些的。

整個過程都是為了實現實時解析,算力足夠的都是非實時的,也就是先把資料儲存下載,在裡面通過頻率和幅度查詢資料,那樣做會簡單很多,也有很多為了降低誤碼想了辦法: 1.設定起始位和結束位 2.編碼 3.增加crc 解決單bit的錯誤 4.增大到高頻範圍,頻率的混疊出現概率降低。 5.減少單次多bit 的傳輸,每次傳輸控制在30bit,極端請款有4bit 就結束的 。。。。 做到原理通了能用的階段容易,優化的路無止境。