Portapack应用开发教程(七)nrf24l01解调

本文详细介绍了解调CrazyRadio模块发射的NRF24L01信号的过程,包括使用gnuradio进行FM解调、编写Python程序控制CrazyRadio发送数据、合并解调和解码程序、以及在Portapack中实现解调等功能。通过一系列实验步骤,成功实现了对小四轴遥控器指令的解调。

前段时间我在做低功耗蓝牙的时候看到了这个网页

https://wiki.bitcraze.io/misc:hacks:hackrf

但是我当时没有成功解调nrf24l01,反而成功搞定蓝牙了。

后来我用了我自己新买的小四轴也没解调成功,所以我打算老老实实地重现那个网页上的步骤。

正好我以前买过crazyflie的产品(小四轴和crazyradio模块),我就找出了这个crazyradio模块来重复实验。

期间我还看到了几个好的资源。

https://www.bitcraze.io/2015/06/sniffing-crazyflies-radio-with-hackrf-blue/

这个也是同一网站的相关内容,但是更详细。

http://blog.cyberexplorer.me/2014/01/sniffing-and-decoding-nrf24l01-and.html

这是nrf24l01和btle的解码程序作者的文章。从这篇文章,我发现nrf24l01解码程序的输入必须是2M的数据。

然后根据nrf24l01的发射机硬件选择的速率模式来决定降采样率。如果nrf24l01设置的速度是2M那么降采样率就是1,如果是1M那么降采样率是2,如果是256K那么降采样率就是8。这个值不能自动判断,需要根据发射机事先指定好。

另外在实验过程中,我还发现一个坑。gnuradio流图输出的fifo,在每次实验前都需要清空再新建,否则里面的数据就是老的。无法以此来判断是否准确解码。

我的开发计划分为4步:

1.重复实验crazyflie网页上的步骤,使用crazyradio来发射,然后用gnuradio流图来做fm解调输出给fifo,再用nrf解码程序来解码。

2.合并gnuradio的fm解调程序和nrf解码程序,这样在电脑上用一个单独的程序就能解调crazyradio发射的数据了。

3.把这个独立的程序搬到portapack里,解调crazyradio的数据。

4.用portapack去解调小四轴的遥控器指令。

目前我第一步已经实现了。

首先,我下载了crazyflie的库,这样就能用python语言来控制它,并发出自己想要的数据。

https://github.com/bitcraze/crazyradio-firmware

不用编译安装,但是需要安装一些依赖

sudo apt install python-usb

然后到lib下,可以看到crazyradio.py,这就是我们自己写的Python程序要调用的库了。

然后在同一个文件夹下新建我们自己的python程序try.py

from crazyradio import Crazyradio
import time
 
cr = Crazyradio()
cr.set_channel(26)
cr.set_data_rate(cr.DR_250KPS)
 
while True:
    cr.send_packet((0,1,2,3,4))
    time.sleep(0.1)

然后运行

sudo python try.py

这样就开始发射了。

接下来画一个流图

如果你不想自己画可以下载下面的流图,不过它的参数和我不太一样,你要把参数改成和我一样的。

https://wiki.bitcraze.io/_media/misc:hacks:nrf24_demod.grc.zip

再然后就可以参照我以前的文章,编译NRF24-BTLE-Decoder程序,就是我前面说的nrf解码程序。

搞定以后的运行顺序是:

sudo rm /tmp/fifo

mkfifo /tmp/fifo

然后运行gnuradio流图

cat /tmp/fifo | ./nrf24-btle-decoder -d 8
 

这样你就能看到终端里的这样的输出了

你可以看到大多数数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值