SIM800C连接OneNet平台HTTP协议上传GPS数据

发布者:快乐航程最新更新时间:2022-09-15 来源: csdn关键字:SIM800C  OneNet平台  HTTP协议  GPS数据 手机看文章 扫描二维码
随时随地手机看文章

1. 前言

科技进步不断推动新产品的出现,越来越多的电子产品开始着力解决社会焦点问题,随着城市发展以及人口流动性的增加,儿童户外被拐,老人外出走丢,交通工具被盗和大型物件丢失等问题变样严重起来,因此,为了更好地利用现代科学技术解决社会关注的问题。本文就设计出一款基于STM32的智能云端定位器。 主控芯片采用STM32F103C8T6,联网模块采用SIM800C,云平台采用中国移动的OneNet平台。


STM32采集GPS定位数据之后,通过SIM800C将数据上传到OneNet平台进行实时显示。

在这里插入图片描述

image-20220408150916504

image-20220408150715452

接下来就一步一步完成,智能云端定位器的设计。


2. 创建产品

官网地址: https://open.iot.10086.cn/

image-20220408143221729

image-20220408143241526

image-20220408143327664

image-20220408143350583

3. 创建设备

点击创建好的产品名称,进入设备创建页面。

image-20220408143506700

添加设备。

image-20220408143526173

image-20220408143643023

添加成功会,点击详情,查看详细信息。

image-20220408143702421

添加APIkey

image-20220408143751585

image-20220408143821165

设备添加成功。

image-20220408143845361

这个页面的设备ID和APIKEY需要保存下来,接下来SIM800C上传数据到onenet平台,就需要使用这个参数。


设备ID  :  920668935

APIKey :  XMwqaSZATs=ZlXq4Tk4NA44WTl4=


4. 创建数据流模板

image-20220408144101594

image-20220408144132950

添加成功。

image-20220408144155641

5. STM32设备端代码

如果需要项目工程源码,可以去这里下载:https://download.csdn.net/download/xiaolong1126626497/85896011


(1)硬件接线

SIM800C接线说明:

GND----GND

VCC----3.3V

STM32_PA2----SIM800C_RXD

STM32_PA3----SIM800C_TXD


(2)实现的核心代码

/*

函数功能: 采用HTTP协议方式向OneNet服务器上报数据

函数参数:

char *data_point:数据点的名称

u32 data :上传的数据

*/

char OneNet_HTTP_CMD[1024];

char OneNet_HTTP_BUFF[300];

#define ONENET_DEVICE_ID "920668935"

#define ONENET_API_KEY "XMwqaSZATs=ZlXq4Tk4NA44WTl4="


void OneNet_HTTP_DataUpdate(char *data_point,u32 data)

{

//拼接数据

  snprintf(OneNet_HTTP_BUFF,sizeof(OneNet_HTTP_BUFF),

"{"datastreams":[{"id":"%s","datapoints":[{"value":%d}]}]}",data_point,data);


//拼接数据

snprintf(OneNet_HTTP_CMD,sizeof(OneNet_HTTP_CMD),

"POST /devices/%s/datapoints HTTP/1.1rn"

"api-key:%srn"

"Host:api.heclouds.comrn"

"Connection:closern"

"Content-Length:%drn"

"rn"

"%s",

    ONENET_DEVICE_ID,ONENET_API_KEY,strlen(OneNet_HTTP_BUFF),OneNet_HTTP_BUFF

);

printf("OneNet_HTTP_CMD=%srn",OneNet_HTTP_CMD);

printf("连接服务器的状态:%drn",SIM800C_Connect_TCP_Server("183.230.40.33","80"));

DelayMs(500);

printf("数据发送的状态:%drn",SIIM800C_TCP_SendData((u8*)OneNet_HTTP_CMD,strlen(OneNet_HTTP_CMD)));

}


/*

函数功能: 采用HTTP协议方式向OneNet服务器上报GPS经纬度信息

函数参数:

char *data_point:数据点的名称

double Longitude,double latitude:上传的经纬度数据

*/

void OneNet_HTTP_GPS_DataUpdate(char *data_point,double Longitude,double latitude)

{

//拼接数据

  snprintf(OneNet_HTTP_BUFF,sizeof(OneNet_HTTP_BUFF),

"{"datastreams":[{"id":"%s","datapoints":[{"value":{"lon":%lf,"lat":%lf}}]}]}",

   data_point,Longitude,latitude);


//拼接数据

snprintf(OneNet_HTTP_CMD,sizeof(OneNet_HTTP_CMD),

"POST /devices/%s/datapoints HTTP/1.1rn"

"api-key:%srn"

"Host:api.heclouds.comrn"

"Connection:closern"

"Content-Length:%drn"

"rn"

"%s",

    ONENET_DEVICE_ID,ONENET_API_KEY,strlen(OneNet_HTTP_BUFF),OneNet_HTTP_BUFF

);

printf("GPS_OneNet_HTTP_CMD=%srn",OneNet_HTTP_CMD);

printf("连接服务器的状态:%drn",SIM800C_Connect_TCP_Server("183.230.40.33","80"));

DelayMs(500);

printf("数据发送的状态:%drn",SIIM800C_TCP_SendData((u8*)OneNet_HTTP_CMD,strlen(OneNet_HTTP_CMD)));

}


