登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
[SDR] 蓝牙专项教程 —— 从 0 到 1 教小白基于 SDR 编 ...
[SDR] 蓝牙专项教程 —— 从 0 到 1 教小白基于 SDR 编写蓝牙协议栈
[ 复制链接 ]
懵诬哇
2025-6-3 10:52:18
目录
前言
一、开题之作
二、动态发送 BLE 广播包
三、基于 PlutoSDR 实现 BLE 广播包的收发一体能力
四、基于 PlutoSDR 的 BLE 广播包的收发实现接入涂鸦智能 APP
教程列表
基础教程:
综合教程:
SDR 小工具教程:
基础块教程:
视频和博客
前言
之前我已经陆续出了 3 篇蓝牙收和 2 篇蓝牙发的视频,将蓝牙 BLE 广播收发的协议栈讲的非常清楚了:
图片来源:https://www.beautifulzzzz.com/gnuradio/
这里将其单独拎出来组成一个 BLE + SDR 的专题,用于汇总关于蓝牙协议栈在 SDR 上实现的各种技术点。
一、开题之作
为了方便后续代码构建,我将之前零零散散的关于 BLE+SDR 的相关工程代码,全部合并到一个独立仓库中 auto_test_tool。
PS:
这个仓库是之前我的一个很老的仓库,用于编写一些简单的自动化测试的 python 串口工具,因为里面有些组件整合适合 BLE 广播包的解析与发送,因此就在这里附加了。
为了防止后续的课程对代码修改导致老课程不方便复现,我这里每个课程都会生成一个 tag,这样每个课程都可以拉取对应的 tag 来还原现场。比如,我们这个开题之作采用的是 ble_course_1,因此可以使用下面三种方式拉取代码:
方法命令备注httpsgit clone --branch ble_course_1 https://github.com/nbtool/auto_test_tool.git小白懂 git 但不懂 sshsshgit clone --branch ble_course_1 git@github.com: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
教程列表
基础教程:
[1]. GNU Radio 系列教程(一) —— 什么是 GNU Radio
[2]. GNU Radio 系列教程(二) —— 绘制第一个信号分析流程图
[3]. GNU Radio 系列教程(三) —— 变量的使用
[4]. GNU Radio 系列教程(四) —— 比特的打包与解包
[5]. GNU Radio 系列教程(五) —— 流和向量
[6]. GNU Radio 系列教程(六) —— 基于层创建自己的块
[7]. GNU Radio 系列教程(七)—— 创建第一个块
[8]. GNU Radio 系列教程(八)—— 创建能处理向量的 Python 块
[9]. GNU Radio 系列教程(九)—— Python 块的消息传递
[10]. GNU Radio 系列教程(十)—— Python 块的 Tags
[11]. GNU Radio 系列教程(十一)—— 低通滤波器
[12]. GNU Radio 系列教程(十二)—— 窄带 FM 收发系统(基于ZMQ模拟射频发送)
[13]. GNU Radio 系列教程(十三)—— 用两个 HackRF 实现 FM 收发
[14]. GNU Radio 系列教程(十四)—— GNU Radio 低阶到高阶用法的分水岭 ZMQ 的使用详解
[15]. GNU Radio 系列教程(十五)—— GNU Radio GFSK 模块
[16]. GNU Radio 系列教程(十六)—— GNU Radio 的调试利器 Message Strobe
[17]. GNU Radio 系列教程(十七)—— GNU Radio PDU TX 利用三个块实现最小的数据包(帧头+数据+校验)
[18]. GNU Radio 系列教程(十八)—— GNU Radio PDU TX 将帧头和 payload 消息合并为数据帧
[19]. GNU Radio 系列教程(十九)—— GNU Radio PDU TX 将最小数据帧实施脉冲突发整形填充 --> 让帧更稳定
[20]. GNU Radio 系列教程(二十)—— GNU Radio PDU TX 根升余弦深度介绍&发送数据帧的收尾之作
[21]. GNU Radio 系列教程(二一)—— GNU Radio PDU RX 利用相关性估计器寻找数据帧的起始位置
[22]. GNU Radio 系列教程(二二)—— GNU Radio PDU RX 利用多相时钟同步块实现消除时钟偏移
[23]. GNU Radio 系列教程(二三)—— GNU Radio PDU RX 利用自适应线性均衡器消除 ISI
[24]. GNU Radio 系列教程(二四)—— GNU Radio PDU RX 利用 Costas Loop 校正相位和频率偏移
[25]. GNU Radio 系列教程(二五)—— 硬核,基于通信原理设计一个文件传输系统
[26]. GNU Radio 系列教程(二六)—— 开胃菜,hackrf 发送 ble 广播包的简单 DEMO
综合教程:
[1]. SDR 教程实战(一) —— 利用 GNU Radio + HackRF 做 FM 收音机
[2]. SDR 教程实战(二) —— 利用 GNU Radio + HackRF 做蓝牙定频测试工具(超低成本)
[3]. SDR 教程实战(三) —— 利用 GNU Radio + HackRF + WireShark 做蓝牙抓包器(超低成本)
[4]. SDR 教程实战(四) —— 利用 GNU Radio + HackRF 手把手深入了解蓝牙协议栈(从电磁波 -> 01数据流 -> 蓝牙数据包)
[5]. SDR 教程实战(五) —— 利用 GNU Radio + LimeSDR+ WireShark 做蓝牙抓包器(上上个视频使用 HackRF)
[6]. SDR 教程实战(五) —— 利用两个 hackrf 实现大文件(视频)高速传输
SDR 小工具教程:
[1]. SDR 小工具--一分钟将吃灰的 hackrf 化作价值数千元的频谱分析仪
基础块教程:
[1]. GNU Radio 块介绍(一)-- GNU Radio 的绝对值(Abs)块
视频和博客
:
如果觉得不错,帮忙点个支持哈~
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
懵诬哇
2025-6-3 10:52:18
关注
0
粉丝关注
23
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
氛疵
9988
7
恐肩
9986
8
虽裘侪
9986
9
接快背
9986
10
里豳朝
9986
查看更多