nRF52832蓝牙概述

news2024/7/31 4:06:23

基本概念

RSSI(Received Signal Strength Indicator)是接收信号的强度指示。
接收包RSSI是指无线模块发送信息后,接收端的无线模块接收到数据后,当前接收数据的信号强度的寄存器值,也就是接收模块获取到发送模块当前发送的信号强度。

dbm是无线信号的强度单位。一般在 -90 ~ 0之间。
一般情况下:
-50~0之间信号强度很好,使用感知好。
-70~-50之间信号强度好。使用感知略差,但体验上无明显影响。
-70以下 信号就不是太好了,使用上感知就不好。

为什么测量出来的dbm值都是负数?
答:首先我们需要知道的是无线信号dbm都是负数,最大是0。因此测量出来的dbm值肯定都是负数。dbm值只在一种情况下为0,那就是在理想状态下经过实验测量的结果,一般我们认为dbm为0是其最大值,意味着接收方把发射方发射的所有无线信号都接收到了,即无线路由器发射多少功率,接收的无线网卡就获得多少功率。当然这是在理想状态下测量的,在实际中即使将无线网卡挨着无线路由器的发射天线也不会达到dbm为0的效果。所以说不要盲目的认为负数就是信号不好。

关于蓝牙协议栈的分层结构说明,参考:

蓝牙协议栈分层_蓝牙协议栈有几层组成?各层的协议有哪些?_wwwlyj123321的博客-CSDN博客

这篇文章可以作为入门来看。

其中:

GAP层(Generic access profile)通用访问文件层

GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种,而且是最简单的那一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP目前主要用来进行广播,扫描和发起连接等。

GATT(Generic attribute profile )通用属性配置文件层
GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境,成了出货量最大的2.4G无线通信产品。

GATT服务器和客户端

通俗地说吧,Server(服务器)就是数据中心,Client(客户端)就是访问数据者。特别说明,它与主/从设备是独立的概念:一个主设备既可以充当Server,又可以充当Client;从设备亦然。

服务器宣传它的存在,因此它可以被其他设备发现并包含客户端可以读取的数据。客户端扫描附近的设备,当它找到它正在寻找的服务器时,它会建立连接并监听传入的数据。这称为点对点通信(还有其他可能的通信模式,如广播模式和网状网络)。

句柄(Handle)就是服务数据在数据中心的地址,当所有的服务数据组织起来后,它总得有个先后顺序,某个服务的位置就是它的句柄。还是上面的类比,如果想去图书馆借阅《现代操作系统》,需要查明该书在哪一层楼,哪个房间,这就是该书的Handle。

配置文件、服务、特征、描述符

GATT配置文件规格规定了交换配置文件数据的架构。此架构定义了配置文件所用的基本元素,例如服务和特征。

该层级的最高层是配置文件(profile)。配置文件由实现用例所需的一个或多个服务组成。服务由特征或有关其它服务的引用组成。每一个特征包括一个值,还可能包括有关该值的可选信息。服务、特征以及特征的组件(即特征值和特征描述符)构成了配置文件数据,并全部存储在服务器的属性中。

总结来说就是,蓝牙中,定义了一个ATT属性协议,规定了怎样去访问对端设备的数据。

数据存储在属性服务器的“属性”里,供客户端进行读写操作。

属性里存储了好多配置文件,每个配置文件就是各种服务的集合,服务里又有好多特征值。

比如,传感器的温度、湿度数据,就是特征值,这些特征值组成一个服务(即从机能够提供的功能),再往上组成一个配置文件,都存在属性服务器里。

这里注意下,什么是特征的描述符?简答来说就是对该特征的一些描述信息等等。

具体参考:蓝牙 服务,特性,描述符,属性条目_蓝牙特征表_zhuimeng_ruili的博客-CSDN博客

服务存在于从机中,每个服务代表从机的一个能力;

特征的数值就是我们最终要操作的数据。

蓝牙的UUID

可参考:蓝牙小知识:UUID 是什么 - 物联网技术分享

UUID是“Universally Unique Identifier”的简称,通用唯一识别码的意思。对于蓝牙设备,每个服务都有通用、独立、唯一的UUID与之对应。

比如,设备名称的UUID为0x2A00,是固定的,蓝牙协议里规定的。

当然,也可以自定义。具体见上方参考文章。

MTU

最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸。是包或帧的最大长度,一般以字节记。如果MTU过大,可能会发送失败,因为它不能处理过大的包。如果太小,因为协议一定要在包(或帧)上加上包头,那实际传送的数据量就会过小,这样也划不来。大部分情况下系统会提供给用户一个默认值,该值一般对用户是比较合适的。

透传

透传是一种透明传输,是一种形象的说法。它指的是,数据从发送端发出,不管中间经过多少设备,最终到达目的地时,依然是原封不动的,这就好像数据是直接从发送端设备到达目的地设备,中间所经过的路径对于发送方和接收方来说,就好像是不存在的一样。所以,将其形象地称之为透明传输,即透传。

