打印
[资料分享]

基于TI CC254X+iBeacon的室内定位解决方案(转载)

[复制链接]
2326|50
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tfqi|  楼主 | 2019-6-19 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
扫描信号强度值(RSSI)
cc254x在observer模式下能够扫描周围iBeacon的广播信息,在主事件回调函数中,发现事件GAP_DEVICE_INFO_EVENT就是发现新的iBeacon设备,并且扫描到的信息中包含信号强度信息。此时,将信号强度信息提取,并存储到数组中即可。


使用特权

评论回复

相关帖子

沙发
tfqi|  楼主 | 2019-6-19 13:00 | 只看该作者
// Length of bd addr as a string
#define B_ADDR_STR_LEN                        15
//ibeacon的数目
#define IBEACON_MAX_NO                        3
//每个ibeacon的rssi数据存储长度
#define DEFAULT_RSSI_LIST_LEN                 5
static void simpleBLEObserverEventCB( gapObserverRoleEvent_t *pEvent ):
case GAP_DEVICE_INFO_EVENT:
insertRssiValue( bdAddr2Str(pEvent->deviceInfo.addr), (int8)(-pEvent->deviceInfo.rssi) );
char *bdAddr2Str( uint8 *pAddr )
{
  uint8       i;
  char        hex[] = "0123456789ABCDEF";
  static char str[B_ADDR_STR_LEN];
  char        *pStr = str;
  *pStr++ = '0';
  *pStr++ = 'x';

  // Start from end of addr
  pAddr += B_ADDR_LEN;

  for ( i = B_ADDR_LEN; i > 0; i-- )
  {
    *pStr++ = hex[*--pAddr >> 4];
    *pStr++ = hex[*pAddr & 0x0F];
  }

  *pStr = 0;

  return str;
}

使用特权

评论回复
板凳
tfqi|  楼主 | 2019-6-19 13:00 | 只看该作者
/*********************************************************************
* @fn      getBeaconIndex
*
* @brief   返回当前ibeacon在地址列表中的序列号
*   
* @param    const char **pAddrArr - ibeacon地址数组
* @param    const char *pAddr - 当前ibeacon的地址
*
* @return  int8
*/
int8 getBeaconAddrIndex(const char **pAddrArr, const char *pAddr )
{
  uint8 i;
  for(i = 0;i < IBEACON_MAX_NO; ++i)
  {
    if (osal_memcmp(pAddr, pAddrArr, IBEACON_ADDR_LEN ))
    {
      return i;
    }
  }
  return -1;
}

使用特权

评论回复
地板
tfqi|  楼主 | 2019-6-19 13:00 | 只看该作者
/*********************************************************************
* @fn      EnQueue
*
* @brief   将数据插入到队列尾
*
* @param    int8 *pQ - input array
* @param    int8 val - value will enter the tail of pQ
*
* @return  none
*/
void EnQueue(int8 *pQ, int8 val)
{
  uint8 i;
  for(i = 0;i<DEFAULT_RSSI_LIST_LEN-1;++i)
  {
    pQ[i] = pQ[i+1];
  }
  pQ[DEFAULT_RSSI_LIST_LEN-1] = val;
  return;
}

使用特权

评论回复
5
tfqi|  楼主 | 2019-6-19 13:01 | 只看该作者
/*********************************************************************
* @fn      insertRssiValue
*
* @brief   将新RSSI数据插入到数据存储列表
*
* @param   char *pAddr - address of the ibeacon
* @param   uint8 newRssi - new rssi data
*
* @return  none
*/
void insertRssiValue( const char *pAddr, uint8 newRssi)
{
  int8 idx = getBeaconAddrIndex( iBeaconAddrArr, pAddr );
  if(idx < 0) return;
  else
  {
    EnQueue(iBeaconRawRssiArr[idx], newRssi);
    return;
  }
}

使用特权

评论回复
6
tfqi|  楼主 | 2019-6-19 13:01 | 只看该作者
对RSSI数据处理
得到的RSSI数据比较粗糙,需要进行滤波处理。滤波方法有很多,但是均值滤波最好。

解算位置
本人采用自适应多边定位实现定位算法,即 Adaptive Multi-Lateration.

使用特权

评论回复
7
dirtwillfly| | 2019-6-19 22:07 | 只看该作者
感谢分享

使用特权

评论回复
8
consumption| | 2019-6-28 13:53 | 只看该作者
感谢分享!学习下!

使用特权

评论回复
9
tfqi|  楼主 | 2019-7-10 11:45 | 只看该作者
非常感谢各位支持

使用特权

评论回复
10
usysm| | 2019-7-15 22:14 | 只看该作者
室内定位技术不断发展,手段也丰富多样  

使用特权

评论回复
11
typeof| | 2019-7-15 22:14 | 只看该作者
需要部署定位的anchor的也就是定位基站。  

使用特权

评论回复
12
yujielun| | 2019-7-15 22:14 | 只看该作者
CC254X具有8051内核   

使用特权

评论回复
13
htmlme| | 2019-7-15 22:14 | 只看该作者
应用还不是特别的广泛   

使用特权

评论回复
14
pklong| | 2019-7-15 22:15 | 只看该作者
蓝牙室内定位技术方案  

使用特权

评论回复
15
touser| | 2019-7-15 22:15 | 只看该作者
用蓝牙信号强弱来做室内定位   

使用特权

评论回复
16
myiclife| | 2019-7-15 22:15 | 只看该作者
怎样修改 cc254x 参数   

使用特权

评论回复
17
uytyu| | 2019-7-15 22:16 | 只看该作者
如何使用 CC2540 制作一个 iBeacon   

使用特权

评论回复
18
iyoum| | 2019-7-15 22:16 | 只看该作者
CC2640 使用BTool抓包怎么用  

使用特权

评论回复
19
jkl21| | 2019-7-15 22:16 | 只看该作者
蓝牙网关和蓝牙Beacon的应用是目前比较广泛的两个室内定位方案  

使用特权

评论回复
20
uytyu| | 2019-7-15 22:16 | 只看该作者
CC2640定向广播需要怎么配置  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

3316

帖子

4

粉丝