GNU Radio 解码/编码 ook
使用:
* gnu radio 3.10.5
* hackrf
小牛的钥匙工作在315mhz的ook信号
录制信号:

解码信号:


观察信号在经过complex to mag后的表现,时域上幅值大于0.1的是1,小于0.1的是干扰,为0


故一个 位时间 大概0.251ms,那么位频率大概是1/(0.251/1000)=3984,考虑到一般都是取整的,所以应该是4000

多次比对发现信号为:1101 1110 0100 00
ook demod解码块大概看了下逻辑,首先根据采样率和符号率(一个位是一个符号)算出一个位所占用的采样点(判定阈值),然后当遇到上升沿时开始累加采样点数量,当到达阈值时判定为一个合理的上升沿或下降沿,然后将上升沿认为是'1',下降沿认为是'0',添加到packet中,当遇到下一次采样中全为0,没有1的时候认为是一个packet的结束,开始使用曼彻斯特编码处理packet,当遇到'10',也就是下降沿时判定为数据0,当遇到'01',也就是上升沿的时候判定为数据1
也可以不用gnu radio来解码,zhihu上有一篇文章使用inspectrum工具来解析ook
[我是怎么打开车库门的:ASK/OOK手动解码及重放](https://zhuanlan.zhihu.com/p/76643951)
对于ook编码


这个映射还是很巧妙的,映射后的值在分拆后和曼彻斯特编码的解码逻辑是一致的
之后就是重采样,让每个位占据一定的采样点,然后一个滑动平均,将1或0的方波覆盖在所属的整个采样点上,至此基带完成,为了能直接输出调制波给上面讲到的ook解码,我们还要用正弦余弦波来调制,然后分别multiply后输出到文件中去,此时你可以试试能不能被上面的ook解调正确识别
本来我只是想玩一下hackrf和portapack的,但是我发现,只是玩它自带的那些功能属实不太对味,还是需要去学习这方面的内容,之后会去看看dsp那方面的内容,看看能学习多少吧
ps:本人非通信专业
文章中使用的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