[SDR] 蓝牙专项教程 —— 从 0 到 1 教小白基于 SDR 编写蓝牙协议栈

目录

    • 前言
    • 一、开题之作
    • [二、动态发送 BLE 广播包](#二、动态发送 BLE 广播包)
    • [三、基于 PlutoSDR 实现 BLE 广播包的收发一体能力](#三、基于 PlutoSDR 实现 BLE 广播包的收发一体能力)
    • [四、基于 PlutoSDR 的 BLE 广播包的收发实现接入涂鸦智能 APP](#四、基于 PlutoSDR 的 BLE 广播包的收发实现接入涂鸦智能 APP)
  • 教程列表
  • 视频和博客

前言

之前我已经陆续出了 3 篇蓝牙收和 2 篇蓝牙发的视频,将蓝牙 BLE 广播收发的协议栈讲的非常清楚了:

图片来源:<https://www.beautifulzzzz.com/gnuradio/>

这里将其单独拎出来组成一个 BLE + SDR 的专题,用于汇总关于蓝牙协议栈在 SDR 上实现的各种技术点。

一、开题之作

为了方便后续代码构建,我将之前零零散散的关于 BLE+SDR 的相关工程代码,全部合并到一个独立仓库中 auto_test_tool

^PS: 这个仓库是之前我的一个很老的仓库,用于编写一些简单的自动化测试的 python 串口工具,因为里面有些组件整合适合 BLE 广播包的解析与发送,因此就在这里附加了。^

为了防止后续的课程对代码修改导致老课程不方便复现,我这里每个课程都会生成一个 tag,这样每个课程都可以拉取对应的 tag 来还原现场。比如,我们这个开题之作采用的是 ble_course_1,因此可以使用下面三种方式拉取代码:

方法 命令 备注
https git clone --branch ble_course_1 https://github.com/nbtool/auto_test_tool.git 小白懂 git 但不懂 ssh
ssh git clone --branch ble_course_1 [email protected]:nbtool/auto_test_tool.git 既懂 git 又懂 ssh
点击下载 https://github.com/nbtool/auto_test_tool/releases/tag/ble_course_1 啥都不懂

OK,开题相关的铺垫到此结束,那么硬核的东西也不能少:

如上图,我将之前的所有 BLE 广播包接收教程的代码全部重新整理,形成上图所示能兼容 hackrf、plutosdr、limesdr 和 zmq 等不同 SDR 源的蓝牙广播接收解析系统(抓包器)。

具体的教程细节见:app/app_sdr_ble_adv_rx

二、动态发送 BLE 广播包

上节我们将 BLE 广播包接收代码进行全部整理,本节我们将 BLE 广播包发送代码进行全部整理,实现每隔 1S 更换广播内容,并从零开始合成 BLE 广播 IQ 数据,然后调用 SDR 发送,实现 BLE 动态广播能力:

具体的教程细节见:app/app_sdr_ble_adv_tx

三、基于 PlutoSDR 实现 BLE 广播包的收发一体能力

本节将前两节的知识结合起来,借助具有全双工双收双发能力的 PlutoSDR 实现 BLE 广播包收发一体能力:

具体的教程细节见:app/app_sdr_ble_adv_tx_rx

四、基于 PlutoSDR 的 BLE 广播包的收发实现接入涂鸦智能 APP

本节在上一节的基础上更进一步:通过叠加 TuyaOS BeaconMesh 上层应用协议,最终实现从电磁波开始,到全双工蓝牙广播收发接入涂鸦智能,变成一个物联网 BeaconMesh 灯节点:

具体的教程细节见:app/app_sdr_tuya_beacon_node

教程列表

基础教程:

综合教程:

SDR 小工具教程:

基础块教程:

视频和博客


: 如果觉得不错,帮忙点个支持哈~