当前位置: 首页 > news >正文

搭建个人的GPS定位系统

    22年接触了一些云服务搭建的技术,了解到很多微服务的搭建是可以通过docker方式的,于是诞生了自己搭建一个GPS定位系统的想法。

    GPS定位是相对成熟的技术了,地面接收设备将采集到位置信息周期性上传到云服务器上,用户登录云服务器,通过前台页面查看设备的位置、速度、轨迹等,也可以设置地理围栏、速度上线,当设备满足特定条件时,发送消息到用户终端(手机、PC等),产生告警信息。应用场景包括车辆定位、宠物跟踪等。

上图中有3个关键部分:

1. GPS定位器

     车辆上用的大概长上图的样子,里面包含基本的原件是GPS接收芯片,近几年的芯片大多已经支持北斗;另外一个就是modem芯片,用于接入运营商网络,传输数据到云平台,早期的都是走GPRS 2G网络,最近的都是通过LTE网络收发数据,本身GPS数据量很小,对带宽要求不高,GPRS够用了,走4G网络优点是覆盖更好,但缺点是功耗变高,车载接收器一般都是用车辆电瓶供电,功耗问题也不大。根据定位需求不同,定位器内部可能也会带一个小容量的锂电池,车辆断电后还能提供几分钟到半小时不等的供电能力。当然,市面上也有长续航(一年)的定位器,不需要额外供电,优点就是可以安装到车辆任意位置,甚至油箱中。这种定位器追求长续航的同时,体积也不会太大,所以是通过缩短GPS芯片工作周期及减少发包频率来达到省电的目的,例如一天发一次数据包,购买的时候可以按个人需求选购。近几年,各种定位平台大量涌现,加上物联网卡资费降低,GPS定位器价格已经非常低了,从某鱼上就可以用十几块钱买到,加上平台费用及SIM卡,一年的费用也就30元。

2. 定位平台

     定位平台起的作用是将GPS接收器采集到的数据保存起来,让用户可以在终端设备上浏览、回放。因为GPS数据就是经纬度信息,平台最关键的技术就是把经纬度和时间信息加工成速度、方向等信息,再叠加到地图上,以直观的方式展现出来。

     当然各种平台为了招揽客户,提供了很多增值功能,例如轨迹回放、速度报警、电子围栏、里程统计等功能。其核心包括Redis缓存、SQL数据库、三方地图接入等。

     平台为了运营的方便,还会设立用户角色,包括设备销售商户、运营商户、管理员、普通用户等,让一些GPS设备的销售商实际负责平台中用户、设备的运营,平台从中赚取平台服务费用,流量的差价,支撑平台设备的日常维护费用。

     近期有个安徽的商户把一个相对简单的定位平台以docker的形式发布出来,获得了很多业余爱好者的专注,笔者就是其中之一,尽管平台对用户数量、设备数量都有限制,无法满足商用的要求,带对于关注技术的笔者而言,真是不小的收获。

      考虑到国内对个人隐私信息的保护不太重视,位置信息本身就属于个人隐私数据,如果平台的安全性出问题,把平台用户身份信息和位置数据同时泄露出去,后果不堪设想。平台的安全性除了技术层面的安全,还包括参与平台管理的人员素质,所以安全性的考虑是笔者搭建自己的定位平台初衷。

3. 客户端

    这个是比较好理解的,用户需要有个终端设备,例如手机、PC等;运维人员也需要在PC上管理用户及设备,客户端就是满足上述用户诉求的,可以是一个Android APP,浏览器的H5页面,甚至微信的小程序等。

GPS平台的几个组成部分介绍说完了,笔者介绍下搭建过程

1. 下载docker镜像安装

可以参考官方的教程

GPSBD®使用手册

      如果想长期运行,最好是在云主机上搭建,因为云主机IP地址是固定的,家庭宽带IP都是动态分配,无法满足诉求,笔者是在群晖上搭了个实验系统,把流程打通后,然后在云主机上重新部署了一遍。

