将数据从 SIM800 发送到服务器

Posted

技术标签:

【中文标题】将数据从 SIM800 发送到服务器【英文标题】:Send data from SIM800 to a server 【发布时间】:2018-05-17 15:23:40 【问题描述】:

有人可以帮帮我吗?

我在将数据从 SIM800C 发送到网站时遇到问题。

第一个问题是,我将以下代码上传到Arduino(我使用Arduino IDE中的串行监视器向SIM800发送AT命令并读取响应)。

#include <SoftwareSerial.h>

#define TX 10
#define RX 11
#define t 2000

SoftwareSerial mySerial(RX, TX);
int k=0, aS=0, amS=0;

void setup() 
  Serial.begin(9600);
  while(!Serial); // Wait for Serial ready
  Serial.println("Intalizing...");
  mySerial.begin(9600);
  delay(5000);
  mySerial.println("AT"); // Send the first AT command to auto set baud rate
  delay(1000);
  Serial.println("You can type AT command and send to SIM800 by using Serial Monitor");


void loop() 
  k=0;
  aS=Serial.available();  // aS: The number of bytes available to read from the buff of Serial
  amS=mySerial.available(); // amS: The number of bytes available to read from the buff of mySerial
  while(aS>0) 
    mySerial.write(Serial.read());
    k=1; aS--;
  
  if (k==1) 
    mySerial.println();
  
  while (amS>0) 
    Serial.write(mySerial.read());
    k=2; amS--;
  
  delay(1000);

接下来,我将下面的AT命令一一发送,查看响应。所有 AT 命令和响应都可以在串行监视器上看到。

AT+SAPBR=3,1,"Contype","GPRS"
AT+SAPBR=3,1,"APN","m3-world"
AT+SAPBR=3,1,"USER","mms"
AT+SAPBR=3,1,"PWD","mms"
AT+CSTT="m3-world","mms","mms"
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA="CID",1
AT+HTTPPARA="URL","http://weatherstation.byethost3.com/"
AT+HTTPDATA=9,10000
value=YOU
AT+HTTPACTION=1

下面最后一个响应显示数据(value=YOU)已经发送成功。

OK
++HTTPACTION:1,200,839

我创建了a website 以使用 GET 方法读取数据。 我的问题是网站上没有任何变化。这意味着网站还没有读取到 SIM800 发送的数据。

【问题讨论】:

如果您希望将数据作为 GET 参数发送,为什么还要将它们作为 POST 参数发送? 对不起。我用 GET 方法得到了同样的结果(AT+HTTPACTION=0) 【参考方案1】:

您的示例是发送 POST 请求。如果您想发送一个带有名称/值对的 GET 请求,它的结构应该稍有不同。从上面更改您的示例:

AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","m3-world"
AT+SAPBR=3,1,"USER","mms"
AT+SAPBR=3,1,"PWD","mms"
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA="CID",1
AT+HTTPPARA="URL","http://weatherstation.byethost3.com/?value=YOU"
AT+HTTPACTION=0

注意名称/值对现在在 URL 中,AT+HTTPACTION=1 更改为 AT+HTTPACTION=0 以指示 GET 而不是 POST

【讨论】:

感谢您的回答。我遇到了这个问题。我的问题是我的服务器阻止了所有 IP 访问,所以我换了另一台服务器。一切都很好。 这是在 SIM800 上进行 HTTP GET 的正确顺序,以防其他人发现自己在这里。只需确保您的调制解调器首先在 gsm 网络中注册。

以上是关于将数据从 SIM800 发送到服务器的主要内容,如果未能解决你的问题,请参考以下文章

SIM800L 发送短信和闪信

如何使用Arduino和SIM900A GPRS / GSM模块将数据发送到Web服务器

SIM800l - 禁用“短信就绪”和“呼叫就绪”未经请求的消息

使用 XMLRPC 将文件从客户端发送到服务器?

sim800c读卡失败的原因

SIM800建立TCP客户端连接