想随时定位自己做的智能设备在哪?安排,ESP32 + HaaS Python足矣,定位还能显示在地图上哦

您所在的位置:网站首页 在哪里屏蔽地图定位信息 想随时定位自己做的智能设备在哪?安排,ESP32 + HaaS Python足矣,定位还能显示在地图上哦

想随时定位自己做的智能设备在哪?安排,ESP32 + HaaS Python足矣,定位还能显示在地图上哦

2024-07-10 04:34| 来源: 网络整理| 查看: 265

在这里插入图片描述

随着智能手机的兴起,定位技术已经深入到我们生活的方方面面,开车导航、定位打车、找寻周边的共享单车、周边的餐厅,还有实时公交信息、实时路况等等,为我们的生活带来了极大的方便。尤其是疫情期间的行程码,几乎每天都要用到。

而近年来,全球掀起了一股自动驾驶热潮,无论是传统车企,还是科技企业,甚至很多初创公司都竞相加入这一行业赛道。进入2021年,自动驾驶热度不减,且“吸金”不断,据不完全统计,从今年年初至今,自动驾驶行业投融资事件超过50起,投融资金额近1000亿元,已超过2018年,达到历年最高值。

定位技术就是其中最重要的技术之一。本文就手把手打造出一个能被随时定位的智能设备,还能在地图上展示该设备的位置信息。只需以下3步:

1、案例背景

本案例中的定位主要是指广域的户外定位,室内定位将在另外案例中介绍。

1.1、卫星定位系统

定位系统是以确定空间位置为目标而构成的相互关联的一个集合体或装置(部件)。这个系统可以保证在任意时刻,地球上任意一点都可以同时观测到至少4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人,安全、准确地沿着选定的路线,准时到达目的地。   

目前主流定位系有除美国的GPS,中国的北斗卫星导航系统、欧盟的伽利略卫星导航系统、俄罗斯全球导航卫星系统等。

GPS

GPS是美国第二代卫星导航系统。按目前的方案,GPS的空间部分使用24颗高度约2.02万千米的卫星组成卫星星座。24颗卫星均为近圆形轨道,运行周期约为11小时58分,分布在6个轨道面上(每轨道面4颗),轨道倾角为55度。卫星的分布使得在全球任何地方、任何时间都可观测到4颗以上的卫星,并能保持良好定位解算精度的几何图形。这就提供了在时间上连续的全球导航能力。

想了解GPS详细信息请参考文章。

北斗卫星导航系统

中国北斗卫星导航系统(英文名称:BeiDou Navigation Satellite System,简称BDS)是中国自行研制的全球卫星导航系统,也是继GPS、GLONASS之后的第三个成熟的卫星导航系统。北斗卫星导航系统(BDS)和美国GPS、俄罗斯GLONASS、欧盟GALILEO,是联合国卫星导航委员会已认定的供应商。

北斗卫星导航系统由空间段、地面段和用户段三部分组成,可在全球范围内全天候、全天时为各类用户提供高精度、高可靠定位、导航、授时服务,并且具备短报文通信能力,已经初步具备区域导航、定位和授时能力,定位精度为分米、厘米级别,测速精度0.2米/秒,授时精度10纳秒。

全球范围内已经有137个国家与北斗卫星导航系统签下了合作协议。随着全球组网的成功,北斗卫星导航系统未来的国际应用空间将会不断扩展。

想了解北斗卫星导航系统详细信息请参考文章

1.2、基站定位

除了像GPS这种卫星定位之外,我们身边的设备如:智能手机、智能手表、穿戴设备等能联网的设备都可以用来定位,通过连接运营商(电信、联通、移动)基站来定位的方式称之为基站定位,或者又称之为移动位置服务(LBS--Location Based Service)。

1.3、硬件连线

本案例只需要准备如下硬件:

SP32开发板 1套杜邦线若干GNSS定位模块 HT2828Z3G5L

其中,HT2828Z3G5L与ESP32的连接如下:

定位模块ESP32引脚名引脚功能连接到引脚引脚序号VBAT/PPS备用电池 / 时间标准脉冲输出NC(不连接)——VCC模块供电,可选3.3V至5V3.3V2TX串口发送端RXD2GPIO16RX串口接收端TXD2GPIO17GND接地GND30EN模块使能,高电平/悬空使能模组工作,低电平模组关闭NC(不连接)——

如下图实物图所示:

2、物联网平台云端开发

整个过程包含以下4个步骤:

开通公共实例创建产品(设备模型)定义产品功能(物模型)创建设备及获取三元组 2.1、开通公共实例

