大数跨境
0
0

车载GPS追踪器?这块物联网开发板可以!

车载GPS追踪器?这块物联网开发板可以! DF创客社区
2020-04-15
2
导读:用TinkerNode制作一个车载GPS跟踪器,通过云端查询实时路径。
【点击上方「蓝字」关注DF,一起成为技术颜控!】

Hello,大家好。通过之前的项目学习,相信大家已经对TinkerNode NB-IoT物联网开发板(以下简称TinkerNode)有了一定的了解。

这次项目我们将用TinkerNode制作一个车载GPS跟踪器学习和使用TinkerNode的GPS功能,并使用NB-IoT技术将GPS信息上传至阿里云平台,通过云端查询实时路径

项目的主要目的:

① 学习TinkerNode的GPS功能的使用
② 学习阿里云平台GPS相关功能的使用

项目视频

为了方便大家更好地学习,我们会在近期更新视频版本项目教程,公众号也会第一时间发布,敬请期待

元器件清单

  • TinkerNode NB-IoT开发板 x1[1]

项目相关功能介绍

首先,我们先来了解一下本次项目中使用到TinkerNode的功能。

GPS

TinkerNode板载的BC20模组,除了NB-IoT功能外,还带有GNSS定位功能,可以识别GPS和BeiDou两种卫星定位系统。

在使用GPS功能前,需要按照产品wiki[2]将GNSS的陶瓷天线安装在TinkerNode的GNSS天线接口上,如下图所示。

PS:在使用GNSS定位功能时,天线要朝向天空,且无遮挡。

阿里云平台配置

了解完GNSS功能后,我们开始项目的制作。和之前的项目相同,我们首先需要进行阿里云平台的配置,然后为项目创建产品和设备,配置产品自定义功能(物模型)。在物联网平台的页面左侧,选择IoT Studio -> 项目管理,点击新建项目,新建一个空白项目,项目名称为“GPS Tracker”,如下图所示。

创建完成后,我们会进入“GPS Tracker”项目的管理页面,如下图所示。

新建产品

在项目管理页面左侧的功能栏点击产品,在弹出的产品页面中选择新建产品,如下图所示。

产品的名称填写“GPS跟踪器”,所属品类选择“自定义品类”,其他选项默认,如下图所示。

完成后点击保存,此时已经在项目下创建了一个名为“GPS跟踪器”的新产品。

功能定义

接下来,我们需要为产品添加功能,也叫作定义产品的“物模型”,物模型创建的过程就是通过协议描述产品的功能,定义产品有几组传感器数据,有什么控制功能,数据的类型是什么。点击“GPS跟踪器”产品后的查看,进入该产品的管理页面,如下图所示。

在这里我们要对产品进行功能定义,与之前的项目不同的是,除了自定义功能的方式外,本次项目还可以使用阿里云平台已经内置的标准功能,接下来我将会为大家分别介绍这两种方法。

① 标准功能

阿里云平台为了方便客户的使用,已经内置了多种可以直接使用的标准功能,省去了繁杂的配置过程。

选择功能定义 -> 标准功能 -> 添加标准功能 ,如下图所示。

在窗口的搜索栏中,输入“地理位置”,选择任意一个标识符为“GeoLocation”的标准功能,选择后该功能会出现在右侧的已选功能栏,然后点击确定,如下图所示。

添加完成后,可以看到对应的产品功能已经出现在了产品的功能定义中,如下图所示。

② 自定义功能

如果需要后续进行自行开发,想要了解向阿里云平台上传信息时的JSON协议格式,大家也可以进行自定义的功能配置。

PS:如果要进行自定义功能配置,需要删除刚刚创建的标准功能。

在“车载GPS跟踪器”这个项目中,我们需要向云端上传GNSS定位信息中的,经度、纬度和高度,并选择相应的坐标类型,共四个数据。由于TinkerNode与阿里云通讯时,使用的是JSON格式,所以在选择数据类型时,要选择“struct(结构体)”。

在功能定义中选择自定义功能,点击添加自定义功能,如下图所示。

在弹出的窗口中填写相关信息,功能名称填写为“地理位置”,标识符填写为“Geolocation”,数据类型选择“struct(结构体)”,如下图所示。

接下来,让我们为结构体添加JSON对象的参数信息。前面我们已经说过,我们需要上传四个GPS的信息,分别是经度、纬度、高度和坐标类型。

① 经度

点击新增参数,按照下面的表格在弹出的窗口中填写对应信息,如下图所示。

参数名称 经度
标识符 Longitude
数据类型 double(双精度浮点型)
取值范围 -180~180
步长 0.01
单位 度/°

② 纬度

按照下列表格,填写相关信息。注意纬度的取值范围是“-90~90”,完成后如下图所示。

参数名称 纬度
标识符 Latitude
数据类型 double(双精度浮点型)
取值范围 -90~90
步长 0.01
单位 度/°

③ 高度

按照下列表格,填写相关信息。

参数名称 高度
标识符 Altitude
数据类型 double(双精度浮点型)
取值范围 0~9999
步长 0.01
单位 度/°

④ 坐标系统

