文章目录

  • 一、目的
  • 二、使用的器件
    • 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:

通过GPRS将GPS数据上传到服务器相关推荐

  1. 单片机 上传服务器协议,单片机数据上传云服务器

    单片机数据上传云服务器 内容精选 换一换 公有云平台提供的云监控,可以对云耀云服务器的运行状态进行日常监控.您可以通过管理控制台,直观地查看云耀云服务器的各项监控指标.云耀云服务器正常运行.关机.故障 ...

  2. 数据上传虚拟服务器,如何上传数据到虚拟主机

    如何上传数据到 上传数据到虚拟主机,一般采取FTP软件方式较多. 1.FTP上传 FTP是连接虚拟主机,管理虚拟主机文件的重要方式.由于技术原因,虚拟主机无法远程管理,主要采取控制面板和FTP方式.可 ...

  3. SIM808调试笔记(GNSS获取经纬度,GPRS数据上传到服务器)

    前一段时间调了LoNet 808,基于SIM808,就是下图这块板子.遇到了一些困难,记录下来,希望以后遇到类似问题有个参考.可能会有理解错误的地方,欢迎指出. 1.建立串口通信. 板子使用3.7V ...

  4. 怎么把项目的数据上传到服务器,怎么把sql数据库上传到云服务器

    怎么把sql数据库上传到云服务器 内容精选 换一换 本章介绍如何在管理控制台购买GaussDB(for openGauss)实例,并通过内网使用弹性云服务器连接GaussDB(for openGaus ...

  5. android post数据到php服务器,通过post方法将数据上传到服务器Android Studio

    我正试图通过android studio中的POST请求上传一张图片到服务器上,但我完全被困住了. 控制台没有给我任何信息,可以指出出了什么问题,当我单击上传,它只是不工作. 我在postexecut ...

  6. 可通过蓝牙,WiFi,4G实现录音数据上传的WT2605新型音频芯片在录音笔等产品的应用解析

    概述:本文主要介绍一款新型的音频芯片WT2605在录音产品中的应用与实现,主要依靠音频芯片通过ADC采集数据,将数据编码为音频流数据存储在本地,也可通过外设将数据传给蓝牙/WiFi/4G模块,实现录音 ...

  7. 服务器面对大量数据上传处理思想

    同样是一个面试问题,面对大量设备同时传入数据如何处理,记录下来. 当大量设备连接服务器,大量数据上传到服务器,服务器要如何提高处理能力,来处理这些数据,数据源为设备数据. 服务器处理数据可以从已下几个 ...

  8. 微信小程序实现用form表单包裹输入的数据并上传到服务器

    两个输入框分别为input与textarea,然后用form表单包裹两个输入框所输入的数据,再上传到服务器,效果图: post.wxml <form bindsubmit="formS ...

  9. java代码上传exel,excle上传服务器并解析!求excel上传到服务器的java代码

    如何将数据上传给服务器 医嘱以形式发送过来? 办法有很多,最简单的,就是在机器里,建立2个数据库A,B,假如A是外务器. 在数据库中,以A数据库做发布,让B数据库订阅,弄好以后,A数据库的数据就会自动 ...

最新文章

  1. html wbr标签,HTML wbr标签
  2. 堆(heap)与栈(stack)的区别(二)
  3. 1分钟读懂直播和音视频通话的区别
  4. js中的错误missing ( before function parameter
  5. 使用栈来完成一个表达式的结果
  6. centos java创建文件_CentOS java生成文件并赋予权限的问题
  7. Scala初体验之:Map
  8. 11gR2conceptes Memory Architecture中文翻译
  9. bzoj 3308: 九月的咖啡店(最大费用最大流)
  10. ctr z撤回反向_Ctrl+Z 的反快捷键是什么
  11. 利用ldirectord实现lvs后端realserver健康状态检查
  12. 哈尔滨理工大学计算机学院竞赛,计算机学院成功举办学院Arduino创意设计竞赛...
  13. 基于51单片机智能温控风扇设计
  14. GitHub上传代码及在线demo演示
  15. java实现图片查看器
  16. discuz发帖流程_C#代码、流程discuz论坛批量或自动发帖
  17. [leetcode] 935 Knight Dialer 骑士拨号器
  18. 微信设置“种草昵称”,个性有意思,来看看!
  19. 邮箱个性签名html模板,邮件个性签名大全_邮件的经典个性签名模板
  20. duplicate复制数据库(rac-单实例)

热门文章

  1. 各种资源--可免费下载数据的网站(感觉可以的话来波点赞关注哟)
  2. 安装Adobe AIR 时出错 管理员可能不允许安装
  3. pandas dataframe 两列转字典
  4. php wms系统,wms系统的基本功能
  5. 如何在jieba分词中加自定义词典_常见中文分词包比较
  6. FRU 121SS080C/ASM BAHL00L6S
  7. unity探索者之Shader Graph所有节点详解-Procedural篇
  8. 小萌谈 RobotArt(8)——从一只猴子看如何消除离线编程的误差
  9. Docker部署mqtt服务器(emqx),密码认证
  10. a:link,a:visited,a:hover,a:active 分别是什么意思?