繁体   English   中英

如何使用Wi-Fi获得距离

[英]how to get distance using Wi-Fi

我想用Wi-Fi找到距离,并在iPhone上绘制地图上的标记。

那么我能得到的任何想法或代码?

在第一次阅读您的问题时,我假设您指的是到接入点的距离。 写了一堆关于那个,我意识到你可能意味着别的东西。 如果这是你的意思,继续阅读......

鉴于您的配置:

  • 一个固定的接收器(您的手机不必固定,但如果您正在寻找瞬时测量,它会被有效修复)
  • 单个固定基站(接入点)
  • 接收器上的全向天线
  • 802.11 b / g协议

这是不可能做到的。 即使您在PHY级别工作,这也是一个不可能解决的问题。 为了使其更加可行,您需要对接收器相对于两个(但最好是更多)基​​站的位置进行三角测量 即使这样,这仍然是一个难题。 RF波以光速传播,因此使用中继技术来测量往返信号传播延迟将不会提供良好的准确性(接收器必须非常快速地操作,然后存在多径问题......)。 再说一遍,假设您基本上构建自己的RF硬件,显然您不打算为iPhone做这件事。

追踪基站位置的最佳选择是在更改手机位置时记录WiFi信号强度。 通过'改变位置',你基本上必须扫过该区域。 通过一些良好的启发式算法和处理非距离相关信号衰减的稳健性,您可以获得不错的精度(可能大约10米)。

仅使用网卡的信号强度,无法获得接入点的准确距离(以米或英尺为单位)。

使用Apple的CoreLocation框架,它可以为您提供您所在位置的坐标。 我无法链接到它,因为我无法访问iPhone文档。

http://www.mathforum.com/library/drmath/view/51711.html,您可以找到用于计算GPS中两个位置之间距离的公式。 这是我在此创建的C#代码(它缩放到公制系统)

    private double Distance(GpsPosition p1, GpsPosition p2)
    {
        // http://www.mathforum.com/library/drmath/view/51711.html

        double A = p1.Latitude / 57.29577951;
        double B = p1.Longitude / 57.29577951;
        double C = p2.Latitude / 57.29577951;
        double D = p2.Longitude / 57.29577951;

        if((A==C) && (B==D))
            return 0;

        if((Math.Sin(A)*Math.Sin(C)+Math.Cos(A)*Math.Cos(C)*Math.Cos(B-D)) > 1.0)
            return 6372.72 * Math.Acos(1);
        else
            return 6372.72 * Math.Acos(Math.Sin(A) * Math.Sin(C) + Math.Cos(A) * Math.Cos(C) * Math.Cos(B - D));
    }

可能您可以使用3个或更多接入点获得粗略距离。 现在有一种技术可以使用3个GSM移动基站获得与移动用户的距离。

使用接收到的功率,您可以使用从发射器到接收器的射频传播模型来计算距离。 然而,听起来你想要的位置,而不仅仅是距离。

自由空间路径损耗模型:

http://en.wikipedia.org/wiki/Free-space_path_loss

你想在这里实现什么?

如果你试图使用Iphone在地图上绘制你的位置,那么这个功能已经是具有GPS接收器的Iphone的一部分,并将“开箱即用”。

如果你试图使用wifi找到你的笔记本电脑的位置并将该位置发送到iPhone,那么你有一个很难解决的问题,如果没有大量工作可能是不可行的。

有一些设施可以让你从GSM桅杆三角测量你的位置,但这些设备处于固定位置,知道纬度/长度。 无线接入点没有地理位置数据库,因此很难/不可能进行三角测量。

您可以使用第三方服务,比如这个使用GSM跟踪您的位置,但这些都是非常不准确,除非你是在一个大的城市,需要你有一个GSM调制解调器不管它是你正在跟踪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM