蓝牙简学(一)

2023-12-30 01:44
文章标签 蓝牙 简学

本文主要是介绍蓝牙简学(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、蓝牙广播
  • 二、通过设备广播数据
  • 三、蓝牙广播类型
  • 四、蓝牙状态切换


一、蓝牙广播

1、低功耗蓝牙一共有40个信道,频段范围从2402MHz到2480Mhz,37、38、39是蓝牙广播信道,剩余37个是数据信道。

为什么不使用相近的信道作为广播信道呢?

答案:为了避免广播扫描中相邻信道相互干扰。
在这里插入图片描述

2、一个广播数据包最长37个字节,其中6个字节是mac地址,剩下的31个字节是很多个广播数据结构体。每个结构体都有3个东西,长度,类型和内容。

在这里插入图片描述

具体示例:

在这里插入图片描述

4=1+3,3=1+2 字节

其中广播数据没用完的话,系统会自动补0,凑够31字节。

在这里插入图片描述

这一串跟上面那一串是一样的。

Ox03 0x08 0x41 0x49 0x02 0x0A Ox02 0x02 0x01 0x05 0x06 OxFF 0x42 0x69 0x62 0x69

好,上面这一串是多少个数据结构体呢?

答案在最后

3、蓝牙广播数据的意义

在这里插入图片描述
这里说的是第二个字节类型的意义,
a.第一个广播数据结构体钟,通过UTF-8得知,字符1就是0x31.
b.第二个广播数据结构体中,0x08就是发射功率为8dBm
c.第三个是厂商自定义结构体
详细的类型意义可以从官网下载
https://www.bluetooth.com/

二、通过设备广播数据

0x02 0x01 0x05 0x05 0x09 0x42 0x69 0x62 0x69 0x02 0x0A 0x02

from machine import Pin
from time import sleep_ms
import ubluetooth   #导入BLE功能模块ble = ubluetooth.BLE()  #创建BLE设备
ble.active(True)  #打开BLE#设置BLE广播数据并开始广播
ble.gap_advertise(100, adv_data = b'\x02\x01\x06\x03\x09\x41\x42') 

这是python的代码,c语言版本待加- -
\x表示16进制数据
安装nRF Connect手机软件,使用es32开发模组下载固件和代码后可以看到出来的广播,\x41\x42

三、蓝牙广播类型

1.可连接非定向:普通蓝牙设备采用的广播方式
2.可连接定向:已配对设备中的快速连接
3.不可连接定向:蓝牙信标和蓝牙传感器的广播方式
4可扫描非定向:在3的基础上加了扫描响应的功能,能传输更多数据

在这里插入图片描述
扫描响应:是在从机收到蓝牙主机的扫描请求(scan request),回复给蓝牙主机的数据(scan reponse)。
跟广播是不一样的
广播(advertises)是:蓝牙主动发射的一些数据.
在这里插入图片描述

广播最多发送31个字节数据,但是通过扫描响应就可以发送更多的数据

from machine import Pin
from time import sleep_ms
import ubluetooth         #导入BLE功能模块ble = ubluetooth.BLE()    #创建BLE设备
ble.active(True)          #打开BLE#设置BLE广播数据并开始广播
ble.gap_advertise(100, adv_data = b'\x02\x01\x06\x03\x09\x41\x42', resp_data = b'\x03\xFF\x4C\x00')

总结
1.扫描响应数据和广播数据格式是一样的
2.扫描响应数据是非必需的
3.扫描响应可作为广播数据的补充
4.扫描响应有一定的触发条件(收到扫描请求)

四、蓝牙状态切换

总共有5个状态,分别是:
就绪态,广播态,连接态,扫描态,发起态。
前3个都很好理解,开机之后就是就绪,发广播就是广播,连上了就是连接

扫描态是主机在就绪态发起扫描,就是扫描态
发起态是,发现想要连接的设备,就是发起态

其中扫描态和广播态看着好像差不多,但是不一样的
蓝牙模块设置广播数据并开始广播后是广播态,手机扫描附近范围内的蓝牙设备时,手机将处于扫描态。
在这里插入图片描述
这是蓝牙广播的代码

from machine import Pin
from time import sleep_ms
import ubluetooth   #导入BLE功能模块ble = ubluetooth.BLE()  #创建BLE设备
ble.active(True)  #打开BLE(此时设备将处于就绪态)#设置BLE广播数据并开始广播(开始广播后设备将处于广播态)
ble.gap_advertise(100, adv_data = b'\x02\x01\x06\x03\x09\x41\x42')

但是上面的代码在连上之后再断开了就不会继续发广播了,所以加了下面一些
加了个灯判断连上还是断开和连上断开之后继续发广播

from machine import Pin
from time import sleep_ms
import ubluetooth   #导入BLE功能模块ble = ubluetooth.BLE()  #创建BLE设备
ble.active(True)  #打开BLE(此时设备将处于就绪态)#设置BLE广播数据并开始广播(开始广播后设备将处于广播态)
ble.gap_advertise(100, adv_data = b'\x02\x01\x06\x03\x09\x41\x42')#定义一个函数,用作蓝牙事件中断
def ble_irq(event, data): # 蓝牙中断函数if event == 1: #蓝牙已连接(此时蓝牙将处于连接态)print("BLE 连接成功")elif event == 2: #蓝牙断开连接(此时蓝牙将从链接态进入就绪态)print("BLE 断开连接")ble.gap_advertise(100, adv_data = b'\x02\x01\x06\x03\x09\x41\x42')#再次启动广播elif event == 3: # 收到新write消息print("BLE 收到新消息")ble.irq(ble_irq) #注册蓝牙中断函数

下一章节,写最重要的蓝牙服务和特性,还有数据收发

这篇关于蓝牙简学(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/551325

相关文章

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

Flutter 中的低功耗蓝牙概述

随着智能设备数量的增加,控制这些设备的需求也在增加。对于多种使用情况,期望设备在需要进行控制的同时连接到互联网会受到很大限制,因此是不可行的。在这些情况下,使用低功耗蓝牙(也称为 Bluetooth LE 或 BLE)似乎是最佳选择,因为它功耗低,在我们的手机中无处不在,而且无需连接到更广泛的网络。因此,蓝牙应用程序的需求也在不断增长。 通过阅读本文,您将了解如何开始在 Flutter 中开

开放式蓝牙耳机哪个品牌好用?盘点五款超优秀的开放式耳机!

开放式蓝牙耳机现在挺受欢迎的,它们最大的好处就是不塞耳朵,戴着舒服,特别适合长时间佩戴。而且,这种耳机能让你在听音乐的同时,还能听到周围的环境声,这样在外面运动或者骑车的时候就更安全。音质方面,现在的开放式耳机也做得越来越好,有些高端款式还有特别的技术来减少漏音,保护你的隐私。但是现在市场上的开放式耳机品牌太多了,很多人不知道怎么选?为了帮助您在众多选项中做出选择,我根据个人经验挑选了一些表现良好

Anroid BLE蓝牙(手机分别作为中心设备和外围设备)

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。  BLE蓝牙模块主要应用领域     1、移动扩展设备     2、汽车电子设备     3、健康医疗用品:心跳带、血压计等     4、定位应用:室内定位、井下定位等     5、近距离数据采集:无线

蓝牙--关于bta_ag_sdp.cc文件的讲解

讲解代表之前先简单介绍下HF和AG HF(Hands-Free unit)测:是指作为音频网关的远程音频输入和输出机制的设备。它还提供了一些远程控制手段。在蓝牙通信中,HF通常是支持HFP(Hands-Free Profile)协议的设备,例如蓝牙耳机、汽车蓝牙系统等。 AG(Audio Gateway)测:是指作为音频的输入和输出网关的设备。典型的充当音频网关的设备包括手机。 我们这边主要

蓝牙--关于bta_ag_sco.cc文件的讲解

讲解代表之前先简单介绍下HF和AG HF(Hands-Free unit)测:是指作为音频网关的远程音频输入和输出机制的设备。它还提供了一些远程控制手段。在蓝牙通信中,HF通常是支持HFP(Hands-Free Profile)协议的设备,例如蓝牙耳机、汽车蓝牙系统等。 AG(Audio Gateway)测:是指作为音频的输入和输出网关的设备。典型的充当音频网关的设备包括手机。 我们这边主要

500以内蓝牙耳机最良心推荐有哪些?四款百元平价必入机型盘点

面对市场上琳琅满目的蓝牙耳机品牌和型号,消费者往往感到困惑,特别是在预算有限的情况下,如何挑选出既满足质量又符合价格预期的产品似乎成了一项挑战,那么500以内蓝牙耳机最良心推荐有哪些?为了帮助大家轻松找到适合自己且价格合理的蓝牙耳机,我今天特别带来了四款百元平价必入机型盘点,下面,让我们一起深入了解这四款平价蓝牙耳机的各项性能,看看它们是否真正符合你的需求和预期。 500以内蓝牙耳机最良

构建STM32智能平衡车项目:PID控制算法与蓝牙通信技术

一、项目概述 项目目标和用途 本项目旨在设计和实现一款基于STM32单片机的平衡车。平衡车是一种新型的个人交通工具,广泛应用于短途出行、休闲娱乐等场景。通过本项目,我们希望能够实现一款具备良好稳定性和操控性的平衡车,能够在不同的地形上自如行驶。 解决的问题和带来的价值 平衡车的核心问题在于如何保持其平衡。传统的平衡车往往依赖于复杂的控制算法和高精度的传感器。通过本项目,我们将利用STM32

开放式蓝牙耳机哪个品牌好用?开放式耳机排行榜10强

开放式耳机是我觉得蓝牙耳机里最适合入手的耳机类型,它有很多使用场景的选择。平时外出办公的话,也很合适,我自己也算是外出办公的打工人了,我会比较喜欢一点点嘈杂的环境,就还挺适合的。 那平时下班健身就更不用说了,健身最适合戴耳机了,那入耳式就很容易掉,所以这时就该轮到开放式耳机登场了,挂耳式、耳夹式或者是挂脖式的佩戴设计都很适合运动健身。 所以,毋庸置疑,开放式耳机当然是好用且适合入手的。

哪个牌子的蓝牙耳机性价比高?四款全能高性价比机型盘点

在蓝牙耳机市场日益丰富的今天,消费者面对的选择多到令人眼花缭乱,从国际大牌到国产新秀,每个品牌都在努力推出具有独特卖点和特色功能的蓝牙耳机,那么在众多选择中,哪个牌子的蓝牙耳机性价比高?而这是一个值得深究的问题,为了帮助大家在众多品牌和机型中找到真正的高性价比之选,我细致的整理四款全能高性价比机型盘点,无论你是学生、上班族,还是热爱运动和旅行的人士,以下推荐的这四款耳机都将满足你对高性能和合理价格