使用 Arduino GSM/GPRS SIM900 将传感器数据发送到我的网络服务
Use Arduino GSM/GPRS SIM900 to send sensor data to my web service
提前谢谢你。我是arduino的初学者。
我的问题是如何将动态传感器数据(连续读数)发送到网络服务器。我尝试了以下代码来设置与服务器的 GSM/GPRS 连接。
我成功发送了下面代码中的一些静态数据。但是当我想包含一些来自传感器的动态数据时,我无法在代码中插入相同的数据。
当前代码:
gprsSerial.println("AT+HTTPPARA=\"URL\",\"xxxx/new.php?sensor1=100\"")
所需代码:
gprsSerial.println("AT+HTTPPARA=\"URL\",\"xxxx/new.php?sensor1=DYNAMIC VALUE\"")
使用和测试的 ARDUINO 代码
#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(7, 8);
void setup()
{
gprsSerial.begin(19200);
Serial.begin(19200);
Serial.println("Config SIM900...");
delay(2000);
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\",\"xxxx\"");
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://www.oniee.com/new.php?sensor1=100\"");
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());
}
}
看起来需要换行 to.actually 提交请求,so.change 第一个到 print
,注入 data
,然后继续收盘价 然后 添加换行符。
假设您的传感器数据在一个名为 data
的变量中。
// set http param value
gprsSerial.print("AT+HTTPPARA=\"URL\",\"http://www.oniee.com/new.php?sensor1=");
gprsSerial.print(data);
gprsSerial.println("\"");
delay(2000);
toSerial();
这完全取决于您获取动态数据的位置,但对于此示例,我将在单个引脚上使用数字输入
int readpin = 4;
byte pinValue;
void loop()
{
// initialize http service
gprsSerial.println("AT+HTTPINIT");
delay(2000);
toSerial();
pinValue = digitalread(readpin);
// set http param value
gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://www.oniee.com/new.php?sensor1="" + pinValue + ""\"");
delay(2000);
toSerial();
...
“的数量可能有点偏差我现在没有设置来测试它,但这个基本想法是:
检查引脚(或多个引脚)的值
存储值
在字符串中包含值
提前谢谢你。我是arduino的初学者。
我的问题是如何将动态传感器数据(连续读数)发送到网络服务器。我尝试了以下代码来设置与服务器的 GSM/GPRS 连接。
我成功发送了下面代码中的一些静态数据。但是当我想包含一些来自传感器的动态数据时,我无法在代码中插入相同的数据。
当前代码:
gprsSerial.println("AT+HTTPPARA=\"URL\",\"xxxx/new.php?sensor1=100\"")
所需代码:
gprsSerial.println("AT+HTTPPARA=\"URL\",\"xxxx/new.php?sensor1=DYNAMIC VALUE\"")
使用和测试的 ARDUINO 代码
#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(7, 8);
void setup()
{
gprsSerial.begin(19200);
Serial.begin(19200);
Serial.println("Config SIM900...");
delay(2000);
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\",\"xxxx\"");
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://www.oniee.com/new.php?sensor1=100\"");
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());
}
}
看起来需要换行 to.actually 提交请求,so.change 第一个到 print
,注入 data
,然后继续收盘价 然后 添加换行符。
假设您的传感器数据在一个名为 data
的变量中。
// set http param value
gprsSerial.print("AT+HTTPPARA=\"URL\",\"http://www.oniee.com/new.php?sensor1=");
gprsSerial.print(data);
gprsSerial.println("\"");
delay(2000);
toSerial();
这完全取决于您获取动态数据的位置,但对于此示例,我将在单个引脚上使用数字输入
int readpin = 4;
byte pinValue;
void loop()
{
// initialize http service
gprsSerial.println("AT+HTTPINIT");
delay(2000);
toSerial();
pinValue = digitalread(readpin);
// set http param value
gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://www.oniee.com/new.php?sensor1="" + pinValue + ""\"");
delay(2000);
toSerial();
...
“的数量可能有点偏差我现在没有设置来测试它,但这个基本想法是:
检查引脚(或多个引脚)的值
存储值
在字符串中包含值