你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32的WiFi定位系统

[复制链接]
木木&点点 发布时间:2019-3-11 17:13
本帖最后由 点点&木木 于 2019-4-13 10:01 编辑 + Z- C+ w1 J) }2 [. L! U: u

* i9 k6 P" K1 c! c
使用Skyhook和STMicro构建WiFi定位系统。
1.jpg
6 l, E, m9 }, m$ u& z  J
" W7 |; W0 B& \3 h; Z, p
硬件组件
STMicroelectronics STM32 Nucleo-64板
L152RE   ×  1      
STMicroelectronics X-NUCLEO-IDW01M1
SPWF01SA扩展板  ×   1
- A  B' o6 A. U$ Q  Z% H
介绍
通过这4个简单步骤,仅使用WiFi信号可构建下一代物联网定位系统!

. X7 z: h) f# {9 p: [1 U7 F
组装STMicro Nucleo硬件。
编写可立即使用的固件。
注册免费的Skyhook Wireless帐户。
配置固件设置
% j4 w9 D/ C0 T$ f: P. k8 `
    使用此系统,您可以在自己的社区或城市周围散步,骑行或驾车来收集结果,并了解基于WiFi的定位如何解决您的物联网资产跟踪挑战。
但在我们进入具体细节之前,让我们来看一些背景材料。

7 J& K% h# \" E/ f
背景
    下一代物联网资产需要更小,更便宜和更强大的管理设备。作为这种演变的一部分,渗透城市区域的WiFi信号现在可用于提供当前一代资产管理设备中采用的GPS/ GNSS定位技术的低功率替代方案。随着新兴的LPWAN技术,下一代物联网智能城市设备可以实现开辟一整套新的用例。
9 D+ {( O5 s, s$ V
    GPS可以降低整体功耗,从而获得更准确的位置。然而,对于许多应用而言,为了实现长期受欢迎的电池寿命,可以接受不太精确的位置,大约10米。

$ f) w; L# w. T# n* T) {
    GPS模块可能需要几分钟来获取固定其位置所需的信号和数据。GPS的无线电接收器在整个时间内开启,消耗能量。如果定位频繁,则模块的平均电流消耗可能很大,并且通常导致电池寿命短或更大的电池要求。

  S1 f. g/ P+ g  B" Y0 F+ o/ }
    与嗅探现有WiFi信号的系统相比。WiFi定位系统通过被动地扫描环境以用于大多数WiFi接入点(AP)发射的周期性信标分组来工作。这些信标可以自由捕获,并提供足够的信息来识别每个AP。利用手中的AP信标数据的集合,IoT设备可以将该信息转发到基于云位置查找服务器,以使用已知AP位置的数据库来执行三角测量计算。WiFi位置查找提供商(如Skyhook Wireless和Google)使用各种技术来构建和维护其AP数据库。该项目将使用Skyhook“ELG”服务。
# C) S, J' X" x; N( W7 m# m
    当完成所有操作时,对于与GPS模块(10的mA)大约相同数量级的功耗,WiFi模块可花费一秒钟来执行其扫描。很明显我们为什么要这样做:增加电池寿命,从而产生更小,更紧凑和便宜的设备。
6 }. ?" R6 t  W# ~7 a' z( O" ?5 ]
完成项目的步骤
    该项目将向您展示如何使用STMicro组件,轻松组装物联网设备:STM32L1MCU和SPWF01 Wifi模块技术,使用预先构建且随时可用的固件加载,收集Wifi AP数据以及支持蜂窝的移动设备设备,实时将结果提交给Skyhook进行位置查找。
" B- P- T. i1 `
    位置查找结果将返回到设备,并以KML或CSV格式提供。可以使用Google Earth等免费工具在地图上轻松绘制KML数据。Skyhook服务是一个简单的注册,免费服务用于评估目的。驾车或骑车到附近,看看只有WiFi才能获得什么样的位置!
   
    您可以使用下面详细讨论的4或5个步骤在您所在的区域执行WiFi定位。
组装硬件。Nucleo-STM32L152RE + X-NUCLEO-ID1M01扩展板,约40美元。
编程下载的固件二进制文件
注册Skyhook Wireless @ my.skyhookwireless.com的免费帐户,并开始一个“ELG”项目示例。
[可选]设置移动设备热点。

