关于Arduino读取蓝牙RSSI定位
如题,本人有一块蓝牙4.0 HM-10的模块如何通过Arduino获取蓝牙的RSSI并计算距离呢?
网上搜索过资料,计算公式倒是有,但完全弄不懂啊
有那位大侠弄过这部分的,求指教,感激不尽~{:soso__1039173773029404865_2:} 都不知道吗?怎么就没人回复了呢~~{:soso__3669389859068460655_3:} 败了{:soso__3669389859068460655_3:} 本帖最后由 迷你强 于 2013-10-24 09:03 编辑
玩的太高端了。。。。去国外查查资料什么的。。话说我感觉定位要有距离和方向。。。两个量 迷你强 发表于 2013-10-24 09:01 static/image/common/back.gif
玩的太高端了。。。。去国外查查资料什么的。。话说我感觉定位要有距离和方向。。。两个量
{:3_60:}是的,也看过些国外的资料,基本上都是根据RSSI计算出来的,就是因为公式过于复杂,所以都不知道哪个是哪个。。起初可以不用判断方位,哪怕能算出距离也行。。。 本帖最后由 questfish 于 2013-10-25 14:51 编辑
这个很高端啊 我在网上看那些个说明看的我一头雾水楼主能翻译成白话文不? 我知道怎麼做
如果有需要
把代碼貼上來我幫你檢查吧 六個月了.....
LZ放棄了??? 太高端了,想都不敢想 {:soso_e130:}没放弃,一直在研究,只不过现在在忙工作上的项目,没太多精力去折腾
如果有最新成果的话,一定拿出来分享 最近在研究蓝牙,感觉楼主的问题应该分两步,即如何用蓝牙获取RSSI;如何根据RSSI数据计算距离
针对第一个问题,HC-05指令集里有一条命令INQM,可以设置带RSSI信号强度指示。但是这条命令我没有尝试过,感觉应该可行。
针对第二个问题,需要明确用于室内还是室外环境。如果是室外空旷环境,可以用Friis自由空间传输模型;如果是室内,可以考虑使用正态对数分布模型。要注意的是,不论采用哪种模型,信号在传输过程中都会受到包括多路径,反射,散射等的影响,得到的结果有可能与实际相差甚远,需要加以修正。 ibeacon的一段定位的代码:
protected static double calculateAccuracy(int txPower, double rssi) {
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy, return -1.
}
double ratio = rssi*1.0/txPower;
if (ratio < 1.0) {
return Math.pow(ratio,10);
}
else {
double accuracy =(0.89976)*Math.pow(ratio,7.7095) + 0.111;
return accuracy;
}
} kenlittle 发表于 2014-4-23 17:42 static/image/common/back.gif
没放弃,一直在研究,只不过现在在忙工作上的项目,没太多精力去折腾
如果有最新成果的话,一 ...
你好不知道你有什么进展吗?最近也在弄这个 楼主怎么样 距离计算公式:以目前最流行的蓝牙信标标准(苹果主推的iBeacon)官方公式为例
d = 10^((abs(RSSI) - A) / (10 * n))
其中
d - 计算所得距离;RSSI - 接收信号强度(负值)
A - 发射端和接收端相隔1米时的信号强度
n - 环境衰减因子
计算公式的伪代码如下:
float getDist(){
int iRssi = abs(rssi);
float power = (iRssi-59)/(10*2.0);
return pow(10, power);
}
传入RSSI值,返回距离(单位:米)其中,A参数赋了59,n赋了2.0。
当不知道周围蓝牙设备准确位置时,只能给A和n赋经验值.
将HM-10模块和Arduino连接,Arduino端代码先通过Uart口实现对HM-10做如下预设值指令:
AT+BAUD4 -->设置蓝牙波特率115200
AT+MODE2 -->设置蓝牙为透传+遥控模式
AT+ROLE1 -->设置蓝牙为主模式
AT+SAVE -->保存设置
然后Arduino端代码要通过Uart对HM-10发送读取RSSI指令
AT+RSSI?
并监听Uart口返回数据,使用String函数处理并提取周边扫描到的蓝牙设备RSSI值
最后Arduino代码根据以上公式计算并显示距离到屏幕
页:
[1]