使用Arduino和Sim900a将传感器数据发送到MySQL服务器

时间:2017-04-20 06:35:34

标签: arduino gsm gprs sim900

我正在尝试将传感器数据发送到我的MySQL服务器但无法实现。我在其他问题中遵循了几个类似的例子,但它没有用。 Arduino代码如下。我们的想法是测量负载上的电压和电流并将其发送到MySQL服务器。 TIA。

#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(7, 8);

//variables that imitates actual voltage and current data
float a=random(300.0);
float b=random(2.00);
char  c[10]="B110";    

void setup() {
  gprsSerial.begin(19200);
  Serial.begin(19200);
  Serial.println("Config SIM900A...");
  delay(2000);`enter code here`
  Serial.println("Done!...");
  gprsSerial.flush();
  Serial.flush();
  // attach or detach from GPRS service 
  gprsSerial.println("AT+CGATT?");
  delay(100);
  toSerial();
  // bearer settings
  gprsSerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
  delay(2000);
  toSerial();
  // bearer settings
  gprsSerial.println("AT+SAPBR=3,1,\"APN\",\"my carrier apn here\"");
  delay(2000);
  toSerial();
  // bearer settings
  gprsSerial.println("AT+SAPBR=1,1");
  delay(2000);
  toSerial();
}

void loop() {
  // initialize http service
  gprsSerial.println("AT+HTTPINIT");
  delay(2000);
  toSerial();
  // set http param value
  gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://mocdl.net/api/data/create?voltage="" + a + ""&current="" + b + "" &load_id="" + c + ""\"");
  delay(2000);
  toSerial();
  // set http action type 0 = GET, 1 = POST, 2 = HEAD
  gprsSerial.println("AT+HTTPACTION=0");
  delay(6000);
  toSerial();
  // read server response
  gprsSerial.println("AT+HTTPREAD");
  delay(1000);
  toSerial();
  gprsSerial.println("");
  gprsSerial.println("AT+HTTPTERM");
  toSerial();
  delay(300);
  gprsSerial.println("");
  delay(10000);
}

void toSerial() {
  while(gprsSerial.available()!=0) {
    Serial.write(gprsSerial.read());
  }
}

2 个答案:

答案 0 :(得分:0)

您必须设置APN

例如在我的情况下,我需要添加

mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"")

答案 1 :(得分:0)

正如Panciz所说,你应该为你设置APN(我想你已经知道了)。

您还应该对程序进行一些小改动。

gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://mocdl.net/api/data/create?voltage="" + a + ""&current="" + b + "" &load_id="" + c + ""\"");

以上一行不会像您预期的那样奏效。

所以编辑http请求行,如下所示:

 gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://mocdl.net/api/data/create?voltage=%f&current=%f&load_id=%f\"",a,b,c);