Wifi 模块定位原理,室内wifi 定位怎么实现
Wifi 模块定位我们可以分为两种,一种是wifi 设备自身定位,还有一种借助第三方wifi 模块实现定位。
第一种,wifi 设备自身进行定位
首先,大家都知道苹果iPod Touch是没有电话和GPS 模块的, 那么它怎么实现定位功能的呢?
其实它使用的是Wi-Fi 定位技术, 其原理与基站定位类似:
1. 每一个无线AP 都有一个全球唯一的MAC 地址, 并且一般来说无线AP 在一段时间内是不会移动的。
2. 设备在开启Wi-Fi 的情况下, 即可扫描并收集周围的AP 信号, 无论是否加密, 是否已连接,甚至信号强度不足以显示在无线信号列表中, 都可以获取到AP 广播出来的MAC 地址。
3. 设备将这些能够标示AP 的数据发送到位置服务器, 服务器检索出每一个AP 的地理位置, 并结合每个信号的强弱程度, 计算出设备的地理位置并返回到用户设备。
4. 位置服务商要不断更新、补充自己的数据库, 以保证数据的准确性, 毕竟无线AP 不像基站塔那样基本100%不会移动。
这样的位置服务商现在来说只有Skyhook 和Google 两家. 他们收集位置数据的方式也是相似的
4.1. 主动采集:Google的街景拍摄车还有一个重要的功能就是采集沿途的无线信号, 并打上通过GPS 定位出的坐标回传至服务器;
Skyhook 在美国及欧洲一些国家也是直接开着信号采集车采集AP 和基站的信号数据, 相对来说覆盖城市没有Google 多,目前中国仅有少数城市有覆盖,并且他们在包括中国在内的多个国家招募有偿工作者,以协助Skyhook 收集位置数据。当然你也可以直接在其网站上提交一个MAC 地址。
4.2. 用户提交: 通常是以静默方式向同时拥有Wi-Fi 和GPS 的终端用户收集位置数据 Android 手机用户在开启“使用无线网络定位”时会提示是否允许Google 的定位服务手机匿名地点数据;
同样的Skyhook 的最大客户Apple 也在iPhone 的User Guide中说明会以不能识别用户身份的方式收集位置数据。
使用这种方式定位一般来说需要与位置服务器进行即时的网络交互,Android 正是如此,最好的证明就是关闭电话和GPS 后,单单打开Wifi 但不连接任何一个无线网络或者连接一个没有接入互联网的网络时,是无法进行定位的。实际测试的时候,发现这种情况下部分软件仍然可以定位,但是无论将设备移动到哪里,应用中的位置始终不会变化。因为Android 的API 中提供的方法是LocationManager.getLastKnownPosition ,只要是通过这种方式获取到的位置数据,Android 是不会立即定位的,而是将最后一次定位的数据返回给应用,除非应用发起更新位置的请求。
第二种借助第三方wifi 模块实现定位。
智能手机或者平板,无线路由器等智能设备都有wifi 模块,但是在室内或者商场里面,怎么知道他们地址呢?
这里我们可以借助 M02wifi 模块定位功能,扫描和采集周围打开wifi 的智能设备,并且将扫描的结果自动上传到服务器或者电脑,根据wifi 定位模块采集的信号强度去计算wifi 智能设备的距离,最终通过三点定位方法,将wifi 智能设备的位置计算出来.
(三点定位:就是根据三个wifi 定位模块去确定一个wifi 智能设备的距离。
wifi 探针wifi 定位wifi
获取MAC 地址资料(已有客户在使用,标准版的模块不可以使用本功能)