对于第一次使用物联网平台的读者,需要开通实例以使用物联网平台的功能。这里可以使用免费的公共实例进行开发。

在物联网平台中,左上角选择“华东2-上海”,点击“公共实例”,即可开通。

2.2、创建产品(设备模型)

点击“公共实例”,即可进入控制台进行产品创建。然后,点击“创建产品”按钮,即可进入新建产品页面。

进入后,设定“产品名称”,这里我们命名为“车辆定位器”,读者也可以根据自己的喜好来命名。

在“所属品类”中,选择“标准品类”。“标准品类”收录了一些常用的设备模型,其会为我们定义好后续的产品功能(物模型)。我们也可以选择“自定义品类”,来自己定义物模型。在右侧栏中搜索并选择“定位器”。

产品的节点类型选择“直连设备”,数据格式选择“ICA标准数据格式”,检验类型和认证方式选择默认设定即可。开发者可根据自己的需求在“产品描述”页面添加针对此产品的描述。

对于 ESP32 等搭载 Wi-Fi 的设备而言,联网方式可以选择“Wi-Fi”。

选择之后,点击“确认”按钮,即可完成产品创建。返回“产品”页面之后可以看到产品类表中会出现刚刚创建的“车辆定位器”的产品,如下图所示。

2.3、定义产品功能(物模型)

点击上图中的“查看”按钮,即可看到产品信息,Topic列表,功能定义,数据解析等跟产品相关功能的设定。点开“功能定义”标签页,可以看到设备物模型定义。

因为在创建产品的过程中选择了标准的产品品类,这里会出现标准品类中自带的物模型设定,即“地理位置”。点击“查看”,我们可以看到该属性的详情。可以看到,该属性的数据类型是一个结构体(struct),其成员描述了设备的精度(浮点)、维度(浮点)、海拔(浮点)、坐标系统(枚举量,1:WGS_84/2:GCJ_02)

定义好物模型后,记得点击“发布”以使变更生效。

产品及其物模型创建完成后就可以创建这个产品的设备了。

2.4、创建设备及获取三元组

点击左侧栏中“产品“,回到产品列表。在产品列表页面中,点击“管理设备”,就会进到设备管理页面。

在“设备”页面点击“批量添加”按钮,如下图所示。填入需要生成的设备数量。例如图中物联网平台会为我们生成3台设备,以及随机的deviceName。

批量生成的设备如下

设备添加完成后,点击“前往查看”按钮,就可以看到此设备的详细信息了。

获取设备三元组

如下图所示,点击“查看”按钮,就可以看到设备的三元组信息,三元组是物联网设备端和物联网云端设备相关联的唯一标识符,在设备端连接云端的时候会使用三元组信息和云端进行鉴权,鉴权通过之后云端会认为设备已激活并上线。

3、设备端开发

在进行下一步之前请确保ESP32开发环境已经搭建完毕。详情请参考esp32开发环境的说明。 

3.1、创建解决方案

如下图所示,打开HaaS Studio后,新建一个基于helloworld的Python轻应用。

如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定好工程名称(“vehicle_location”)及工作区路径之后,硬件类型选择ESP32,点击立即创建,创建一个Python轻应用的解决方案。

将获取定位数据的全部代码文件复制并覆盖刚刚创建的工程目录下。如下图代码区所示:

Python脚本的详细说明请参考脚本内嵌的文字版注释

之后,在代码中填入对应的信息

填写Wi-Fi名称及密码

   在main.py中,填写可用的Wi-Fi名称及密码。

# wifi连接的的ssid和pwd定义 wifiSsid = "请填写您的路由器名称" wifiPassword = "请填写您的路由器密码" 修改设备端三元组

   在main.py中,填写创建的设备三元组信息。关于设备三元组的获取,请参考获取设备三元组中的步骤。

# 三元组信息 productKey = "产品key" deviceName = "设备名称" deviceSecret = "设备密钥" 3.2、运行结果

本地查看

推送此脚本到ESP32之后,串口会输出获取到的定位信息,同时按照脚本中的逻辑,当定位信息发生变化时,会将更新的定位信息上报至物联网平台。如下面这段串口日志所示。

