CH573 Ibeacon

本文详细介绍了如何在蓝牙低功耗(BLE)设备中修改Peripheral的扫描响应包,将自定义数据(ADTYPE=0xFF)放入其中,以实现类似iBeacon的广播。内容包括示例代码的解析,广告数据和扫描响应数据的结构,并提供了iBeacon数据的解析。同时,给出了使用特定应用进行RSSI校准的步骤,以确保数据的准确性。
摘要由CSDN通过智能技术生成

一、参考例子

https://bbs.21ic.com/icview-3135376-1-1.html

二、修改

在上面例子拿到的是有问题,上面是放到广播包,
这里应该将用户自定义(ADTYPE = 0xFF)的数据,放到 扫描回复包里面
我们直接使用 Peripheral例子来修改

修改部分:

static uint8 scanRspData[ ] =
{
  // complete name
#if 0
  0x12,   // length of this data
  GAP_ADTYPE_LOCAL_NAME_COMPLETE,
  'S',   
  'i',   
  'm',   
  'p',   
  'l',   
  'e',   
  ' ',
  'P',   
  'e',   
  'r',   
  'i',   
  'p',   
  'h',   
  'e',   
  'r',   
  'a',   
  'l',   
  // connection interval range
  0x05,   // length of this data
  GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,
  LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),   // 100ms
  HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),
  LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),   // 1s
  HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),

  // Tx power level
  0x02,   // length of this data
  GAP_ADTYPE_POWER_LEVEL,
  0       // 0dBm
#endif

  26,0xff,//长度 + 自定义数据 ff
  0x4c,0x00,0x02,0x15,//Apple's fixed iBeacon advertising prefix
  0xe2,0xc5,0x6d,0xb5,0xdf,0xfb,0x48,0xd2,0xb0,0x60,0xd0,0xf5,0xa7,0x10,0x96,0xe0,//iBeacon profile uuid
  0x00,0x00,//0x88,0xab,//major
  0x00,0x00,//0x04,0x012,//minor
  0XC7,//0xb4// -76 的补码 1米的数据  The 2's complement of the calibrated Tx Power
};

三、对于一些数据的解析

参考一下别家的ibeacon数据

// advert data for iBeacon
static uint8 advertData[] =
{	
    0x02,   // length of this data
    GAP_ADTYPE_FLAGS,
    DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
    0x1A, // length of this data including the data type byte
    GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific adv data type
    0x4c, // Company ID - Fixed
    0x00, // Company ID - Fixed
    0x02, // Data Type - Fixed
    0x15, // Data Length - Fixed
    0xFD, // UUID  
    0xA5, // UUID 
    0x06, // UUID
    0x93, // UUID
    0xA4, // UUID
    0xE2, // UUID
    0x4F, // UUID
    0xB1, // UUID
    0xAF, // UUID
    0xCF, // UUID
    0xC6, // UUID
    0xEB, // UUID
    0x07, // UUID
    0x64, // UUID
    0x78, // UUID
    0x25, // UUID
    0x27, // Major
    0x74, // Major
    0x6b,//0x04, // Minor
    0xed,//0xb0, // Minor
    0xc5 // Power - The 2's complement of the calibrated Tx Power
};

四、操作步骤

  1. 使用locateAPP 找到对应的ibeacon
  2. 在1米的时候,点击一下校准
  3. 将校准拿到的RSSI ,放到ibeacon数据的最后一个字节因为是负数,所以填入的是补码
  4. 搞定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值