通过GPRS将GPS数据上传到服务器

news/2024/12/2 14:34:17/

文章目录

    • 一、目的
    • 二、使用的器件
      • 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写一下,用来测试。

五、程序代码

  1. 获取方式:
    ①. github下载:https://github.com/Beyonderwei/GPS-positioning-system
    ②. CSDN下载:https://download.csdn.net/download/csdn_x_w/11274960
  2. IDE:keil5 下载后直接全编译即可使用。
      
      
      
    Author: Beyonderwei
    Email: beyonderwei@163.com
    Website: http://beyonderwei.com
    WeChat:

http://www.ppmy.cn/news/521604.html

相关文章

U-BLOX GPS 模块及GPRMC指令解析

受朋友所托&#xff0c;调试一款GPS模块&#xff0c;该模块是UBLOX的NEO-6M GPS模组。想到用这款GPS的人较多&#xff0c;自己日后也有可能在用到这个模块&#xff0c;就写下这份笔记。 一、介绍 基本信息如下&#xff1a; 1、 模块采用U-BLOX NEO-6M模组&#xff0c;体积小巧&…

Gps的GPRMC数据格式详解及要注意的地方

GPRMC数据格式如下&#xff1a; $GPRMC,014600.00,A,2237.496474,N,11356.089515,E,0.0,225.5,310518,2.3,W,A*23 其中&#xff0c;每个字段的描述如下: field 0&#xff1a;$GPRMC, 格式ID&#xff0c;表示该格式为建议的最低特定GPS / TRANSIT数据&#xff08;RMC&#xff…

ora-38500

ORA-38500&#xff1a;USING CURRENT LOGFILE option not available without stand select * from v$standby_log; no rows selecte;主库查询 set linesize 1000 col member for a50 select a.group#,a.thread#,a.bytes/1024/1024/1024 GB,a.status,b.member from v$log a,v$…

福建福安:以茶产业大数据中心为支撑,3800亩智慧茶园走向振兴路

近年来&#xff0c;福安市紧跟数字经济发展步伐&#xff0c;推进当地特色茶产业走规模化、标准化、品牌化的发展之路。由神州信息与福安农垦集团共建的福安市数字农业&#xff08;茶叶&#xff09;项目&#xff0c;通过共建“福安茶产业大数据中心”&#xff0c;基于对多源异构…

金蝶KIS标准版 运行时错误 ‘3800‘: ‘PrimaryKey‘ 不是此表中的一个索引 解决方法

金蝶KIS标准版 运行时错误 3800: PrimaryKey 不是此表中的一个索引。 问题原因&#xff1a;账套数据库表GLVch 丢失主键。 金蝶KIS标准版&#xff0c;凭证查询&#xff0c;提示“运行时错误‘3800’&#xff1a;‘PrimaryKey’不是此表的一个索引”问题描述&#xff1a;KIS标…

年薪90万程序员不如月入3800公务员?安稳与高收入,到底如何选择?

程序员与公务员都是属于令人艳羡的工作&#xff0c;程序员收入高&#xff0c;公务员胜在稳定。两个不同的工种各有优势。但最近一位网友发言&#xff0c; 掀起了工作应该追求收入&#xff0c;还是追求稳定的讨论。 有位网友在职业论坛上分享自己的工作经历&#xff1a;自己毕业…

Keras多层感知器模型对IMDB进行情感分析

面向&#xff1a;对keras、多层感知器模型、IMDb数据有一定认识 参考教材《TensorFLowKeras深度学习人工智能应用》 实现工具&#xff1a;jupyter notebook 基本流程 &#xff08;1&#xff09;数据预处理&#xff08;2&#xff09;建立多层感知器模型&#xff08;3&#xff0…

VMware SD-WAN Edge 3X00操作指南

交流、咨询需求&#xff1a;V&#xff1a;carrmi 型号&#xff1a;Edge 3X00 部件号&#xff1a; Edge 3400&#xff0c; Edge 3800&#xff0c; Edge 3810 SD-WAN Edge 3X00 系列包括以下内容&#xff1a; • 6 个千兆以太网连接 • 局域网/广域网可配置&#xff0c;…