Python + ESP32 制作车辆定位系统,终于可以随时随地知道爱车的位置了

2023-05-16

 来这里发现更多有趣案例

 HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。https://haas.iot.aliyun.com/solution/

下图是本案例除硬件连线外的3步导学,每个步骤中实现的功能请参考图中的说明。在硬件连线完成之后我们建议您先使用“一分钟上云体验”功能预先体验本案例的实际运行效果。

1、简介

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

1.1、背景知识

1.1.1、卫星定位系统

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

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

GPS

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

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

1.1.2、基站定位

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

1.2、准备

   需要准备如下硬件:

    • ESP32开发板(ESP32乐鑫开发板、NodeMCU-32S或pyWiFi-ESP32)一台
    • GNSS定位模块-HT2828Z3G5L 一个
    • 杜邦线若干

ESP32各开发板和HT2828Z3G5L硬件接线请参考下表。

硬件

HT2828Z3G5L

乐鑫

ESP32开发板

安信可

NODEMCU-32S开发板

01Studio

pyWiFi-ESP32开发板

端口标识

GND

GND

GND

GND

VCC

3V3

3V3

3V3

TX

16

P16

16

RX

17

P17

17

硬件说明

硬件积木说明

快速开始

详细端口定义

快速开始

详细端口定义

快速开始

详细端口定义

   下图是以NODEMCU-32S开发板为例的接线图。

2、物联网平台开发

2.1、开通公共实例

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

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

   开通物联网平台功能之后,需要下面的3个步骤完成云端设备的设定:

    1. 创建产品(设备模型)
    2. 定义产品功能(物模型)
    3. 创建设备及获取三元组

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   批量生成的设备如下:

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

2.4.1、下面获取设备三元组

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

3、设备端开发

3.1、开发环境

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

3.2、创建解决方案

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

   

   设定好工程名称及工作区路径之后,硬件类型选择ESP32,点击立即创建,创建一个Python轻应用的解决方案。

   下载定位脚本压缩包后解压,复制全部文件后,覆盖刚刚创建的gnss工程目录下。main.py代码区如下图所示:

   

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

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

  1. 填写Wi-Fi名称及密码

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


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

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


# 三元组信息
productKey     = "产品key"
deviceName     = "设备名称"
deviceSecret   = "设备密钥"  

4、运行结果

4.1、本地查看

   推送此脚本到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.2、在物联网平台上查看设备数据

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

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

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

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

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

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

5.1、新建“普通项目”

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

5.2、关联产品

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

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

5.4、创建“Web应用”

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

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

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

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

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

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

