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

基于STM32的WiFi定位系统

[复制链接]
木木&点点 发布时间:2019-3-11 17:13
本帖最后由 点点&木木 于 2019-4-13 10:01 编辑 - C/ I( e; k% H$ v

7 C6 H% G) E2 p3 a2 ^0 ]
使用Skyhook和STMicro构建WiFi定位系统。
1.jpg

" ], f) ^/ g8 h$ W9 O( d, j. b0 n

7 d" R2 g- Z$ G
硬件组件
STMicroelectronics STM32 Nucleo-64板
L152RE   ×  1      
STMicroelectronics X-NUCLEO-IDW01M1
SPWF01SA扩展板  ×   1

& x7 o& b8 f! y. k$ {, H9 l; p5 e) T2 d
介绍
通过这4个简单步骤,仅使用WiFi信号可构建下一代物联网定位系统!
: {7 e/ l2 K- C+ ]* O( k/ b
组装STMicro Nucleo硬件。
编写可立即使用的固件。
注册免费的Skyhook Wireless帐户。
配置固件设置

8 X+ v( q6 Z8 [# ^7 Q6 c& Q" q
    使用此系统,您可以在自己的社区或城市周围散步,骑行或驾车来收集结果,并了解基于WiFi的定位如何解决您的物联网资产跟踪挑战。
但在我们进入具体细节之前,让我们来看一些背景材料。

  C- G2 P5 X+ Z$ y8 ~
背景
    下一代物联网资产需要更小,更便宜和更强大的管理设备。作为这种演变的一部分,渗透城市区域的WiFi信号现在可用于提供当前一代资产管理设备中采用的GPS/ GNSS定位技术的低功率替代方案。随着新兴的LPWAN技术,下一代物联网智能城市设备可以实现开辟一整套新的用例。

  X& O! _' i6 s- I) C
    GPS可以降低整体功耗,从而获得更准确的位置。然而,对于许多应用而言,为了实现长期受欢迎的电池寿命,可以接受不太精确的位置,大约10米。

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

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

, @  V; T3 I0 O
    使用Skyhook项目的AES密钥,用户ID以及移动设备热点的WiFi凭据(SSID,密钥,安全类型)配置固件。
    由于该项目已经使用了WiFi模块,我们也使用它通过移动设备的主机点联系Skyhook。这当然不是真正的物联网设备 - 而是使用LPWAN(我们将在另一个项目中实现)。我们可以在周转期间捕获AP信标数据,然后将数据提交给Skyhook,但我们宁愿实时提交扫描结果(如真实物联网设备)以利用幕后功能像位置平滑和过滤。 [更新:Skyhook的ELG服务目前无国籍。因此,将AP扫描数据批处理到Skyhook将返回相同的结果]。
第1步 - 组装硬件
2.jpg
WPS评估硬件设置

/ o+ V% }, j2 }5 s$ H
    如图所示,将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'。
# [3 X3 r$ K& |# E; [  ~+ g
3.jpg
Skyhook用户门户登录/帐户创建页面

& ^1 C8 r$ U0 |4 J, R) \2 k
" _+ \* J( u# j/ ~+ l& e4 J
进入内部后,从仪表板中选择“新建项目”磁贴,然后选择“精确位置”。
4.jpg
Skyhook仪表板选择新的精确位置项目