2. gps定位终端的准备

     gps终端可以在某鱼购买,注意,一定要购买没有锁平台的,并且向卖家咨询清楚如何改平台,笔者购买的是部标jt808协议的,也是市面上最便宜,存量最多的平台,拆开后,长这样。

        设备通电,插上SIM卡后,根据指示灯闪烁情况,可以判定是否接入平台成功,也可以在平台的会话管理页面查看接收器是否连接成功。

      接入平台之前,需要通过短信改平台,把设备的IP和端口改成自己的,笔者手头的两个设备短信格式如下,发送后如果收到回复,说明改成功

<SPBSJ*P:BSJGPS*T:AAA.AAA.AAA.AAA,BBB*A:CMNET*N:XXXXXXXXXX>

其中AAA是上述搭建平台的IP,只能IP,不支持域名,BBB是端口,对于808协议,端口是9015,XXXX是设备ID,一般贴在设备上,可以通过短信修改。

     需要注意,808协议规定,设备ID是12位,但购买的gps设备ID不一定是12位,可以通过短信修改设备ID,改成12位即可,笔者卡在这好几天,平台可以收到设备发送的数据,但就是前端不显示轨迹。

    注意,流量卡也需要购买,有的卖家会同时提供流量卡,搞清楚如何续费就行了。当然某宝也有流量卡卖的,不贵,一年也就十块钱,当然也得筛选下卖家,防止购买后卖家跑路的可能性。

     最后,需要在平台上创建一个用户,登录上去,添加设备,输入上述设备ID和协议,这样就完成了用户和设备的绑定,后续只要登录用户账户,就能看到此设备发送的位置信息。

3. 客户端访问

这个平台提供的客户端只有网页方式,没有APP,没有微信小程序,打开网页长这样

相关文章:

  • TorchProtein教程--蛋白质数据结构(2)
  • 动力学(dynamics)与动理学(kinetics)概念辨析
  • Vue | Object.defineProperty()、数据代理、计算属性、监视属性
  • 常见的排序总结
  • kvm存储池
  • T1055 判断闰年 (信息学一本通C++)
  • 【C++】-- STL之用哈希桶模拟实现unordered_set和unordered_map
  • Games104现代游戏引擎入门-lecture17游戏引擎的Gameplay玩法系统基础_Advanced AI
  • [JS]数据类型
  • Transformer 无卷积骨干网络
  • 服务器安全狗是什么意思?有什么功能?
  • MySQL主从复制与读写分离
  • Mysql 面试题
  • 找回过期的微信文件,赶紧收藏这4个方法!
  • dsox4034a是德科技Keysight DSOX4034A示波器
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Angular6错误 Service: No provider for Renderer2
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • EOS是什么
  • Intervention/image 图片处理扩展包的安装和使用
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • pdf文件如何在线转换为jpg图片
  • PHP 的 SAPI 是个什么东西
  • SSH 免密登录
  • Travix是如何部署应用程序到Kubernetes上的
  • 程序员该如何有效的找工作?
  • 订阅Forge Viewer所有的事件
  • 基于组件的设计工作流与界面抽象
  • 前端_面试
  • 思维导图—你不知道的JavaScript中卷
  • 我感觉这是史上最牛的防sql注入方法类
  • ​iOS安全加固方法及实现
  • ​学习一下,什么是预包装食品?​
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #NOIP 2014# day.1 T2 联合权值
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1)(1.13) SiK无线电高级配置(六)
  • (70min)字节暑假实习二面(已挂)
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (zt)最盛行的警世狂言(爆笑)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (一)Linux+Windows下安装ffmpeg
  • (译)2019年前端性能优化清单 — 下篇
  • (转)程序员技术练级攻略
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • ***监测系统的构建(chkrootkit )
  • **PHP分步表单提交思路(分页表单提交)
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core 2.1路线图
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core WebAPI中封装Swagger配置
  • .NET Standard 支持的 .NET Framework 和 .NET Core