相关文章推荐
蓝牙设备通过独特的地址和名称进行交互,名称通常在代码中定义,如EEG_20230902。MAC地址是48bit的固定地址,每个芯片出厂时已设定。UUID用于标识不同的服务和特征,基础UUID由SIG定义或供应商自定,主服务UUID和特征UUID则用于区分不同任务。 摘要由CSDN通过智能技术生成

每个蓝牙设备都具有各自的地址和名称,他们之间通过唯一通过地址和名称进行数据交互。本文详细讲述了蓝牙设备的名称和地址的格式及作用。

蓝牙设备具有各自的名称,通常为字母与数字的组合. 如下图用 nRF Connect 连接蓝牙BLE设备显示的界面中,蓝牙设备的名称为EEG_20210910. 该名称在NORDIC蓝牙开发程序工程代码的main.c文件中定义:

#define DEVICE_NAME  "EEG_20230902"     /**< Name of device. Will be included in the advertising data. */

MAC地址

与Ethernet相同,MAC地址为48bit的地址码。MAC地址不能由程序设置,NORDIC公司生产的每个芯片的MAC地址在出厂时已确定。用户可以读出该48bit地址。在NRF52832 datasheet的第13章有相关说明,如上图,DEVICEADDRESS[1:0]给出了芯片出厂时的48 bit MAC地址.

每一蓝牙芯片具有唯一的MAC地址,如下图用 nRF Connect 连接蓝牙BLE设备显示的界面中,蓝牙设备的MAC地址为F3 98 C7 DE C9 6C.

蓝牙设备需要执行多个任务,每个任务需要有唯一的ID号码UUID (Universal User Identifier), UUID 有128bit,

1. 基础UUID

基础UUID分两种:

  1. 一种是由蓝牙技术联盟(SIG, bluetooth Special Interest Group)定义的128bit的数字:0x0000xxxx-0000-1000-8000-00805F9B34FB,其中xxxx由各自特殊的应用有关,如心率测量使用0x2A37.
  2. 另一种为蓝牙设备供应商指定的128bit 的UUID, 可由以下网站自动生成:
    https://www.uuidgenerator.net/
    , http://www.uuid.online/
    ,也可以由Nordic公司提供的工具nRFgo STudio完成.

基础UUID在在NORDIC蓝牙开发程序工程代码的ble_nus.c文件中定义:

#define NUS_BASE_UUID  {{0x73, 0x5E, 0x86, 0x41, 0x49, 0x34, 0x17, 0x8F, 0x05, 0x4B, 0x73, 0xE7, 0x00, 0x00, 0x49, 0x82}} /**< Used vendor specific UUID. */

2. 主服务UUID

主任务分配的ID, 16bit. 例如串口通信的UUID可设置为0x1.

3. 特征UUID

每一分任务的ID, 16bit, 例如串口通信的发送任务的UUID可设置为0x2, 接收任务的UUID可设置为0x3

ESP32-C3学习笔记(4)——BLE GAP主机端连接(uuid128)https://blog.csdn.net/Mr_VitaminC/article/details/124272506?spm=1001.2014.3001.5502 ESP32-C3学习笔记(5)——BLE GAP主机端连接(根据mac地址)https://blog.csdn.net/Mr_VitaminC/article/details/124272780 ESP32-C3学习笔记(6)——BLE GAP主机端的读、写、no
直接上源码 public static String GetLocalMacAddress() { BluetoothAdapter btAda = BluetoothAdapter.getDefaultAdapter(); //开启蓝牙 if (btAda.isEnabled() == false) { if (btAda.enable()) { while (btAda
什么是蓝牙 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而使数据传输变得更加迅速高效,为无线通信拓宽道路。 简单说,蓝牙就是一种使用无线电通信的技术去完成设备设备间通讯与数据交换。 而我们通常使用的那些蓝牙耳机、蓝牙打印机、蓝牙手环、蓝牙鼠标等等设备,都是基于蓝牙通信技术对外提供某种(或
ServiceDiscoveryServerServiceClassID_UUID = '{00001000-0000-1000-8000-00805F9B34FB}' BrowseGroupDescriptorServiceClassID_UUID = '{00001001-0000-1000-8000-00805F9B34FB}' PublicBrowseGroupServiceClass
这里只列出重点原理内容,更加细节的内容请阅读前面文章 首先要搞清楚一点,我们在 Android 中通过 SDK 获得的蓝牙广播包是经过底层的 SDK 给我们处理过的,是一个长度为 62 的字节数组。这个长度为 62 的字节数组是怎么来的呢? 想要搞清楚这个问题,首先我们要明白 iBeacon 向外发送的最原始的广播包是什么样的? 首先我们要搞清楚一点,蓝牙在向外发送数据的时候是分成两个部分的一个就是普通的广播包还有一个叫做应答包。这是蓝牙协议的规定内容,针对于所有的蓝牙设备(iBeacon 只是蓝牙设.
首先,需要确保蓝牙权限已在AndroidManifest.xml文件中进行了声明并获得。 其次,可以使用BluetoothAdapter类获取设备蓝牙适配器实例,并确保蓝牙已启用。 接下来,可以通过调用BluetoothDevice类的方法来获取与目标蓝牙设备相关的对象。这可以通过设备MAC地址名称来实现。 然后,可以通过UUID来与目标蓝牙设备进行连接。UUID是一个全局唯一的标识符,用于确保与特定服务或特性的通信。对于不同的应用程序,可以为连接到蓝牙设备的服务或特性分配不同的UUID。 一旦连接建立,可以通过BluetoothSocket类与目标蓝牙设备进行数据传输。可以使用OutputStream类来向蓝牙设备写入数据,使用InputStream类来读取从蓝牙设备接收到的数据。 在连接完成后,应该及时关闭连接以释放资源,并确保在不使用蓝牙设备时将其禁用。 总结起来,要通过UUID连接Android蓝牙设备,需要获取蓝牙适配器实例,获取目标蓝牙设备对象,使用UUID连接设备,通过BluetoothSocket进行数据传输,并及时关闭连接。这些步骤可以帮助实现Android与蓝牙设备之间的无线通信
 
推荐文章