5 _1 ^$ U( d+ o2 v# Y& ^

7 e; _9 P  @6 [8 h! F
提示输入平台时,选择“ELG”,如图所示。
5.jpg
Skyhook ELG平台选择
# H. }% |+ f7 X+ B" r) j) X
    选择项目名称,单击以完成设置。您的新项目的仪表板将如下所示。可以将“ELG密钥”和“合作伙伴ID”复制并粘贴到终端仿真器(如Tera Term)中,以便在步骤5中配置固件。现在将其记录在其他位置。
6.jpg
Skyhook ELG项目页面

4 @* c3 o0 x) `
第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'命令设置如下所示的参数。

  O( U/ F& z% A* ^8 ~5 i
0000: Contiki> mta set wifi ssid SM-G951U4721 OK
; `" m5 ^2 Q  P0 Z0000: Contiki> mta set wifi passkey kmss242j1 ( `% [" ?& W, ]; @6 x# t  p% c, f
OK / R5 Y1 v. d0 C% D; O: I
0000: Contiki> mta set wifi sectype 2
( V% e9 A8 w* t# t7 @OK 9 j- d4 o: _, j& g, A# s
0000: Contiki> mta set device secret 1BA3D7F013B321137CCD7DB7CE46A4F4 $ U# L  Z& ?0 s3 T& I3 D
OK
. _! c0 b9 f% t/ B. M3 F, a0000: Contiki> mta set device account_id 78221 1 O7 s' @! D6 X, B4 {
OK
4 \( ]6 `/ C$ K! T9 P  q0000: Contiki> mta save
. R+ S2 ]( z+ f" gOK
3 F% {6 |( R* g* |. _* l% G, I- F+ ^0000: Contiki> mta get
, L- j; U3 c* K, w, D$ |3 eWifi ssid: [SM-G951U4721]
. |8 @% W5 p# j8 G$ RWifi sectype: 2 0 T: ]" ]! ]% b( Q" B
Wifi passkey: [kmss242j1] 4 S  g1 x# O% b/ i/ P6 P
Device secret: [1BA3D7F013B321137CCD7DB7CE46A4F4] # t) ?5 K7 Q3 P$ m# l
Device account_id: [78221]
* L. x. M2 c- \. m: T5 w5 S, r4 b9 FDevice device_id: [] $ P4 r) s# ]' _5 h+ _2 a
OTA update server: []
8 @; {  L5 N' h! v8 O" J4 P; M0000: Contiki> reboot( Z9 e% c5 Q0 U/ @' J0 e" g/ K
Rebooting the node in four seconds...
# {& d4 p) \' k; i  j5 x" m- C% Q- o! MWaiting for Provision ready... . w  ^; R# a2 t, }$ n) a
0000: Contiki> ' S, U6 v2 j, u  }! p$ z; [
Starting wifi positioning evaluation platform ( e/ \( n# }+ c9 ]' L3 {  M3 `* @
Starting wifi module. ( {2 }9 }# q# v4 H, h  u$ P4 s
Connecting to AP: SM-G951U4721 0 T5 o5 [1 X9 N4 o: n
Connection result: 0
% C# p, r, X  V0 cGet wifi MAC. 9 W8 _- g  O  H0 o' `8 |
Scan process stopped, waiting for start command. . K/ a. n9 }' ^
0000: Contiki> skyhook start / y; {1 b1 P  s. x9 L0 h0 v/ T3 K
0000: Contiki> Starting 1 J  t2 w8 E( |  p) W& M5 L2 e* k! p
scan loop.
$ P8 }0 ^2 j4 K$ s7 R7 ^  i--- scan cycle 1 ---
1 N' s: ~5 ?7 I6 g1 k>> Running WiFi Scan (0)...
3 A( m# D. Z  m>> Got 6 scan results % |5 I. W! \6 w4 m  g5 p! x" J
>> Running WiFi Scan (1)...
  d) X# h: Y' b& Y7 i1 n>> Got 5 scan results $ `# X$ J5 u7 {, K
>> Running WiFi Scan (2)... ; t' m. a8 W. I0 w2 w- D0 m
>> Got 7 scan results : E. L7 P8 f9 k/ ~) r
Connecting to elg.skyhook.com (0/3)
8 E% C* q# M* c/ Y0 S/ v4 wResult: 0 - ~* J+ J& r) j: ?: r2 p8 h2 W
Sending location request 90 bytes
# u* M3 N3 |( G; ]- x2 ZWrote: 90 bytes. / L4 m1 f# p5 g: d; M  R
Socket closed: 0 / I; g0 \& V) w& e% o
Read location response [0] 118 bytes --------------------- 5 X+ d8 u6 Y5 n1 L) ]! p5 w
latitude: 51.08321099
# i6 l% ?. G( m  R. ]3 u  _! @2 llongitude: -114.15788799 7 l# p7 d5 M; G0 ~1 x+ M2 X, H3 q
street:
9 W: ^, i" K+ ]% x" V* Qaddress: 49 Street NW ) u  I: \8 @0 {2 p: a$ ~3 p
Adding location entry 1 (size=1)/ Y7 t" i: _2 b: G1 ^! Z8 |

1 f' t9 i4 _0 N% |8 O  K) O- I7 h+ T3 B4 @! q
     一旦设置好,就需要使用'mta save'保存。然后键入“rebo​​ot”重新启动设备以开始连接热点。连接后,您可以键入“skyhook start”以开始获取AP信标信息并每10秒请求一次位置查找。注意:您可以使用本地家庭或办公室WiFi的凭据来设置快速演示。它应该返回靠近您所在位置的位置!
6 L% B% c) r! L  j
固件设计细节
    在IoT设备上运行的固件会严重影响位置结果的质量,因为位置查找结果仅与它所基于的数据一样好。
    为了在每个采样周期内获得最佳的Wifi AP数据集,固件应用程序将执行3次连续的AP扫描(每次扫描大约需要一秒钟),并填充按RSSI排序的唯一AP SSID列表。 根据最强信号(RSSI)的前5个AP被提交给Skyhook的ELG服务。[更新:随机选择的AP可能会返回比仅选择最佳RSSI更好的结果。]
    这是提供下面讨论的实验结果的系统。在提交检测到的AP所需的带宽(空中时间)与位置查找结果质量之间存在折衷。由于TX时间增加,更多AP等同于更高的准确度但更高的电池消耗。对于第一次评估,任意选择“5”的值。
    WiFi应用程序将扫描AP并大约每10秒钟与Skyhook的ELG服务器执行位置查找请求。
