轉載請註明文章出處和作者!
出處:http://blog.csdn.net/xl19862005
作者:大熊(Xandy)
寫在最前:
自從發布android音頻通訊的兩篇部落格之後,有很多同仁和有意向合作的人士聯絡過我,在這裡首先深表感謝與支援!但也有一部分朋友希望提供源碼和相應的技術資料等等,在這裡我要說說我個人對國內目前IT行業的一些風氣及看法。
任何一項技術的出現與發展都有一個過程,然而在這個過程的背後卻是技術人員無數個日日夜夜的艱辛付出(如果這項技術完全是您自主研發的,而不是copy!),然而在國內IT行業就有相當一部分公司和技術人員總是希望從別人那裡獲得免費的午餐,而不是借鑒別人的思路與提示再經過自己的努力做出自己的產品,所以每當看到有同行留言或給我發信件說能不能提供源碼之類的文字,就讓我感到心寒,隱約中感覺到這些人都帶著一種浮躁的心情,恨不得天上掉餡餅、一夜就能爆富!也許帶著這種心情,中國再過100年也造不出國產的飛機發動機!
……扯遠了,回到正題!
前面兩篇我介紹了FSK資訊的調製與解調,單片機端的調製解調都是比較簡單的,搞過串口通訊之類的我相信一看就懂了,這裡就不多提了,關於手機端的解調,應該是大多數人比較頭疼的,因為受到手機的限制(手機能夠接受到的音頻資料只能是通過MIC),對送入的調製訊號無法像單片機端那樣可以通過操作單片機的IO和片內資源很容易就把調製訊號解調出來,對於手機這端經過MIC採樣之後將是一大堆一大堆的資料(AD值),如何在這麼一大堆看似雜亂無章的資料裡提取出來我們的碼元呢?
這裡我提一項技術——DSP
DSP(數字訊號處理)在近現代中才發展起來的,特別是香農提出的採樣定理:
如果訊號是帶限的,並且採樣頻率高於訊號頻寬的一倍,那麼,原來的連續訊號可以從採樣樣本中完全重建出來。
為數字通訊奠定了理論基礎,及後來出來的一系列編碼、解碼(信源編碼、通道編碼)技術,才有了我們現在可隨時隨地上網聊天(GSM、CDMA等)
有了這些論理基礎,我們的音頻通訊,手機端的接收也就不成問題了
在我的設計中,單片機端用1250HZ及1250*2HZ兩種頻率來調製我的bit 0與1,下面是經過FFT變換之後得到幅頻特性曲線圖
在這裡我用的採樣率是8000,進行64點FFT運算,標示的是傳輸0x55的前半位元組,怎麼看出呢?
(8000/64)*10 = 1250 ——> 0
(8000/64)*20 = 2500 ——> 1
(8000/64)*10 = 1250 ——> 0
(8000/64)*20 = 2500 ——> 1
可以看出每個圖中的一個高脈衝(幅度最大點)就是我們傳送資料時的調製頻率,只要合理處理這些FFT變換之後的頻譜資料,就可以解調出來我們在單片機端發送的碼元了!
可能有眼尖的人會問,你不是說的64點FFT變換嗎,怎麼裡都是32點的資料?那麼請作出這樣疑問的人補補FFT變換的相關的一些知識吧,我相信維基百科(BS
baidu,一搜一堆廣告),會比我
講得更詳細清楚!
是手機版音頻分析儀:
我這裡只是一個拋磚引玉的小文章,希望能給你一些提示與指引,如果希望提供原始碼的還請繞道!謝謝。
如果有希望合作的可以給我發訊息!
最後上一張圖,是DEMO板,已經實現雙向通訊,目前支援的手機有:
MOTO裡程碑2
魅族M9
三星 Galaxy SIII I939D
我定義的音頻通訊協定(就叫它A2B:audio to baud協議吧)一些效能指標如下:
速率: 0.3~6kbps 最佳工作速率2kbps-4kbps
誤碼率:1/10000(需要進一步測試,各個手機不太一樣)
其它的後續陸續測試更新!
最新變種版調製解調 apk
http://download.csdn.net/download/xl19862005/5333232