5.5、发布上线

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python + ESP32 制作车辆定位系统,终于可以随时随地知道爱车的位置了 的相关文章

  • ARMv9能给ARM带来新一轮腾飞吗?(安全篇)

    接上文 在上一篇文章中 xff0c 讲了下ARM在ARMv9中人工智能领域的相关技术SVE2 xff0c 以及其他人工智能相关的布局 对于ARMv9是否能给ARM带来腾飞 xff0c 仅根据SVE2 xff0c 我认为是不够的 ARMv9另
  • 5G会给物联网行业带来哪些变化?

    不看这几篇好文 xff0c 就别说自己了解物联网 2019 年是5G的商用元年 xff0c 作为街头巷议的热点技术 xff0c 5G到底是什么 xff1f 5G当前的进展怎么样 xff1f 5G的应用场景有哪些 xff1f 5G技术的普及又
  • 必须要了解的物联网安全知识

    不看这几篇好文 xff0c 就别说自己了解物联网 物联网安全概述 物联网的本质 xff0c 是从端到云的数据交互及计算过程 根据这个特点 xff0c 可以将物联网划分为3个层次 xff1a 云 网络和设备 xff0c 也就形成了物联网的攻击
  • 物联网太难 ? 不妨试试用Python来开发

    不看这几篇好文 xff0c 就别说自己了解物联网 开篇 Python 作为一门快速发展的解释性编程语言 xff0c 数以百万计的开发者已经将Python应用在人工智能 游戏开发 数据挖掘 信息安全 系统运维等行业并取得了成功 现如今 xff
  • 边缘计算在物联网行业的应用

    不看这几篇好文 xff0c 就别说自己了解物联网 引言 边缘计算并不是诞生于物联网时代 xff0c AKAMAI作为一家内容分发网络CDN和云服务的提供商 xff0c 并且是世界上最大的分布式计算服务商之一 xff0c 早在2003年就和I
  • 物联网碎片化的一些思考

    不看这几篇好文 xff0c 就别说自己了解物联网 提到物联网遇到的挑战 xff0c 都会谈到物联网碎片化 造成物联网碎片化的原因主要包括以下两个 xff1a 从 物 的大小角度 xff1a 有的 物 很大 xff0c 如一些边缘网关智能设备
  • 开源硬件的前世今生

    不看这几篇好文 xff0c 就别说自己了解物联网 1 序言 在互联网爆发式增长了几十年的今天 xff0c 越来越多的末端硬件设备已经具备连接网络的能力 xff0c 业态也越来越丰富 xff0c 这就是今天所说的物联网 作为一个08年就开始玩
  • 为什么物联网领域使用Rust的项目越来越多?

    不看这几篇好文 xff0c 就别说自己了解物联网 1 概述 Rust是由 Mozilla 员工Graydon Hoare于2006年作为个人项目而创造 xff0c Mozilla于2009年开始赞助该项目 2012年 xff0c 第一个Ru
  • 华为、阿里、小米都在用的全屋智能技术

    不看这几篇好文 xff0c 就别说自己了解物联网 引言 随着物联网技术以及5G技术的高速发展 xff0c 家电 安防 家居等相关领域大厂相继入局 xff0c 曾经不敢想象的联动场景开始走进我们的生活 xff0c 10年前 xff0c 你或许
  • JAVA 正则表达式 (超详细)

    新网站上线 欢迎大家 网站交易中心 在这里你可以购买或者出售你的网站 网站信息发布中心 在这里有各种交易信息的发布 同时提供 一些软件的免费使用 xff08 附有源码 xff09 网站博客系统 这里你可以注册自己的博客 一个账户无限量博客
  • 下一个智能硬件爆品是什么?

    不看这几篇好文 xff0c 就别说自己了解物联网 1 智能硬件迅猛发展 谈到智能硬件 xff0c 业界较认可的定义是 xff1a 智能硬件是继智能手机之后的一个科技概念 xff0c 通过软硬件结合的方式 xff0c 对传统设备进行改造 xf
  • 物联网教育现状和前景

    不看这几篇好文 xff0c 就别说自己了解物联网 1 物联网行业现状 1 1 高速发展的物联网行业 物联网 xff08 The Internet of Things xff0c 简称IoT xff09 是指通过各种传感器技术 射频识别技术
  • 一文看懂蓝牙在物联网中的应用场景

    不看这几篇好文 xff0c 就别说自己了解物联网 简介 蓝牙作为一项发明于上世纪的近距离无线通信技术 xff0c 在手机 xff0c 电脑领域已经有了充分地基础 xff0c 那么这项技术在物联网领域又会有哪些应用场景呢 xff1f 蓝牙技术
  • 物联网设备连接的下一个引爆点:4G Cat.1

    不看这几篇好文 xff0c 就别说自己了解物联网 一 背景 物联网从概念兴起至今已经过了好几些年了 何为物联网 xff0c 首先要定义何为 物 xff08 Things xff09 xff0c 笔者理解所有具备连接能力的设备都可以是物 xf
  • 物联网云端一体人工智能方案的探索

    不看这几篇好文 xff0c 就别说自己了解物联网 1 高速发展的人工智能 说到人工智能 xff0c 大家并不陌生 xff0c 无论是围棋大战中战胜顶尖段位人类围棋手的Alpha Go xff0c 还是弹跳自如的波士顿机器狗 而无数的科幻电影
  • 带你走进多媒体世界:视频文件是怎么播放出来的

    不看这几篇好文 xff0c 就别说自己了解物联网 1 前言 多媒体是什么 xff1f 维基百科的解释是 xff1a 多媒体 xff08 Multimedia xff09 xff0c 在电脑应用系统中 xff0c 组合两种或两种以上媒体的一种
  • 从语音交互历史浅看它是否会是物联网行业的一个爆点?

    不看这几篇好文 xff0c 就别说自己了解物联网 背景 近几年得益于人工智能在语音领域的突破 xff0c 语音AI已经趋于成熟 xff0c 尤其在智能音箱领域 xff0c 智能音箱又带来了IoT应用到智能家居 本文主要讨论从语音交互历史看它
  • 物联网之IP Camera解决方案简介

    不看这几篇好文 xff0c 就别说自己了解物联网 前言 IP Camera 即网络摄像头 xff0c 是物联网领域中的一个重要场景 本文将带领读者了解IP Camera这一典型物联网场景的市场 IP Camera的重要组成部分 以及以Haa
  • 如何快速搭建一个像“天猫精灵”的智能语音助手?

    不看这几篇好文 xff0c 就别说自己了解物联网 天猫精灵相信大家都不陌生了 xff0c 它是阿里巴巴于2017年7月5日发布的AI智能终端品牌 让用户以自然语言对话的交互方式 xff0c 实现影音娱乐 购物 信息查询 生活服务等功能操作
  • 如何基于芯片SDK开发安防监控产品

    1 前言 近些年来 xff0c 安防监控市场需求广泛 安防监控已经成众多细分行业 xff0c 如金融 教育 医疗 交通等 xff0c 安全的必需品 消费类市场中 xff0c 随着人们对人身及财产安全意识的不断提升 xff0c 中小企业 商铺

随机推荐