首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加了温度和湿度传感器(DHT11)的Cosm示例

添加了温度和湿度传感器(DHT11)的Cosm示例
EN

Stack Overflow用户
提问于 2013-04-13 14:37:10
回答 2查看 2.4K关注 0票数 0

在标准Cosm Arduino传感器客户端示例中添加了温度和湿度传感器(DHT11)。工作一小段时间后,数据流呈扁平线。

你知道是什么导致了这个问题吗?

非常感谢

Staza

代码语言:javascript
复制
    /**
 * Cosm Arduino sensor client example.
 *
`` * This sketch demonstrates connecting an Arduino to Cosm (https://cosm.com),
 * using the new Arduino library to send and receive data.

/**
DHT11 temp and humidity sensor added to the COSM example code
**/

#include <SPI.h>
#include <Ethernet.h>
#include <HttpClient.h>
#include <Cosm.h>
#include <dht11.h>

//DHT11*********************************************************************
dht11 DHT11;
#define DHT11PIN 7//pin DHT11 sensor is connected to
//DHT11*********************************************************************


#define API_KEY "xxxxxx" // your Cosm API key
#define FEED_ID xxxxx // your Cosm feed ID

// MAC address for your Ethernet shield
byte mac[] = {xxxx, xxxx, xxxx, xxxx, xxxx, xxxx}; 

// Analog pin which we're monitoring (0 and 1 are used by the Ethernet shield)
int sensorPin = 2;

unsigned long lastConnectionTime = 0;                // last time we connected to Cosm
const unsigned long connectionInterval = 15000;      // delay between connecting to Cosm in milliseconds

// Initialize the Cosm library

// Define the string for our datastream ID
char sensorId[] = "sensor_reading";
char sensorId2[] = "DHT11_humidity_sensor_reading";
char sensorId3[] = "DHT11_temperature_sensor_reading";
CosmDatastream datastreams[] = {
  CosmDatastream(sensorId, strlen(sensorId), DATASTREAM_FLOAT),
  CosmDatastream(sensorId2, strlen(sensorId2), DATASTREAM_FLOAT),
  CosmDatastream(sensorId3, strlen(sensorId3), DATASTREAM_FLOAT),
};

// Wrap the datastream into a feed
CosmFeed feed(FEED_ID, datastreams, 3 /* number of datastreams */);

EthernetClient client;
CosmClient cosmclient(client);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  Serial.println("Cosm Sensor Client Example");
  Serial.println("==========================");

  Serial.println("Initializing network");
  while (Ethernet.begin(mac) != 1) {
    Serial.println("Error getting IP address via DHCP, trying again...");
    delay(15000);
  }

  Serial.println("Network initialized");
  Serial.println();
}

void loop() {
  // main program loop
  if (millis() - lastConnectionTime > connectionInterval) {

//check DHT11 sensor is working OK    
    int chk = DHT11.read(DHT11PIN);
    Serial.print("Read DHT11 sensor: ");
  switch (chk)
  {
    case 0: Serial.println("OK"); break;
    case -1: Serial.println("Checksum error"); break;
    case -2: Serial.println("Time out error"); break;
    default: Serial.println("Unknown error"); break;
  }

    sendData(); // send data to Cosm
    getData(); // read the datastream back from Cosm
    lastConnectionTime = millis(); // update connection time so we wait before connecting again
  }
}

// send the supplied values to Cosm, printing some debug information as we go
void sendData() {
  int sensorValue = analogRead(sensorPin);
  int humidityDHT11 = ((float)DHT11.humidity);
  int tempDHT11 = ((float)DHT11.temperature);
  datastreams[0].setFloat(sensorValue);
  datastreams[1].setFloat(humidityDHT11); //DHT11 humidity value*******
  datastreams[2].setFloat(tempDHT11); //DHT11 temp value********
  Serial.print("Read sensor value ");
  Serial.println(datastreams[0].getFloat());
  Serial.print("Read DHT11 humidity sensor value ");
  Serial.println(datastreams[1].getFloat());
  Serial.print("Read DHT11 temperature sensor value ");
  Serial.println(datastreams[2].getFloat());

  Serial.println("Uploading to Cosm");
  int ret = cosmclient.put(feed, API_KEY);
  Serial.print("PUT return code: ");
  Serial.println(ret);

  Serial.println();
}

// get the value of the datastream from Cosm, printing out the value we received
void getData() {
  Serial.println("Reading data from Cosm");

  int ret = cosmclient.get(feed, API_KEY);
  Serial.print("GET return code: ");
  Serial.println(ret);

  if (ret > 0) {
    Serial.print("Datastream is: ");
    Serial.println(feed[0]);
    Serial.print("Sensor value is: ");
    Serial.println(feed[0].getFloat());

    Serial.print("Datastream is: ");
    Serial.println(feed[1]);
    Serial.print("Sensor value is: ");
    Serial.println(feed[1].getFloat());

    Serial.print("Datastream is: ");
    Serial.println(feed[2]);
    Serial.print("Sensor value is: ");
    Serial.println(feed[2].getFloat());
   }

  Serial.println();
}
EN

回答 2

Stack Overflow用户

发布于 2013-04-14 18:21:57

Cosm有一个调试页面,它可能会给你一个关于哪里出了问题的线索。

它当前位于:https://cosm.com/users/YOURUSERNAME/debug,它实时列出所有传入的请求。如果你的设备最初工作正常,你应该看到它开始成功地发出请求,并且根据它平坦的时间,你也许能够保持这个页面打开,并希望在它开始失败时看到它。

当Arduino串行输出似乎停止工作时,您是否在其中看到了什么,或者Arduino似乎仍在愉快地发送数据?

您可以尝试的另一件事是使用Wireshark检查线路上的网络流量。然而,设置这个稍微有点复杂,所以我建议先尝试其他方法。

如果这一切看起来都不可行,我建议你把你的订阅源的详细信息邮寄给Cosm支持,让他们研究一下。

票数 1
EN

Stack Overflow用户

发布于 2013-04-21 06:15:27

支持smulube的建议,监控串行输出。此外,删除COSM代码的变量&以太网:使用一个从DHT11获取读数的草图开始调试问题,并监视计算机上Arduino的串行输出中发生了什么(在工具下拉菜单中)。

我昨晚刚刚从Sparkfun收到了我的DHT22 (RHT03),并尝试了几个不能编译的示例(我确信是我的错)。我的Arduino Uno“开箱即用”的示例来自Tom Boyd的页面(请务必滚动到底部查看最新的代码):DHT11 / Aosong AM2302 humidity and temperature sensor

我很好奇:你的传感器花了多长时间才恢复正常?我集成了Tom的代码和Cosm的代码,它已经连续运行了一个小时了。

干杯,里夫斯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15985033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档