通过GPRS将GPS数据上传到服务器
文章目录
- 一、目的
- 二、使用的器件
- 1. GPRS模块和物联网卡
- 2. GPS模块
- 3. MCU
- 三、电路连接
- 四、程序设计
- 五、程序代码
一、目的
将GPS获取到的位置信息,通过GPRS将数据上传到服务器,当然也可以传输其他的信息,这样就可以实现对某些东西的时时定位,比如共享单车、汽车的定位等等。
二、使用的器件
1. GPRS模块和物联网卡
①. GPRS模块使用的是有方的N10标准版,如下图:
②. 腾讯云上购买的移动卡,比自己买方便许多,腾讯还会提供后台管理和其他接口服务,续费什么的也很方便。如下图:
2. GPS模块
使用的是中科微电子的ATGM332D 5N-31,如下图:
3. MCU
我使用的是TI的TM4C123G,不同MCU基本没有区别,使用这个的原因就是比赛TI送了好多块,总得找个地方用吧,哈哈。
三、电路连接
因为要GPS和GPRS通信,所以需要两个UART,一个用来解析GPS返回的数据和打印数据到控制台调试,另一个则与GPRS通信,向GPRS发送数据和接收GPRS返回的数据。
GPS的TX <-------------------------> UART0的RX
UART0的TX <---------------------> 串口模块的RX
GPRS的TX <-----------------------> UART1的RX
GPRS的RX <-----------------------> UART1的TX
四、程序设计
①. GPS数据解析: 根据返回的数据是否有效,有效的话则将数据更新存放GPS数据的结构体,卖家也有相应的例程作为参考,移植过来用就可以了。
②. GPS数据转化: 因为要将数据通过GPRS上传到服务器,通信协议采用HTTP,这就需要将有用的GPS数据转成Json格式,当然要使用cJson了,但是这里有个坑,创建cJson对象时涉及内存申请,需要去startup_TM4C123.s 文件中将堆改到合适的大小,但堆栈加起来不要超过RAM的大小。 如下图所示(这是我修改后的,不然每次创建对象时程序会直接卡死):
③. 解析GPRS返回的数据: 因为每发一条命令后,要等待GPRS会返回不同的数据并进行判断,然后根据实际情况去进行相应的处理,对于返回结果包含特殊字串的可以直接通过strstr()来判断,如“OK”、“ERROR”、“>”等。但实际测试中还是发现,连接几百上千次之后还是会掉入循环卡死,为了保持稳定性,索性直接写个看门狗,卡死强行复位程序。
④. 看门狗部分: 因为程序执行周期(每完成一次连接,发送数据),大概需要三秒多一点,看门狗的触发时间我设置的7秒,如果超过此时间没有喂狗,直接复位。(注:TM4C123G的WDT有二次触发特性)。最后实际测试了四个半小时,建立连接4000次左右,程序没有出现卡死现象。
⑤. 后台的程序就简单用SpringBoot写一下,用来测试。
五、程序代码
- 获取方式:
①. github下载:https://github.com/Beyonderwei/GPS-positioning-system
②. CSDN下载:https://download.csdn.net/download/csdn_x_w/11274960 - IDE:keil5 下载后直接全编译即可使用。
Author: Beyonderwei
Email: beyonderwei@163.com
Website: http://beyonderwei.com
WeChat:
通过GPRS将GPS数据上传到服务器相关推荐
- 单片机 上传服务器协议,单片机数据上传云服务器
单片机数据上传云服务器 内容精选 换一换 公有云平台提供的云监控,可以对云耀云服务器的运行状态进行日常监控.您可以通过管理控制台,直观地查看云耀云服务器的各项监控指标.云耀云服务器正常运行.关机.故障 ...
- 数据上传虚拟服务器,如何上传数据到虚拟主机
如何上传数据到 上传数据到虚拟主机,一般采取FTP软件方式较多. 1.FTP上传 FTP是连接虚拟主机,管理虚拟主机文件的重要方式.由于技术原因,虚拟主机无法远程管理,主要采取控制面板和FTP方式.可 ...
- SIM808调试笔记(GNSS获取经纬度,GPRS数据上传到服务器)
前一段时间调了LoNet 808,基于SIM808,就是下图这块板子.遇到了一些困难,记录下来,希望以后遇到类似问题有个参考.可能会有理解错误的地方,欢迎指出. 1.建立串口通信. 板子使用3.7V ...
- 怎么把项目的数据上传到服务器,怎么把sql数据库上传到云服务器
怎么把sql数据库上传到云服务器 内容精选 换一换 本章介绍如何在管理控制台购买GaussDB(for openGauss)实例,并通过内网使用弹性云服务器连接GaussDB(for openGaus ...
- android post数据到php服务器,通过post方法将数据上传到服务器Android Studio
我正试图通过android studio中的POST请求上传一张图片到服务器上,但我完全被困住了. 控制台没有给我任何信息,可以指出出了什么问题,当我单击上传,它只是不工作. 我在postexecut ...
- 可通过蓝牙,WiFi,4G实现录音数据上传的WT2605新型音频芯片在录音笔等产品的应用解析
概述:本文主要介绍一款新型的音频芯片WT2605在录音产品中的应用与实现,主要依靠音频芯片通过ADC采集数据,将数据编码为音频流数据存储在本地,也可通过外设将数据传给蓝牙/WiFi/4G模块,实现录音 ...
- 服务器面对大量数据上传处理思想
同样是一个面试问题,面对大量设备同时传入数据如何处理,记录下来. 当大量设备连接服务器,大量数据上传到服务器,服务器要如何提高处理能力,来处理这些数据,数据源为设备数据. 服务器处理数据可以从已下几个 ...
- 微信小程序实现用form表单包裹输入的数据并上传到服务器
两个输入框分别为input与textarea,然后用form表单包裹两个输入框所输入的数据,再上传到服务器,效果图: post.wxml <form bindsubmit="formS ...
- java代码上传exel,excle上传服务器并解析!求excel上传到服务器的java代码
如何将数据上传给服务器 医嘱以形式发送过来? 办法有很多,最简单的,就是在机器里,建立2个数据库A,B,假如A是外务器. 在数据库中,以A数据库做发布,让B数据库订阅,弄好以后,A数据库的数据就会自动 ...
最新文章
- html wbr标签,HTML wbr标签
- 堆(heap)与栈(stack)的区别(二)
- 1分钟读懂直播和音视频通话的区别
- js中的错误missing ( before function parameter
- 使用栈来完成一个表达式的结果
- centos java创建文件_CentOS java生成文件并赋予权限的问题
- Scala初体验之:Map
- 11gR2conceptes Memory Architecture中文翻译
- bzoj 3308: 九月的咖啡店(最大费用最大流)
- ctr z撤回反向_Ctrl+Z 的反快捷键是什么
- 利用ldirectord实现lvs后端realserver健康状态检查
- 哈尔滨理工大学计算机学院竞赛,计算机学院成功举办学院Arduino创意设计竞赛...
- 基于51单片机智能温控风扇设计
- GitHub上传代码及在线demo演示
- java实现图片查看器
- discuz发帖流程_C#代码、流程discuz论坛批量或自动发帖
- [leetcode] 935 Knight Dialer 骑士拨号器
- 微信设置“种草昵称”,个性有意思,来看看!
- 邮箱个性签名html模板,邮件个性签名大全_邮件的经典个性签名模板
- duplicate复制数据库(rac-单实例)
热门文章
- 各种资源--可免费下载数据的网站(感觉可以的话来波点赞关注哟)
- 安装Adobe AIR 时出错 管理员可能不允许安装
- pandas dataframe 两列转字典
- php wms系统,wms系统的基本功能
- 如何在jieba分词中加自定义词典_常见中文分词包比较
- FRU 121SS080C/ASM BAHL00L6S
- unity探索者之Shader Graph所有节点详解-Procedural篇
- 小萌谈 RobotArt(8)——从一只猴子看如何消除离线编程的误差
- Docker部署mqtt服务器(emqx),密码认证
- a:link,a:visited,a:hover,a:active 分别是什么意思?