这中间的所有设备总和,对数据不进行任何改变,只是单纯地转发出去。

那么就有个问题,既然只是单纯地转发,为什么还要多经过一道透传模块,而不直接发送给目的地呢?

透传一般都是无线设备用来读取远程的数据。在物物相连的物联网时代,要想实现智能设备的数据透传就需要仰仗无线透传模块的力量,可实现发送方和接收方数据的长度和内容完全一致,不需对数据做任何处理,相当于一条数据线或者串口线。

其实,就可以理解成,因为无线设备没有数据线连接,所以要想将数据发送到远程,就只能通过无线透传模块。这也是透传的主要应用。

比如:我有个蓝牙从机,已经实现了功能,现在我想通过串口给从机发命令让它工作,但是,从机又没法直接连上数据线,此时,就要通过一个透传模块,该模块可以和从机通信,我串口向无线透传模块发指令,透传模块再将指令转发给从机,从而将串口的数据,以透明传输的方式发送给从机,这时候,透传模块只是为了实现数据的传输而存在,就相当于是透明的,只是一根数据线而已,就是串口直接将数据发送给从机的。

句柄

英文是 handle

句柄(Handle)是一个用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量 。

Windows之所以要设立句柄,根本上源于内存管理机制的问题,即虚拟地址。简而言之数据的地址需要变动,变动以后就需要有人来记录、管理变动,因此系统用句柄来记载数据地址的变更。在程序设计中,句柄是一种特殊的智能指针,当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。

句柄(handle)是C++程序设计中经常提及的一个术语。它并不是一种具体的、固定不变的数据类型或实体,而是代表了程序设计中的一个广义的概念。句柄一般是指获取另一个对象的方法——一个广义的指针,它的具体形式可能是一个整数、一个对象或就是一个真实的指针,而它的目的就是建立起与被访问对象之间的唯一的联系。

简而言之,就是通过特定的句柄,去访问某个对象。

nRF52832

nRF52832是一款蓝牙芯片。其实就可以看做一个普通的单片机芯片,只是这个单片机芯片集成了一个功能完善的蓝牙模块。

蓝牙可以分为主机和从机,其实都是一块芯片,当程序里实现主机的功能(典型如扫描)时,就可以作为主机,当程序里实现了从机的功能(典型如广播)时,就可以作为从机。不要以为芯片还分为什么主机芯片和从机芯片。芯片里已经集成了主机和从机等各种功能,去相应实现一下再烧录即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/715011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vector - CAPL - 数据库和CAPL_01

目录 获取CAN总线报文信息 静态访问报文信息 动态访问报文信息 静态访问数据库信息 DBLookup(Access Message & Signal) 1、报文类型信息 2、类型信息 3、节点信息 获取CAN总线报文信息 我们在做CAN网络管理或者通信的测试的过程中&#xf…

LLM prompt提示构造案例

参考: https://github.com/PlexPt/awesome-chatgpt-prompts-zh 吴恩达 prompt工程应用: https://www.bilibili.com/video/BV1No4y1t7Zn prompt构造案例代码 prompt """文本分类任务:将一段用户给外卖服务的评论进行分类…

LSTM已死,Transformer永生(面试问答RNN/LSTM/Transformer)

计算机视觉面试题-Transformer相关问题总结:https://zhuanlan.zhihu.com/p/554814230 计算机视觉面试31题 CV面试考点,精准详尽解析:https://zhuanlan.zhihu.com/p/257883797 1. 循环神经网络(Recurrent Neural Networks, RNN&am…

渲染颜色透明度异常分析 Unity RenderTexture

解决 Unity Canvas 相机 RenderTarget 渲染颜色透明度异常的问题 问题 重现场景 新建一个 Canvas-RT , Canvas Render Mode 改为 Screen Space - Camera 。 为 Canvas-RT 添加一个 RawImage-Origin 对象,修改颜色透明度为 120 。 修改 Camera-RT 中的 Target Textur…

如何实现Nginx+Tomcat反向代理与负载均衡

目录 一、正向代理与反向代理 正向代理 反向代理 二、负载均衡 什么是负载均衡 代码仓库定义 分流策略 权重 least_conn(最少连接) ip_hash(负载均衡模式) fair(第三方负载均衡模式) url_hash&…

算法设计与分析 课程期末复习简记

目录 网络流 线性规划 回溯算法 分支限界 贪心算法 动态规划 分治算法 算法复杂度分析 相关概念 网络流 下面是本章需要掌握的知识 • 流量⽹络的相关概念 • 最⼤流的概念 • 最⼩割集合的概念 • Dinic有效算法的步骤 • 会⼿推⼀个流量⽹络的最⼤流 下面对此依次进行复…

基于AUTOSAR的ECU启动阶段哪些事儿