2 |! d' H$ F- b2 F4 n5 Y* ~2 ?' D
    使用Skyhook项目的AES密钥,用户ID以及移动设备热点的WiFi凭据(SSID,密钥,安全类型)配置固件。
    由于该项目已经使用了WiFi模块,我们也使用它通过移动设备的主机点联系Skyhook。这当然不是真正的物联网设备 - 而是使用LPWAN(我们将在另一个项目中实现)。我们可以在周转期间捕获AP信标数据,然后将数据提交给Skyhook,但我们宁愿实时提交扫描结果(如真实物联网设备)以利用幕后功能像位置平滑和过滤。 [更新:Skyhook的ELG服务目前无国籍。因此,将AP扫描数据批处理到Skyhook将返回相同的结果]。
第1步 - 组装硬件
2.jpg
WPS评估硬件设置
" j8 W; R  [5 x
    如图所示,将X-NUCLEO-IDW01M1连接到NUCLEO-L152RE。无需其他配置。使用USB mini电缆连接到PC /笔记本电脑/平板电脑,然后继续执行步骤2。
第2步 - 编程固件
    将“WPS固件映像”文件(WPS_EVAL_STM32L1_SPWF01SA_v1.bin)下载到您的PC,可从该项目的附件部分获得。使用STM32-NUCLEO,您可以将此文件拖放到文件系统中显示的“NODE_L152RE”大容量存储设备中。这就是我们在这里需要做的一切。
第3步 - 注册Skyhook Wireless帐户
   前往Skyhook的用户门户网站并创建一个帐户。在这里,我们要创建一个新的ELG项目,并记录配置固件所需的两个参数:'ELGKey'和'Partner ID'。
% K  V3 s: R% P! C' G
3.jpg
Skyhook用户门户登录/帐户创建页面
# q) C: l! I/ m8 _! ]; [
" D  P1 C; g0 A1 @
进入内部后,从仪表板中选择“新建项目”磁贴,然后选择“精确位置”。
4.jpg
Skyhook仪表板选择新的精确位置项目
0 O# e+ i3 \  i& Y# t

7 P4 o' v5 K- a, I; F+ }' {9 A
提示输入平台时,选择“ELG”,如图所示。
5.jpg
Skyhook ELG平台选择
- ^1 ^* @5 l1 ~+ ]9 T5 V- A
    选择项目名称,单击以完成设置。您的新项目的仪表板将如下所示。可以将“ELG密钥”和“合作伙伴ID”复制并粘贴到终端仿真器(如Tera Term)中,以便在步骤5中配置固件。现在将其记录在其他位置。
6.jpg
Skyhook ELG项目页面
2 A" v- s; @( k+ c/ U3 F1 x7 q
第4步 - 设置您的移动设备热点
    由NUCLEO硬件上运行的固件收集的WiFI AP数据需要转到Skyhook才能获得位置修复。最简单的方法是将现有的移动设备配置为WiFi热点。注意!固件旨在在提交结果时忽略移动设备的SSID。
    设置移动设备热点的方法因型号和制造商而异。此项目是使用三星Galaxy S8使用其默认热点设置(启用WPA)执行的。手机生成的默认AP SSID和密钥应该没问题。记录这些步骤5。
步骤5 - 配置固件
确保您掌握了以下信息,可能是在一个打开的文本文件中:
Skyhook ELG Key,例如1BA3D7F013B321137CCD7DB7CE46A4F4
Skyook合作伙伴ID,例如78221
热点SSID,例如SM-G951U4721
热点密码,例如kmss242j1
    让您的终端程序运行并以115200波特率连接到NUCLEO-L152RE的COM端口。重置电路板,如果之前没有配置任何内容,您应该看到以下内容。
    Starting wifi positioning evaluation platform Cannot start: please set wifi settings with 'mta' command then reboot.
    按Enter键以查看命令提示符'0000:Contiki>'
   使用'mta'命令设置如下所示的参数。
