nRF52832蓝牙概述

news/2024/5/19 13:30:20/文章来源:https://blog.csdn.net/qq_28576837/article/details/131486645

基本概念

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.luyixian.cn/news_show_325856.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Verilog HDL】FPGA-testbench基础知识

🎉欢迎来到FPGA专栏~testbench基础知识 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能…

20230704测试STC32G实验箱9.6(STC32G12K128)开发板的虚拟串口(C语言深入了解)

20230704测试STC32G实验箱9.6(STC32G12K128)开发板的虚拟串口(C语言深入了解) 06第五集:C语言运算符和进制数入门上.mp4 07第五集:C语言运算符和进制数入门下.mp4 2023/7/4 19:00 下次 在【冲哥】录视频的时…

PSI算法极简概述

什么是隐私求交PSI 隐私求交是多方安全计算中的密码学技术,它允许数据持有方通过比较加密集合计算得到交集,且任何一方都不会获得其他信息。PSI还存在一种变体,即CS场景。客户端可以获取其与服务器的交集但是服务器无法学习到该集合。如果在…

netty学习(2):多个客户端与服务器通信

1. 基于前面一节netty学习(1):1个客户端与服务器通信 只需要把服务器的handler改造一下即可,通过ChannelGroup 找到所有的客户端channel,发送消息即可。 package server;import io.netty.channel.*; import io.netty.channel.gr…

Android Studio实现内容丰富的安卓汽车租赁平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号101 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.查…

登录校验-Filter/过滤器

过滤器 概念:Filter过滤器,是javaweb的三大组件(servlet,Filter,Listener)之一 作用:可以把对资源的请求拦截下来,从而实现一些特殊的功能 过滤器的常见操作:登录校验,统一编码&…

Word公式大括号左对齐

1、大括号公式如下: 2、依次选中每一行,然后在开头输入一个&,然后回车: 3、当最后一行输入完立马可以发现左对齐了: The higher I got, the more amazed I was by the view.

win下实现Linux的tab自动补全

声明 :如果不是确定的话 注册表这个东西不建议更改 如果更改的话建议先备份系统 以防意外 1.找到注册表编辑器 2. 展开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor 3.找到Completion Char 双击 把橙色的数值改成9 4.重新打开cmd 就可以了 参考文章…

github上传超过100M的大文件

当上传的工程中有超过100M的文件时,直接上传github会产生如下报错: remote: error: File retinaface-R50/R50-0000.params is 112.54 MB; this exceeds GitHubs file size limit of 100.00 MB! [remote rejected] master -> master (pre-receive ho…

vue打包到生产环境

1.进入到项目根目录执行 npm run build此时会自动打包在dist目录下 2.安装服务 npm install -g serve3.启动 serve dist以上是生产环境打包的过程。 npm run dev 是开发环境, npm run build 是生产环境

微软发布「升级版」多模态大模型 Kosmos-2!新增局部理解能力,解锁实体级交互

夕小瑶科技说 原创 作者 | 小戏、ZenMoore 三个多月前,微软亚洲研究院在论文《Language Is Not All You Need: Aligning Perception with Language Models》中发布了一个强大的多模态大模型 Kosmos-1,成功将感知与语言对齐,在 ChatGPT 的多…

银河麒麟服务器v10 sp1 安装mysql

可以先用 dpkg --list|grep mysql 查看自己的mysql有哪些依赖: 上图已经是安装后的截图,然后再卸载 sudo apt-get autoremove --purge mysql-common 本文在没有安装之前,只有mysql-common包,再用dpkg --list|grep mysql查看&…

HTML5开发工程师岗位的职责说明文(合集)

HTML5开发工程师岗位的职责说明文1 职责: 1、根据产品设计文档和视觉文件,利用HTML5,Javascript相关技术实现web端的界面效果、交互和功能; 2、基于HTML5.0的标准进行页面制作,编写可复用的用户界面组件; 3、负责分析和解决前端…

【Java从入门到大牛】Java快速入门

目录 简单认识JavaJava背景知识Java能做什么Java技术体系 如何使用Java搭建Java开发环境总结 开发第一个Java程序开发过程HelloWorld案例常见错误总结 Java程序的执行原理总结 JDK的组成和跨平台原理JDK的组成Java的跨平台、工作原理总结 JDK安装后设置Path和Java_home环境变量…

【服务器】群辉 NAS 安装 Mysql 远程访问连接

群辉安装MySQL具有高效、安全、可靠、灵活等优势,可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性,可以保障MySQL数据库的高效运行和数据安全. cpolar 是一款内网穿透工具,通过简单的设置,我们即可实现远程访问群辉中mysq…

FPGA实验二:模可变计数器设计

目录 一、实验目的 二、实验要求 三、实验代码 1.实验源码 2.部分代码设计思路分析 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 3、下载测试结果及分析 五、实验心得 1.解决实验中遇到的困难及解决 2.完成实验后的心得 一、实验目的 (1&#xf…

暑期学JavaScript【第四天】

日期对象 创建 //创建 const date new Date(); // 默认使用现在时间常用方法 时间戳的获取方式 date.getTime()new Date()Date.now() 倒计时案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta htt…

Java中规模软件开发实训——掌握财务自由的关键!解锁智能家庭记账系统的神奇力量!(家庭记账软件)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;html css js&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;财务自由&am…

简洁清新后台模板推荐(光年)

目录 前言一、后台模板介绍1.作者介绍2.模板介绍 二、界面展示1.登录2.首页3.UI元素4.表单5.工具类6.示例页面7.主题选择 三、入口总结 前言 作为后端开发人员&#xff0c;前端技术确实不精通&#xff0c;也没有太多的精力搞前端。所以一直在搜寻一些现成的模板。最近发现一个…

nginx开启http2导致的服务验证码不可用问题

问题描述: 新搭建了一套开源的系统。通过nginx做了https反向代理后无法显示验证码。 具体报错&#xff1a; Uncaught TypeError: Cannot read properties of null (reading ‘property’) 点击报错后跳转到方法&#xff1a; xhr.getAllResponseHeaders() 问题就出在这个方法&…