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

一、目的

  将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:
  • 8
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32GPRS是一种集成了STM32微控制器和GPRS通信模块的设备,用于实现物联网应用和数据传输。要将STM32GPRS数据传输到服务器上,可以按照以下步骤进行: 1. 配置GPRS通信模块:使用STM32GPRS上的AT指令或者在相应的开发环境中,通过串口与GPRS通信模块进行通信,配置相关的参数,例如APN(接入点名称)、用户名、密码等,以便能够与GPRS网络建立连接。 2. 连接GPRS网络:通过发送相应的AT指令,使GPRS通信模块能够连接到GPRS网络。这样,STM32GPRS就能够通过GPRS网络与服务器进行通信。 3. 编写程序:在STM32微控制器上,编写程序以实现数据的采集和传输。可以使用STM32的GPIO口、模拟输入口、定时器等功能,获取传感器数据、监测系统状态等。 4. 封装数据:将获取到的数据进行封装,使其符合特定的协议,方便在服务器端进行解析和处理。可以使用JSON、XML等常用的数据格式。 5. 通过GPRS网络传输数据:使用GPRS通信模块的AT指令或者GPRS库函数,将封装好的数据通过GPRS网络传输到服务器上。可以使用TCP/IP或者HTTP协议进行数据传输。 6. 在服务器端接收和处理数据服务器端可以使用相应的网络编程技术,监听指定端口,接收STM32GPRS发送过来的数据。然后根据协议进行解析和处理,将数据存储到数据库或者进行相应的业务处理。 7. 建立双向通信:如果需要实现双向通信,服务器可以通过GPRS网络向STM32GPRS发送指令或者控制信号。STM32GPRS接收到指令后,执行相应的操作。 通过以上步骤,可以将STM32GPRS数据传输到服务器上,实现数据的监测、控制和存储等功能。 ### 回答2: 将STM32GPRS数据传输到服务器上可以通过以下步骤实现: 1. 配置STM32GPRS模块:首先,需要在STM32控制器上配置GPRS模块的通信参数,如波特率、串口等。这可以通过编程或者使用相关的配置工具完成。 2. 建立GPRS连接:使用STM32控制器向GPRS模块发送AT命令来建立与服务器GPRS连接。通过AT命令可以设置APN地址、用户名和密码等参数。 3. 数据封装:将需要传输的数据按照协议要求进行封装。可以使用JSON、XML等格式对数据进行结构化。 4. 数据传输:使用GPRS模块和STM32控制器进行数据传输。可以通过串口通信或者使用相关的通信接口(如SPI、I2C等)将封装好的数据发送给GPRS模块。 5. 接收数据服务器将接收到的数据进行处理并返回响应。可以使用HTTP或者其他协议进行数据传输。 6. 数据处理:STM32控制器接收到服务器的响应后,可以对数据进行解析处理,如提取关键信息或者进行状态判断。 7. 数据存储:根据实际需求,可以将数据存储在STM32控制器的内部存储器或者外部存储器中,也可以直接将数据传输到服务器上进行存储。 需要注意的是,在进行以上步骤时,要确保网络连接的稳定性和数据的安全性,可以使用加密算法对数据进行加密传输,以保护数据的隐私和完整性。 ### 回答3: 将STM32和GPRS模块连接在一起后,可以通过以下步骤将数据传输到服务器上: 1. 配置GPRS模块:首先,需要通过AT指令初始化和配置GPRS模块。使用串口通信将STM32与GPRS模块连接,并发送AT指令进行模块的初始化。设置GPRS模块的APN、用户名、密码等网络参数,以便连接到互联网。 2. 建立GPRS连接:使用AT指令建立GPRS连接。通过发送指令实现与GPRS网络的连接,比如使用AT+CSTT指令设置APN、AT+CIICR指令建立GPRS连接。 3. 建立TCP连接:使用AT指令建立与服务器的TCP连接。通过AT+CIPSTART指令设置服务器的IP地址和端口号,实现与服务器的TCP连接。 4. 发送数据:将需要传输的数据打包成符合服务器要求的格式,并通过AT+CIPSEND指令发送到服务器。发送前可以通过AT+CIPSEND指令设置数据长度。 5. 接收响应:等待服务器的响应。发送数据后,使用AT指令等待服务器的响应。通过AT+CIPRECVDATA指令可以接收从服务器返回的数据。 6. 关闭连接:数据传输完毕后,使用AT指令关闭与服务器的TCP连接和GPRS连接。通过AT+CIPCLOSE指令实现关闭连接。 通过上述步骤,就可以将STM32上的数据通过GPRS传输到服务器上。但需要注意的是,具体的AT指令会根据使用的GPRS模块和服务器的要求有所不同,需要根据实际情况进行相应的配置和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值