. [3 L7 C/ m. p: G! b7 a6 C7 q
实验结果
    位置查找结果数据将打印到控制台,并保留在内部512元素缓冲区中。缓冲区可以格式化为CSV或KML,并使用'skyhook print<csv |打印到控制台 kml>'命令。KML数据适合直接粘贴到空的“.kml”文件中,然后可以将其加载到Google中。
    测试数据是在非常寒冷的城市(加拿大卡尔加里)周围驾驶而产生的。如图所示,Nucleo板在我通过后窗暴露的热身车内。我有一个平板电脑连接到电路板,为它供电,并使用Tera Term捕获kml数据。我的手机设置为移动热点,留在杯架中。
7.jpg
汽车WiFi定位测试实验装置

% ~! |) J; f- X1 |/ B, v

0 y/ i) h* {7 e0 ]
    下面显示的是整体驱动器。起点位于图像的左侧,结束于图像底部区域的“78”点。在无法获得WiFi信号的区域周围有一些空隙,例如在Nose Hill公园和Deerfoot旁边。无论如何,整体路线很明显。驱动器的终点发生在俯瞰市中心的当地道路上。您会注意到一个简短的异常现象,无论出于何种原因,WiFi系统似乎选择了河对岸的几个点(我没有去市中心)。
8.jpg
WiFi定位试驾在加拿大卡尔加里的部分地区

9 }0 N# H8 ?: ~" H. v6 H4 d. @. w
布伦特伍德(单户住宅)内的放大区域显示出良好,准确的跟踪,因为我以50公里/小时的速度沿着Northmount Drive行驶。
9.jpg
良好的WiFi位置修复在郊区
+ t0 l% K% F, H( P4 H- [" T
    沿着32nd Ave和Barlow向下的另一个放大区域,然后是16号西侧(1号高速公路),所有道路都是较大的通道。你可以看到我在灯光处停下的地方,因为积分很多,然后随着积分的扩大我加速了。
10.jpg
良好的WiFi定位在商业/工业领域

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

) P2 x$ p. u* W8 t
9 r/ k# ]+ x* ~2 s
代码
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 手机版