[蓝牙芯片] ch573实现Ibeacon的问题

[复制链接]
 楼主| lanjackg2003 发表于 2021-5-26 14:49 | 显示全部楼层 |阅读模式
目前,使用ch573按照 ibeacon数据格式修改了广播数据
然后,我在IOS下,使用 Beacon Scan 这个第三方工具进行测试,
可以找到Ibeacon的Major跟Minor值,但是发现RSSI值一直固定不动
而在使用nordic的芯片及固件进行测试,RSSI值是变动的
Beacon Scan 这个第三方工具,应该没有问题

官方能否提供一下Ibeacon实现的参考示例及相应的 BLE调试助手 工具关于ibeacon的测试方法


单片小菜 发表于 2021-5-26 22:16 | 显示全部楼层
这个是否可以进行室内的定位?
 楼主| lanjackg2003 发表于 2021-5-27 09:19 | 显示全部楼层
单片小菜 发表于 2021-5-26 22:16
这个是否可以进行室内的定位?

室内定位需要多个ibeacon跟应用程序配合才可以实现
kingsleych 发表于 2021-5-27 11:06 | 显示全部楼层
首先, 要搞明白 iBeacon 和 普通Beacon的区别,
然后再根据自己的实际需求,去做合适的开发.

在iBeacon 的规范中,其广播包中带了个RSSI值,这个通常是按照BLE的规范,来填的1米处的rssi值,用来进行相对距离估算参考的.这个值对于一个独立工作的设备来说,工作中是不应该变化的.
另一个RSSI,是 接收端输出的rssi, 是在接收对应数据包时量化的信号强度, 指示当前接收到数据的信号的强度,受限于量化误差,以及链路的不稳定, 这个通常是变化的,刷新率受限于接收到的数据包的更新次数.

ch573 搜索出来,指示了Major跟Minor 值,并且后面跟着的RSSI, 如果是 ibeacon的参考rssi ,那这个不应该变动,
建议使用更广泛使用的工具, 诸如lightblue之类的工具.





评论

我说的这个RSSI的值,不是协议包指定的那个值  发表于 2021-5-27 11:41
 楼主| lanjackg2003 发表于 2021-5-27 11:38 | 显示全部楼层
kingsleych 发表于 2021-5-27 11:06
首先, 要搞明白 iBeacon 和 普通Beacon的区别,
然后再根据自己的实际需求,去做合适的开发.

是的,楼上正解
RSSI在1米的参考值是不变,是在IBeacon的协议包里面设置的
测试工具的rssi值应该是检测到的RSSI值,但是该值没有变化
是不是ch573需要进行设置

同样的Ibeacon协议包,在nordic芯片上,没有问题,测试工具也是没有问题。
lightblue不能看ibeacon吧?
我在iphone上用一个叫 Locate 工具,对ch573进行测试,也是发现RSSI值没有变化。
所以手机端的App应该不会有问题
WCHTech2 发表于 2021-5-27 14:24 | 显示全部楼层
lanjackg2003 发表于 2021-5-27 11:38
是的,楼上正解
RSSI在1米的参考值是不变,是在IBeacon的协议包里面设置的
测试工具的rssi值应该是检测到 ...

参考CH579的ibeacon Demo, 实测RSSI值可以变化。
Peripheral_ibeacon_test.zip (1.64 MB, 下载次数: 59)

5369160af3b2b3abab.png    7055060af3b341d02d.png
 楼主| lanjackg2003 发表于 2021-5-27 14:30 | 显示全部楼层
WCHTech2 发表于 2021-5-27 14:24
参考CH579的ibeacon Demo, 实测RSSI值可以变化。

好的,谢谢
我稍后对比一下的代码
我的代码是从broadcast示例修改的
你给demo从peripheral中修改的
估计是有些缺少东西
 楼主| lanjackg2003 发表于 2021-5-28 08:55 | 显示全部楼层
我用官方提供的代码,然后修改了

peripheral_main.c及peripheral.c文件
让示例代码能够运行在ch57x上面

3807460b03ed6678a1.png

503060b03eae4c5a1.png
但是结果仍然跟我的原来示例代码一样,无法获取动态RSSI值

请FAE帮忙看一下谢谢
附件是修改过的ch57x版本

