php接收gprs数据上传,通过GPRS上传数据至平台

本帖最后由 shuxulala 于 2015-5-13 11:06 编辑

在网上买了SIM900A模块,让OCROBOT MANGO II通过GPRS接入网络,上传数据至OneNet平台,SIM900A与OCROBOT MANGO II通过串口进行AT指令通信,与服务器建立TCP连接。

在调试过程中遇到一个问题,网上搜索了一下,也是在使用SIM900A模块过程中出现最普遍的问题之一,就是插上SIM卡,当SIM900A模块上电后,发现模块开始一段时间可以正常找到SIM卡,并搜索到运营商网络信号,过一两分钟后出现掉卡现象,最后发现是天线RF干扰,导致模块不能正常找到SIM卡,所以干脆拿掉天线,没想到也能正常工作了。该问题也算是一个硬件上的设计问题了,对天线放的位置不当。所以买模块还是要买质量好一点的啊,不然浪费时间,这里给大家分享,希望对大家调试有用。

开始前需要准备的材料:

SIM900A 模块 1块

SIM卡 1张

杜邦线 若干

OCROBOT MANGO II 1块

下面切入正题,先上两张GPRS模块实物图:

f26aa6f330e1d28a8eef1eecc5c9e36b.png

模块详细介绍:

c4859b6840579b3e10313ecaa1055ab8.png

电脑调试硬件接线图:

6793ffe9bcccc906a9aa9199ae2550a3.png

SIM900A模块与Ardiuno连线示意:

SIM900A OCROBOT MANGO II

VCC------------------------------5V

GND-----------------------------GND

TX--------------------------------PIN1

RX--------------------------------PIN0

实物连接图如下:

116dc256b14b6d30e43ace1d13698046.png

示例代码(改代码产生随机数模拟传感器实测数据):

#include

#define RET_OK 0

#define RET_ERR 1

#define TRYTIMES 1

#define DEVICE_ID "your device id"//替换成你的设备ID

#define API_KEY "your api key"//替换成你的API KEY

void setup()

{

Serial.begin(115200);

while (!Serial)

{

; // wait for serial port to connect. Needed for Leonardo only

}

while (1)

{

Serial.println("AT+COPS?\r");

delay(200);//延时

if (Serial.find("CHINA MOBILE") == true ) //检测是否收到 CHINA MOBILE 服务商信息。如果收到证明是连接上网络了

{

break;

}

}

sendCmd("AT+CLPORT=\"TCP\",\"2000\"\r");//发送指令指定本地端口

}

void loop()

{

int cnt = 178; //这个是JSON串里面的固定不变的部分的字符长度,后面再加上要传的数据的长度,就是整个串的长度了。

int temp = 0, hum = 0;

int noise = 0;

int light = 0;

String tmpString = "";

temp = random(100);//产生随机数温度数据

tmpString = String(temp);

cnt += tmpString.length();//加上温度数据的长度

hum = random(100);//产生随机数湿度数据

tmpString = String(hum);

cnt += tmpString.length();//加上湿度数据长度

noise = random(500);//产生随机数噪声数据

tmpString = String(noise);

cnt += tmpString.length();//加上噪音数据长度

light = random(2000);

tmpString = String(light);

cnt += tmpString.length();

establishTCPConnect("AT+CIPSTART=\"TCP\",\"183.230.40.33\",\"80\"\r");//此处修改你建立服务器的IP,服务器端口号80

startSendData("AT+CIPSEND\r");//开始发送数据

Serial.print("POST /devices/" + String(DEVICE_ID) + "/datapoints HTTP/1.1\r\n");

Serial.print("Host:api.heclouds.com\r\n");

Serial.print("api-key:" + String(API_KEY) + "\r\n");

Serial.print("Content-Length:" + String(cnt) + "\r\n");

Serial.println();

//JSON串

Serial.print("{\"datastreams\":[");

Serial.print("{\"id\":\"temp\",\"datapoints\":[{\"value\":" + String(temp) + "}]},");

Serial.print("{\"id\":\"hum\",\"datapoints\":[{\"value\":" + String(hum) + "}]},");

Serial.print("{\"id\":\"light\",\"datapoints\":[{\"value\":" + String(light) + "}]},");

Serial.print("{\"id\":\"noise\",\"datapoints\":[{\"value\":" + String(noise) + "}]}");

Serial.print("]}" );

Serial.println("复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值