AUTOSAR实战篇:EcuM启动时序大总结 前言 小T出品,必是精品! EcuM启动时序大总结,你值得拥有! 正文 正如小T前文中《AUTOSAR基础篇之EcuM》中讲到的那样,AUTOSAR架构中将ECU的上下电过程统一由单一的模块来进行统一管理,即EcuM模块。 虽然不同硬件的初始化过程不一样,但…

Redis是什么

Redis是什么 https://blog.csdn.net/Little_Oranges/article/details/121870705 1.简介 基于字典格式的。基于内存,高性能的。键值对的方式进行存储。可以存储多种数据结构类型的数据。 2.应用场景 缓存排行榜计数器分布式会话分布式锁社交网络最新列表消息系统 …

华为OD机试真题 JavaScript 实现【查找充电设备组合】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、JavaScript算法源码六、效果展示1、输入2、输出3、说明一、题目描述 某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集合P的…

Qt Quick系列(8)—Model-View—视图信号

🚀作者:CAccept 🎂专栏:Qt Quick 文章目录 前言代码示例源码关键知识点 总结 前言 在Qt Quick的Model-View中内置视图有很多,有Repeater、ListView、GridView…,而他们也有着自己的信号,比如…

WebDAV之派盘本地个人云+Documents

Documents是一款由Readdle开发的文档管理和编辑工具,支持PDF阅读、音频播放、图像浏览和标注、以及多种常见文档格式的编辑操作等。派盘是一款本地私有云产品,基于WebDAV、FTP、SMB等多种协议,提供文件存储、分享、同步、备份等服务&#xff…

【Squid一】Squid代理服务器应用

Squid代理服务器应用 1.Squid代理服务器1.1 正向代理的工作机制1.2 代理服务器的概念及其作用1.3 代理服务器主要作用1.4 Squid代理的类型 2.CDN2.1 CDN概述2.2 CDN优势2.3 CDN对网络的优化作用2.4 CDN访问过程2.5 CDN网络的组成要素 3.安装Squid服务3.1 使用脚本启动和关闭squ…

guest内核不响应导致磁盘卸载问题排查

用户问题 客户报障磁盘卸载不了,而且是经常出现卸载不了的情况,客户比较着急,同时PDD也是大客户。 排查过程 查看宿主机上虚拟机信息 1、用户虚拟机有14块磁盘,而且这14块都是以legacypci的方式插入虚拟机,我印象中…

MATLAB | 拉普拉斯分布/拉普拉斯噪声的生成

一、实验目标 生成拉普拉斯分布的噪声,并分析它的概率密度函数 二、解决思路 (1)拉普拉斯分布可以由指数分布生成 拉普拉斯的概率密度函数为 f ( x ; μ , λ ) 1 2 λ e − ∣ x − μ ∣ λ f(x;\mu,\lambda)\frac{1}{2 \lambda} e^{…

创建启动前端vue与后端python/flask,前后端分离,相互传递参数

创建启动vue 确保你已经安装了Node.js和npm 安装vue npm install -g vue/cli创建vue项目: vue create my-project cd my-project启动vue npm run serve如果安装vue报错:管理员权限模式打开powershell Windows PowerShell 版权所有(C&#…

windows怎么查看目标文件.o and windows - 如何使用/安装 GNU binutils (objdump)

GNU binutils-objdump工具 一、windows怎么查看目标文件.o二、安装GNU binutils (objdump)三、使用GNU binutils (objdump)参考资料 一、windows怎么查看目标文件.o 可以使用GNU binutils (objdump)进行查看编译生成的目标文件.o。 二、安装GNU binutils (objdump) 点击下载…

Apache Airflow 多个 Provider 存在漏洞

项目介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖…

辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范

XPilot Parking 自动泊车系统 • 超级自动泊车辅助(Super AutoParking Assist)、语音控制泊车辅助(Autoparking with Speech) - 产品定义 超级自动泊车辅助是⼀个增强的自动泊车辅助系统。在超级自动泊车辅助系统中,识别车位将会变得实时可见, 并且不可泊入的⻋位也将…

zynq系列器件使用vivado配置国产内存

zynq系列器件使用vivado配置国产内存 一、镁光公司器件命名的含义二、紫光公司器件命名的含义二、国产ddr(SCB13H8G162BF-13KI)和镁光(MT41K512M8-125)ddr参数对比三、vivado参数填入 一、镁光公司器件命名的含义 以MT41K512M8-1…

代码随想录算法训练营第六天 | 哈希表系列2(两数之和--四数相加II--三数之和--四数之和)

哈希表系列2 1 两数之和本题思路代码随想录的代码力扣的示例代码 454 四数相加II本题思路代码随想录的代码力扣的示例代码 15 三数之和本题思路代码随想录的代码力扣的示例代码 18 四数之和代码随想录的代码力扣的示例代码 1 两数之和 给定一个整数数组 nums 和一个整数目标值…