Peripheral_modify.zip (70 KB, 下载次数: 11)


 楼主| lanjackg2003 发表于 2021-5-28 10:54 | 显示全部楼层
1429760b05b7084b09.png
测试结果
WCHTech2 发表于 2021-5-28 13:56 | 显示全部楼层
lanjackg2003 发表于 2021-5-28 08:55
我用官方提供的代码,然后修改了

peripheral_main.c及peripheral.c文件

代码如下,我这测试正常
Peripheral_ibeacon_test.zip (934.25 KB, 下载次数: 56)
 楼主| lanjackg2003 发表于 2021-5-28 14:48 | 显示全部楼层
谢谢,貌似差异点在
GAPRole_BroadcasterInit(); 与 GAPRole_PeripheralInit( );
5752660b0921ee6a88.png

评论

可以测试我给你的代码,改为GAPRole_BroadcasterInit() 也是可以正常使用的  发表于 2021-6-4 16:35
caigang13 发表于 2021-6-1 08:07 来自手机 | 显示全部楼层
蓝牙信标定位精度咋样?
chenjun89 发表于 2021-6-1 18:54 来自手机 | 显示全部楼层
原厂有个BLE工具和APP
单片小菜 发表于 2021-6-1 19:21 | 显示全部楼层
室内定位的精度是多少?
 楼主| lanjackg2003 发表于 2021-6-2 09:04 | 显示全部楼层
这种东西,应该可以参考别人的精度标准
差也差不了多少,好也好不了多少
名字是啥样 发表于 2021-6-3 11:51 | 显示全部楼层
我想知道这个的原理是什么?一直没有搞明白是咋回事?
 楼主| lanjackg2003 发表于 2021-6-4 15:49 | 显示全部楼层
名字是啥样 发表于 2021-6-3 11:51
我想知道这个的原理是什么?一直没有搞明白是咋回事?

通过RSSI转换成距离
 楼主| lanjackg2003 发表于 2021-6-4 15:51 | 显示全部楼层
本帖最后由 lanjackg2003 于 2021-6-4 15:55 编辑
/*-------------------------------------------------------------------
* FUNCTIONS - BROADCASTER_PROFILE_API Broadcaster Profile API
*/
/**
* @internal
*
* @brief       Initialization function for the GAP Role Task.
*
* @param       the ID assigned by tmos.  This ID should be
*                    used to send messages and set timers.
*
* @return      SUCCESS,bleInvalidRange
*/
extern bStatus_t GAPRole_BroadcasterInit( void );

/**
* @brief       Does the device initialization.  Only call this function once.
*
* @param       pAppCallbacks - pointer to application callbacks.
*
* @return      SUCCESS or bleAlreadyInRequestedMode
*/
extern bStatus_t GAPRole_BroadcasterStartDevice( gapRolesBroadcasterCBs_t *pAppCallbacks );




/*-------------------------------------------------------------------
* FUNCTIONS - PERIPHERAL_PROFILE_API Peripheral Profile API
*/
/**
* @internal
*
* @brief       Initialization function for the GAP Role Task.
*          This is called during initialization and should contain
*          any application specific initialization (ie. hardware
*          initialization/setup, table initialization, power up
*          notificaiton ... ).
*
* @param       the ID assigned by tmos.  This ID should be
*                    used to send messages and set timers.
*
* @return      SUCCESS,bleInvalidRange
*/
extern bStatus_t GAPRole_PeripheralInit( void );

/**
* @brief       Does the device initialization.  Only call this function once.
*
* @param       pAppCallbacks - pointer to application callbacks.
*
* @return      SUCCESS or bleAlreadyInRequestedMode  
*/
extern bStatus_t GAPRole_PeripheralStartDevice( uint8 taskid, gapBondCBs_t *pCB,gapRolesCBs_t *pAppCallbacks );




请问原厂FAE

什么情况下选择Broadcaster方式初始化?

什么情况下选择Peripheral方式初始化?

是不是Peripheral包含有Broadcaster的初始化?
   

评论

@WCHTech2 :OK,谢谢  发表于 2021-6-4 17:36
Peripheral方式初始化包含Broadcaster的所有功能  发表于 2021-6-4 16:36
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

441

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部

56

主题

441

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部