(3)上传数据格式总结

POST /devices/920668935/datapoints HTTP/1.1

api-key:XMwqaSZATs=ZlXq4Tk4NA44WTl4=

Host:api.heclouds.com

Connection:close

Content-Length:83


{"datastreams":[{"id":"GPS","datapoints":[{"value":{"lon":120.21,"lat":30.19}}]}]}


(4)OneNet显示效果

上传之后显示的效果。

image-20220408145733451

可以通过地图可视化显示。

image-20220408145827272

(5)main.c实现代码

#include "stm32f10x.h"

#include "delay.h"

#include "usart.h"

#include

#include "timer.h"

#include "sim800c.h"

#include "gps.h"


/*

SIM800C接线说明:

GND----GND

VCC----3.3V

STM32_PA2----SIM800C_RXD

STM32_PA3----SIM800C_TXD

*/


char sim800c_buff[20];

char tmp_buffer[100];

double Longitude=103.718463; //经度

double latitude=36.107013;  //纬度


int main(void)

{

    u32 OneNet_Sendtime=0;

u8 state;

USART_X_Init(USART1,72,115200); //串口初始化

printf("串口初始化完成!rn");

    

    //SIM800C的串口接口

TIM2_Init(72,20000);//辅助串口3接收,超时时间为20ms

    USART_X_Init(USART2,36,9600); //可能的波特率(测试):  57600 、9600、115200

//延时等待

printf("延时等待rn");

DelayMs(1000);

DelayMs(1000);

DelayMs(1000);

DelayMs(1000);

printf("开始初始化SIM800C rn");

    

while(1)

{

state=SIM800C_InitCheck();

if(state==0)break;

DelayMs(1000);

printf("SIM800C初始化状态:%drn",state);

}

    while(1)

{

state=SIM800C_SetNoteTextMode();

if(state==0)break;

DelayMs(1000);

printf("设置文本模式状态:%drn",state);

}

    

//同步网络时间

//SIM800C_NtpUpdate();

//初始化GPRS联网功能

SIM800C_GPRS_Init();

    

while(1)

{

         delay_ms(1);

OneNet_Sendtime++;

        

//向云端发送一次数据(每次选择发送一种数据)

if(OneNet_Sendtime>=500) //单位ms

{

      OneNet_Sendtime=0;

              

             //向OneNet上传经纬度数据

             OneNet_HTTP_GPS_DataUpdate("GPS",Longitude,latitude);

             

             //向指定手机发送短信,发送经纬度信息

            sprintf(sim800c_buff,"GPS:%f,%f",Longitude,latitude);

            if(SIM800C_SendNote((u8*)"13800138000",(u8*)sim800c_buff,strlen((char*)sim800c_buff))==0)

            {

                printf("短信发送成功rn");

            }

            else

            {

                printf("短信发送失败rn");    

            }    

}

 

//实时接收SIM00C返回的数据

         if(USART2_RX_FLAG)

         {

             USART2_RX_BUFF[USART2_RX_CNT]='';

             USART2_RX_CNT=0;

             USART2_RX_FLAG=0;

             printf("USART2_RX_BUFF=%srn",USART2_RX_BUFF);

             memset(USART2_RX_BUFF,0,sizeof(USART2_RX_BUFF));

         }

}

}


关键字:SIM800C  OneNet平台  HTTP协议  GPS数据 引用地址:SIM800C连接OneNet平台HTTP协议上传GPS数据

上一篇:基于STM32的智能鱼缸设计
下一篇:基于STM32无人超市消费系统设计

推荐阅读最新更新时间:2024-11-11 17:24

基于MSP430F149单片机的GPS定位数据采集系统设计
   O 引言   GPS(Global Positioning System,全球卫星定位系统)以其高精度、全天候、全天时的特点,在定位、导航、测距、授时遥感等领域广泛应用,并得到了快速的发展。设计一种基于嵌入式系统的 GPS 定位数据采集系统,根据GPS信号接收原理和嵌入式技术,该设计完成了基于单片机和计算机实现GPS 数据采集 ,并以良好的人机界面显示出系统所处的经纬度、海拔高度、X,Y坐标以及日期等信息,该系统已应用于某外场的车载定位试验中,代替了以前人工记录定位数据的烦琐,提高了效率。    1 系统描述   本设计利用TI的低功耗 MSP430F149 单片机的双串行接口,一路将GPS接收模块接收的定
[单片机]
基于MSP430F149单片机的<font color='red'>GPS</font>定位<font color='red'>数据</font>采集系统设计
NodeMCU学习(九)--连接OneNET物联网平台
1、OneNET平台介绍 OneNET是中国移动打造的高效、稳定、安全的物联网开放平台。OneNET支持适配各种网络环境和协议类型,可实现各种传感器和智能硬件的快速接入,提供丰富的API和应用模板以支撑各类行业应用和智能硬件的开发,有效降低物联网应用开发和部署成本,满足物联网领域设备连接、协议适配、数据存储、数据安全以及大数据分析等平台级服务需求。 关于平台详细的介绍,以及使用的方法,可以查看《OneNET物联网平台介绍》进行了解。 2、MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“
[单片机]
NodeMCU学习(九)--连接<font color='red'>OneNET</font>物联网<font color='red'>平台</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved