【问题标题】:GPRS communication with xively与 xively 的 GPRS 通信
【发布时间】:2015-02-17 23:39:34
【问题描述】:

我是 xively 的新手。我打算将一些设备(可能称为物联网)连接到互联网。我所有的设备都将有 GPRS 进行连接。这些设备收集的数据将上传到网络并以类似电子表格的形式存储。我发现 xively 是一个不错的选择。任何人都可以为这种项目提供教程吗?找了好久都没找到。

【问题讨论】:

    标签: gprs xively


    【解决方案1】:

    我一直在做这种申请。 Xively 还不错。 data.sparkfun.com 也是一个很棒的免费数据记录服务。

    那里有大量资源,但我还没有找到任何专门针对 GPRS 连接的出色“教程”。就个人而言,我使用 arduino 与设备进行 GPRS 连接。如果你没用过 arduino,我推荐《arduino 入门》和《arduino 编程》这两本书。

    我还建议您熟悉 sparkfun.com、instructables.com 和 adafruit.com,它们提供有关各种物联网应用程序的免费教程、项目和信息。

    这是我用于制作的 GPRS 温度计的代码。硬件设置与本教程中显示的基本相同。我提供了几个 cmets,它们可以帮助您解决我花了几个月才弄清楚的一些小问题。

    我最好的建议是继续做教程,首先,专注于学习和复制大量项目,然后再对任何单一的创作投入过多。有很多东西需要了解。祝你好运。

     #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;
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多