6621E iBeacon demo

eddy wen · 190次点击 · 9个月前

Beacon通常指ibeacon,beacon是信标,是建立在低功耗蓝牙协议基础上的一种广播协议,它也是拥有这个协议的一款低功耗蓝牙从机设备,并在此基础上提供了对IOS的一些附加支持。

附件有对应的数据包,以6621E为例子,广播间隔不能小0xA0 (0xA0*0.625ms = 100ms)

1.ibeacon 广播包

/// Advertise data
const static uint8_t app_adv_data[] =
{
    /* Flags: BLE_GAP_ADV_TYPE_ADV_SCAN_IND */
    0x02, 0x01, 0x06,
    0x1A, 0xFF, 0x4C, 0x00, 0x02, 0x15,
    0xe2, 0xc5, 0x6d, 0xb5, 0xdf, 0xfb, 0x48, 0xd2, 0xb0, 0x60, 0xd0, 0xf5, 0xa7, 0x10, 0x96, 0xe0,//UUID
    0x88, 0xAB, //major
    0x04, 0x01, //minor
    0xc5  //1米距离的时候信号强度值

};



0xC5=197,根据补码测得256-197=-59dBm是距离设备1米测得的信号强度值(RSSI- Received Signal Strength Indication,接收到的信号强弱指标)。

假如接收到的信号强度减弱了,那么我们可能在远离。只要知道1米距离的RSSI,以及当前的RSSI(我们可以从接收到的信号中一块获取到这些信息),那么计算出当前的距离是可能的。

IOS已经实现了个这个功能,对于其它平台需要自己手动编码计算


const static struct adv_param app_adv_map[] =
{
    /*adv data      adv dta len           scan_data      scan_data_len          intervel  timeout  type*/
    { app_adv_data, sizeof(app_adv_data), app_scan_data, NULL, 0xa0,     0x00,    BLE_GAP_ADV_TYPE_ADV_NONCONN_IND},
};

BLE_GAP_ADV_TYPE_ADV_NONCONN_IND表示为不可以连接广播


抓包截图如下

image.png

app_adv_cfg-202308145175.rar
被收藏 0  ∙  1 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站