我是xively的新手。我打算将一些设备(可能称为物联网)连接到互联网。我的所有设备都有GPRS连接。这些设备收集的数据将上传到网络并存储在某些电子表格中。我发现xively是个不错的选择。任何人都可以为这种项目提供教程吗?我搜索了很多但却找不到它。
答案 0 :(得分:0)
我一直在做这种应用。 Xively相当不错。 data.sparkfun.com也是一个很棒的免费数据记录服务。
那里有大量的资源,但我还没有找到任何优秀的教程'专门解决GPRS连接问题。就个人而言,我使用arduino进行GPRS连接。如果您还没有使用arduino,我推荐书籍#34;开始使用arduino"和#34;编程arduino。"
我还建议您熟悉sparkfun.com,instructables.com和adafruit.com,它们提供有关各种物联网应用程序的免费教程,项目和信息。
这是我用于制作GPRS温度计的代码。硬件设置与本教程中显示的基本相同。我提出了几条评论,这些评论将帮助你解决我花费数月时间解决的一些小问题。
我最好的建议是继续做教程,首先,在投入任何单一创作之前,专注于学习和复制大量项目。有一个吨的东西要了解这一点。祝你好运。
#include <GPRSClient.h>
#include <Xively.h>
#include <SoftwareSerial.h>
#define numSamples 5
#define sensor 0 // select the input pin for the thermistor
int samples[numSamples];
#define PIN_TX 7
#define PIN_RX 8
char xivelyKey[] = "[your api key]"; // API key
char sensorId[] = "sensor"; // Define the strings for our datastream IDs
XivelyDatastream datastreams[] = {
XivelyDatastream(sensorId, strlen(sensorId), DATASTREAM_FLOAT),
};
XivelyFeed feed([your feed id], datastreams, 1); // # of Datastreams
char apn[] = "wap.cingular"; //depends on what sim card you are using. I used an att gophone. make sure you have a data plan
GPRSClient gprs(PIN_TX,PIN_RX,19200,apn,NULL,NULL);
XivelyClient xivelyclient(gprs);
void setup() {
Serial.begin(19200);
Serial.println("Starting single datastream upload to Xively...");
Serial.println();
gprs.init();
while(false == gprs.join()) {
Serial.println("connect error");
delay(2000);
}
// successful DHCP
Serial.print("IP = ");
Serial.println(gprs.getIPAddress());
}
void loop() {
//int sensorValue = 333; // for debugging
float averageADC = getADC();
float temp = convertToTemp(averageADC);
datastreams[0].setFloat(temp);
Serial.print("Read sensor value ");
Serial.println(datastreams[0].getFloat());
Serial.println("Uploading it to Xively");
int ret = xivelyclient.put(feed, xivelyKey);
if(true == ret){
Serial.println("update success!");
}else{
Serial.println("update failed!");
}
Serial.println();
delay(10*1000);
}
float getADC()
{
for(int i = 0; i < numSamples; i++) {
samples[i]= analogRead(sensor);
Serial.print("sample reading: ");
Serial.println(samples[i]);
delay(2000);
}
float averageADC = 0;
for (int i = 0; i < numSamples; i++) {
averageADC += samples[i];
}
averageADC /= numSamples;
Serial.print("averageADC = : ");
Serial.println(averageADC);
return averageADC;
}
float convertToTemp(float analogReading) //
{
float seriesResistance = 100000.0;
float thermistance = seriesResistance / (1023.0 / analogReading - 1.0);
Serial.print("thermistance: ");
Serial.println(thermistance);
float temp = 0.00650 - 0.00026322 * log(thermistance) + .00000003402782 * log(thermistance)*log(thermistance)*log(thermistance); //these coefficients come from solving the steinhart hart equation
Serial.println(temp);
temp = 1.0/temp;
Serial.println(temp);
temp = (temp - 273.15) * 1.8000 + 32.0;
Serial.println(temp);
return temp;
}