GNU Radio 解碼/編碼 ook
使用:
* gnu radio 3.10.5
* hackrf
小牛的鑰匙工作在315mhz的ook信號
錄制信號:

解碼信號:


觀察信號在經(jīng)過complex to mag后的表現(xiàn),時域上幅值大于0.1的是1,小于0.1的是干擾,為0


故一個 位時間 大概0.251ms,那么位頻率大概是1/(0.251/1000)=3984,考慮到一般都是取整的,所以應(yīng)該是4000

多次比對發(fā)現(xiàn)信號為:1101 1110 0100 00
ook demod解碼塊大概看了下邏輯,首先根據(jù)采樣率和符號率(一個位是一個符號)算出一個位所占用的采樣點(diǎn)(判定閾值),然后當(dāng)遇到上升沿時開始累加采樣點(diǎn)數(shù)量,當(dāng)?shù)竭_(dá)閾值時判定為一個合理的上升沿或下降沿,然后將上升沿認(rèn)為是'1',下降沿認(rèn)為是'0',添加到packet中,當(dāng)遇到下一次采樣中全為0,沒有1的時候認(rèn)為是一個packet的結(jié)束,開始使用曼徹斯特編碼處理packet,當(dāng)遇到'10',也就是下降沿時判定為數(shù)據(jù)0,當(dāng)遇到'01',也就是上升沿的時候判定為數(shù)據(jù)1
也可以不用gnu radio來解碼,zhihu上有一篇文章使用inspectrum工具來解析ook
[我是怎么打開車庫門的:ASK/OOK手動解碼及重放](https://zhuanlan.zhihu.com/p/76643951)
對于ook編碼


這個映射還是很巧妙的,映射后的值在分拆后和曼徹斯特編碼的解碼邏輯是一致的
之后就是重采樣,讓每個位占據(jù)一定的采樣點(diǎn),然后一個滑動平均,將1或0的方波覆蓋在所屬的整個采樣點(diǎn)上,至此基帶完成,為了能直接輸出調(diào)制波給上面講到的ook解碼,我們還要用正弦余弦波來調(diào)制,然后分別multiply后輸出到文件中去,此時你可以試試能不能被上面的ook解調(diào)正確識別
本來我只是想玩一下hackrf和portapack的,但是我發(fā)現(xiàn),只是玩它自帶的那些功能屬實(shí)不太對味,還是需要去學(xué)習(xí)這方面的內(nèi)容,之后會去看看dsp那方面的內(nèi)容,看看能學(xué)習(xí)多少吧
ps:本人非通信專業(yè)
文章中使用的ook解碼塊:
[GitHub - jordib123/ook-demodulator: A GNU Radio real-time on-off keying demodulator](https://github.com/jordib123/ook-demodulator)
參照的ook編碼:
[GitHub - jordib123/ook-transmitter: A GNU Radio on-off keying transmitter](https://github.com/jordib123/ook-transmitter)
工程鏈接:https://pan.baidu.com/s/178iraWCh3veHZDio3oMNnQ?pwd=4ypo