... ************* python task init******* mount fs >>> execfile("/data/pyamp/main.py") wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False wifi_connected: False ('192.168.0.105', '255.255.255.0', '192.168.0.1', '192.168.0.1') sleep for 1 s establish tcp connection with server(host='a1zxKgAV78Z.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443]) tcp_connect: can only connect from state CLOSED success to establish tcp, fd=54 物联网平台连接成功 sleep for 2s [0.0, 'W'] [0.0, 'N'] 0.0 bytearray(b'$GNGGA,,,,,,0,00,25.5,,,,,,*64\r\n$GNGLL,,,,,,V,M*79\r\n$GNGSA,A,1,,,,,,,,,,,,,25.5,25.5,25.5,1*01\r\n$GNG') [0.0, 'W'] [0.0, 'N'] 0.0 [0.0, 'W'] [0.0, 'N'] 0.0 bytearray(b'SA,A,1,,,,,,,,,,,,,25.5,25.5,25.5,4*04\r\n$GPGSV,1,1,00,0*65\r\n$BDGSV,1,1,00,0*74\r\n$GNRMC,,V,,,,,,,,,,M') [0.0, 'W'] [0.0, 'N'] 0.0 [0.0, 'W'] [0.0, 'N'] 0.0 bytearray(b',V*34\r\n$GNVTG,,,,,,,,,M*2D\r\n$GNZDA,,,,,,*56\r\n$GPTXT,01,01,01,ANTENNA OPEN*25\r\n\r\n$GNRMC,,V,,,,,,,,,,M') [0.0, 'W'] [0.0, 'N'] 0.0 [0.0, 'W'] [0.0, 'N'] 0.0 bytearray(b',V*34\r\n$GNVTG,,,,,,,,,M*2D\r\n$GNZDA,,,,,,*56\r\n$GPTXT,01,01,01,ANTENNA OPEN*25\r\n$GNGGA,,,,,,0,00,25.5,') [0.0, 'W'] [0.0, 'N'] 0.0 [0.0, 'W'] [0.0, 'N'] 0.0 ...

出现此段日志时,说明定位信息上报成功,读者此时可以前往物联网平台查看设备的实时定位数据。

在物联网平台上查看设备数据

当设备启动成功并第一次连接到物联网平台之后,物联网平台上对应的设备状态会从”未激活状态“变为”上线“。点击“物模型数据”标签页,能够看到设备上报到物联网平台的属性值。

点击卡片上的“查看数据”,可以看到完整的历史数据。

此时,如果设备上报新的地理位置信息,则物联网平台上能够实时显示。至此,定位数据上云完成。

4、物联网应用开发(定位数据可视化)

在前面的章节中,我们已经成功将地位信息实时上传到了云端。本节中,我们将介绍如何快速实现将设备的位置实时显示在地图中。

IoT Studio 提供了应用快速开发的能力,可以很方便地与物联网平台进行联动。本节的开发工作也将围绕 IoT Studio展开。 

4.1、新建“普通项目”

打开IoT Studio官网,在项目管理中新建一个空白项目,如下图所示,将此项目命名为“车辆实时定位系统”。

4.2、关联产品

为了使本项目能够获取到目标设备的定位信息,我们首先需要将该项目和我们在前一节创建的产品“车辆定位器”绑定。

在项目控制台,点击左侧的“产品”,点击“关联物联网平台产品”。此时可以看见我们创建的“车辆定位器”。点击选中,并勾选“关联产品同时关联其下所有设备”,以便该项目可以访问到所有设备的定位信息。

4.3、创建“Web应用”

在项目控制台,点击左侧的“主页”,在新项目的首页新建一个Web应用,命名为“车辆实时定位监控”。

Web应用创建成功后自动跳转到应用界面设计页面。点击左侧栏中的“组件”按钮图标,就可以看到可用的组件列表。各组件的说明请参考IoT Studio组件说明。

为了能够将设备显示在地图上,我们选用“设备地图”组件。鼠标悬停在该组件上以查看详细信息。

将“设备地图”组件拖拽至画布,并调整大小。此时,地图上还未能正确显示设备。我们需要点击右侧“编辑设备地图”。

 点击右侧“编辑设备地图”后,我们可以在右侧“选择设备”中,选择我们刚刚和项目绑定的“车辆定位器”。点击确定。

此时,地图上已经出现了定位点,正是我们之前上线的设备。在右侧选择“车辆定位器”,可以看到绑定的所有设备。点击对应设备可以在地图上定位到每个设备的具体位置。至此,“设备地图“配置完成,点击页面右上角”√“保存配置。

4.4、发布上线 

回到WEB应用页面,可以看到地图上的设备定位已经正常显示,可以进行发布。在发布之前可以点击上图的“预览”查看应用的实际运行效果。实际运行效果如下图所示:

这样我们就完成了一个车辆实时定位系统从设备端定位信息获取、物联网云平台开发及物联网应用开发全链路的开发。

如果想要学习车辆定位系统案例更详细的操作步骤,请参考“车辆定位系统详解”中的说明。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3