为了描述或确定位置,必须建立坐标系统,坐标只有存在于某个坐标系统才有实际的意义与具体的位置。以下是两种不同类型的坐标类型:

WGS_84:国际经纬度坐标标准。

GCJ_02:由国测局制定,是对地理位置进行首次加密后的一种坐标类型。

按照下列信息,填写相关信息。

参数名称 坐标系统
标识符 CoordinateSystem
数据类型 enum(枚举型)

接下来我们需要为坐标系统增加两个枚举项,信息如下表所示。

参数值 参数描述
1 WGS_84
2 GCJ_02

新增设备

完成了产品的功能定义之后,接下来我们为产品建立一个设备,这样我们就可以将TinkerNode连接到阿里云平台,并上传GPS信息了。

在项目管理页面左侧的功能栏点击设备,在弹出的设备页面中选择新增设备,如下图所示。

弹出的窗口中,产品选择“GPS跟踪器”,添加方式选择自动生成,设备数量填写1,点击提交,如下图所示。

硬件相关配置

代码调试

在附件中下载项目代码。

① 上传数据格式

在于阿里云进行通信时,需要通过JSON格式进行通信,我们可以从阿里云的官方文档中,找到GPS功能的上传请求示例,如下图所示。

在Arduino代码中,我们需要添加一些转义字符,并将相应的变量名填写到相应位置,最终效果如下列代码所示。

"{
\"id\":"+ClientId+",
\"params\":{
\""+Identifier+"\":{
\"value\":{
\"Longitude\":"+sGGNS.LongitudeVal+",
\"Latitude\":"+sGGNS.LatitudeVal+",
\"Altitude\":"+sGGNS.Altitude+",
\"CoordinateSystem\":"+(String)2+"
}
}
},
\"method\":\"thing.event.property.post\"
}"

在实际使用中,我们通过TinkerNode的NB-IoT功能向阿里云上传数据时,需要在代码中调用函数"myBC20.publish()"向指定的设备上传数据,实际使用时需要删除换行,代码如下所示。

myBC20.publish(pubTopic, ("{\"id\":"+ClientId+",\"params\":{\""+Identifier+"\":{\"value\":{\"Longitude\":"+sGGNS.LongitudeVal+",\"Latitude\":"+sGGNS.LatitudeVal+",\"Altitude\":"+sGGNS.Altitude+",\"CoordinateSystem\":"+(String)2+"}}},\"method\":\"thing.event.property.post\"  }"));

② 阿里云相关配置

我们需要根据阿里云平台的配置信息,在项目代码中做对应的修改。

在设备页面查看设备证书信息,填写在代码中对应位置。

//配置证书信息
String ProductKey = "Your_Product_Key";
String ClientId = "12345";
String DeviceName = "Your_Device_Name";
String DeviceSecret = "Your_Device_Secret";

在产品页面查看产品的功能标识符,填写在代码中对应位置。

//配置产品标识符
String Identifier = "Your_Identifier";

在设备管理页面,查看物模型Topic信息,填写在代码中对应位置。物模型Topic是阿里云平台自动生成的,服务端和设备端通过Topic来实现消息通信。

//需要发布和订阅的Topic
const char * subTopic = "Your_sub_Topic";//****set
const char * pubTopic = "Your_pub_Topic";//******post

全部配置完成后,将代码上传至TinkerNode主控板。待代码上传完成后,就可以在阿里云平台上看到设备上传的位置信息了。

查看云平台信息

待代码上传完成后,进入GPS Tracker设备页面,可以看到设备已经是在线状态,点击查看,进入该设备的管理页面,如下图所示。

进入设备页面后,点击运行状态,点击查看数据,可以看到TinkerNode上传的GPS信息,如下图所示。

至此,我们已经将GPS信息上传到了云平台。接下来我们将会使用阿里云平台的IoT Studio中的可视化页面功能,将上传的GPS信息展示在地图上。

可视化页面制作

点击主页,新建一个Web应用。

名称填写“GPS地图”,点击确认,进入可视化开发界面。

点击左侧的组件,将“设备地图”拖拽到画布中,如下图所示。

点击地图组件,点击右侧的“编辑设备地图”,选择地图组件上显示的设备,如下图所示。

进入设备地图编辑器后,点击选择产品,在弹出的窗口中,选择“GPS跟踪器”产品,点击确定。

回到可视化开发界面,点击右上角的预览。在弹出的窗口,选择对应的设备,就可以在地图上查看定位信息了。

PS:GPS定位信息同步至地图时,并不完全准确。这是由于地图信息被加密导致的,这是保证国土信息安全的重要手段之一。

相关链接

[1]

TinkerNode NB-IoT开发板: https://www.dfrobot.com.cn/goods-2580.html

[2]

NB-IoT开发板Wiki: https://urlify.cn/Yz6fmq


硬件购买请戳👆


大家有什么想法,欢迎下方留言

欢迎大家点击阅读原文,到社区论坛与作者直接交流!

   

 往期回顾 

【TinkerNode NB-IoT物联网开发板】户外水质监测项目

【TinkerNode NB-IoT 物联网开发板】WiFi物联网窗帘

【TinkerNode NB-IoT物联网开发板】智能家居入门教程


【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读2.4k
粉丝0
内容1.3k