9 r3 j! w0 N* m0 F* ?
0000: Contiki> mta set wifi ssid SM-G951U4721 OK
4 G& U; ]0 E- q5 W6 @$ M( n% ~9 i0000: Contiki> mta set wifi passkey kmss242j1
5 v+ @- j# }1 a7 b3 POK
8 g; i1 E9 c! Q) ]# A' B. a0 W0000: Contiki> mta set wifi sectype 2 7 d& W" l4 E2 H7 B3 `1 E+ G3 b* E. K
OK ' x* r9 `5 M3 L0 p$ C) b
0000: Contiki> mta set device secret 1BA3D7F013B321137CCD7DB7CE46A4F4
4 A, c9 u, _( y* h% dOK
# Y) p3 t. e+ e5 ~, @" @. }$ I0000: Contiki> mta set device account_id 78221 % {3 O9 b; b1 N  n
OK / U& g! k) a- Q, ]8 M5 X: G( q5 G
0000: Contiki> mta save
3 c" X- V  V' C3 f' EOK % e9 ^0 M$ s1 v4 P, `6 T
0000: Contiki> mta get # W6 ~' y1 ^# h% a' M. d5 H" X7 G
Wifi ssid: [SM-G951U4721] ) k) S  l6 ?0 N" T( l
Wifi sectype: 2
7 {( l# p; E; N* D' }; F# HWifi passkey: [kmss242j1]
# J2 L0 V; s0 kDevice secret: [1BA3D7F013B321137CCD7DB7CE46A4F4]
, Y4 w+ a- _- v6 fDevice account_id: [78221]
" n/ Y" C- W0 i4 A3 D  j4 {6 f* |Device device_id: []
; M/ p% @! V7 m  v; dOTA update server: []
; e5 n) e! J8 m0 U0000: Contiki> reboot
6 x8 q2 ?/ J! m0 y& q  `+ kRebooting the node in four seconds... , f  i8 f* m* E0 D+ [( o4 n
Waiting for Provision ready... ( |& G5 n* W9 l% k: a
0000: Contiki>
# e  o* P& z& VStarting wifi positioning evaluation platform $ X0 L' ^0 v. w
Starting wifi module. - {, B0 d! C- i8 C# w8 V0 s
Connecting to AP: SM-G951U4721
7 ^& O3 k- `) U3 ~! T5 WConnection result: 0 8 v# C: J9 d$ T
Get wifi MAC.
8 m5 z4 n+ R' \8 o- P( cScan process stopped, waiting for start command.
" y; d8 ~$ `! C0 s" P0000: Contiki> skyhook start
2 |1 ~2 J( ?( i/ i- U9 m/ \# O0000: Contiki> Starting : p4 n3 t/ d( r- o2 J$ T  a
scan loop. $ ]$ {/ E5 T- Z
--- scan cycle 1 --- $ J0 Z: n9 W, q- E$ D
>> Running WiFi Scan (0)... $ Z# t7 \: Y- ?% T
>> Got 6 scan results ( _7 d7 ~6 Z) W  i7 N( ?
>> Running WiFi Scan (1)... * J  C' L* R5 ]4 H! V
>> Got 5 scan results
, k! c$ |9 l: V$ `7 p9 k>> Running WiFi Scan (2)...
: g, }$ ^* |4 [1 D2 Y>> Got 7 scan results
4 \( q* h- k1 C3 j9 o% O# ?Connecting to elg.skyhook.com (0/3) & [- G* m+ q% |- P5 k
Result: 0 / b5 q; V8 q7 s$ r$ b4 q2 v
Sending location request 90 bytes ( N; D6 I2 D- C
Wrote: 90 bytes. 8 }5 t% G7 T4 _4 {. |
Socket closed: 0 ! e4 o* {# |. X+ w. R- x
Read location response [0] 118 bytes ---------------------
: ^' @5 J& Z% E, ]3 s) y; qlatitude: 51.08321099
6 a3 f$ M) D3 G+ l3 m/ `, @longitude: -114.15788799
7 |0 q9 Y. I+ Y, a, d1 Y( j5 Mstreet: " h& ^' G5 i  N/ {# g% n
address: 49 Street NW
+ U' `  O& _- B& E' j- Z& TAdding location entry 1 (size=1)
7 I1 {0 ^) P2 c; I9 B
4 E, Y9 N1 H  N- C! U
. m" u, x8 h! `3 r$ c
     一旦设置好,就需要使用'mta save'保存。然后键入“rebo​​ot”重新启动设备以开始连接热点。连接后,您可以键入“skyhook start”以开始获取AP信标信息并每10秒请求一次位置查找。注意:您可以使用本地家庭或办公室WiFi的凭据来设置快速演示。它应该返回靠近您所在位置的位置!

- T* a: w7 t2 J" l
固件设计细节
    在IoT设备上运行的固件会严重影响位置结果的质量,因为位置查找结果仅与它所基于的数据一样好。
    为了在每个采样周期内获得最佳的Wifi AP数据集,固件应用程序将执行3次连续的AP扫描(每次扫描大约需要一秒钟),并填充按RSSI排序的唯一AP SSID列表。 根据最强信号(RSSI)的前5个AP被提交给Skyhook的ELG服务。[更新:随机选择的AP可能会返回比仅选择最佳RSSI更好的结果。]
    这是提供下面讨论的实验结果的系统。在提交检测到的AP所需的带宽(空中时间)与位置查找结果质量之间存在折衷。由于TX时间增加,更多AP等同于更高的准确度但更高的电池消耗。对于第一次评估,任意选择“5”的值。
    WiFi应用程序将扫描AP并大约每10秒钟与Skyhook的ELG服务器执行位置查找请求。
0 A4 T" {$ E  A3 i" _0 ]
实验结果
    位置查找结果数据将打印到控制台,并保留在内部512元素缓冲区中。缓冲区可以格式化为CSV或KML,并使用'skyhook print<csv |打印到控制台 kml>'命令。KML数据适合直接粘贴到空的“.kml”文件中,然后可以将其加载到Google中。
    测试数据是在非常寒冷的城市(加拿大卡尔加里)周围驾驶而产生的。如图所示,Nucleo板在我通过后窗暴露的热身车内。我有一个平板电脑连接到电路板,为它供电,并使用Tera Term捕获kml数据。我的手机设置为移动热点,留在杯架中。
7.jpg
汽车WiFi定位测试实验装置

# F8 [! |; m. R8 T
! W: m% x" ?6 s3 D5 I; P
    下面显示的是整体驱动器。起点位于图像的左侧,结束于图像底部区域的“78”点。在无法获得WiFi信号的区域周围有一些空隙,例如在Nose Hill公园和Deerfoot旁边。无论如何,整体路线很明显。驱动器的终点发生在俯瞰市中心的当地道路上。您会注意到一个简短的异常现象,无论出于何种原因,WiFi系统似乎选择了河对岸的几个点(我没有去市中心)。
8.jpg
WiFi定位试驾在加拿大卡尔加里的部分地区
0 ]. e; X9 A9 K) q$ w" p) |) @
布伦特伍德(单户住宅)内的放大区域显示出良好,准确的跟踪,因为我以50公里/小时的速度沿着Northmount Drive行驶。
9.jpg
良好的WiFi位置修复在郊区

) R- u, |4 G# B- ?. j1 q' r6 z- H! p
    沿着32nd Ave和Barlow向下的另一个放大区域,然后是16号西侧(1号高速公路),所有道路都是较大的通道。你可以看到我在灯光处停下的地方,因为积分很多,然后随着积分的扩大我加速了。
10.jpg
良好的WiFi定位在商业/工业领域
, q! O; K, t8 ^
结论
    总的来说,我们看到在密集的郊区和商业区的跟踪非常好。沿着公园,更宽的路权和高速公路,系统通常无法进行准确的定位或生产。
    大部分位置定位估计在实际位置的50米范围内,在某些情况下,在10米或更短的范围内。在计算这些定位时会有很多东西。设置限制5 AP将对获得的结果产生负面影响,例如,与10 AP的数据相比。还应注意,许多AP产生两个唯一的SSID(例如“访客”),其可以快速阻塞具有冗余信息的扫描列表。需要研究电池使用(播出时间)与获得最佳结果的AP数量之间的权衡。
    看到这个系统在较小的道路/密集区域,工业园区,商场内部建筑物以及当然市中心工作,这将是非常有趣的!我会留给你的。
    WiFi定位确实表现良好,再加上一些板载处理和少量传感器融合,可以实现低功耗,低成本的物联网资产跟踪解决方案。
   注意:如果您希望查看添加到固件的功能或报告问题,请转到GitHub上的WPS固件项目存储库并提交您的请求或问题。
# t$ s; Z) x: e0 |

+ i# \7 d% G0 E. g
代码
SkyhookWireless/ 嵌入式客户端--- embedded-client-master.zip (188.42 KB, 下载次数: 11)
收藏 评论0 发布时间:2019-3-11 17:13

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版