Intel Galileo Gen2ボードを使用してDHT22センサーを読み取ることができませんでした

なぜ私はディスプレイで終わるのですか?

DHTセンサーからの読み取りに失敗しました!

ほとんどの場合シリアルモニタで以下のコードを実行しますか?私が遅延を1000msに減らすと、温度と湿度の両方で読み取り値が0.00になりますが、これもかなり誤っています。どんな助けも高く評価されます。

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2    //what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11  //DHT 11 
#define DHTTYPE DHT22  //DHT 22  (AM2302)
//#define DHTTYPE DHT21  //DHT 21 (AM2301)



// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
// NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
// might need to increase the threshold for cycle counts considered a 1 or 0.
// You can do this by passing a 3rd parameter for this threshold.  It's a bit
// of fiddling to find the right value, but in general the faster the CPU the
// higher the value.  The default for a 16mhz AVR is a value of 6.  For an
// Arduino Due that runs at 84mhz a value of 30 works.
// Example to initialize DHT sensor for Arduino Due:
//DHT dht(DHTPIN, DHTTYPE, 30);

void setup() {
  Serial.begin(9600); 
  Serial.println("DHTxx test!");

  dht.begin();
}

void loop() {
 //Wait a few seconds between measurements.
  delay(2000);

 //Reading temperature or humidity takes about 250 milliseconds!
 //Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
 //Read temperature as Celsius
  float t = dht.readTemperature();
 //Read temperature as Fahrenheit
  float f = dht.readTemperature(true);

 //Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

 //Compute heat index
 //Must send in temp in Fahrenheit!
  float hi = dht.computeHeatIndex(f, h);

  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: "); 
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hi);
  Serial.println(" *F");
}
4
追加された 編集された
ビュー: 5
そのライブラリはガリレオのために設計されていますか?私はそれが400MHzで動作するのを見るのに対し、ライブラリ(私が最後に使用したとき)は16MHz Arduinoのものでした。 DHT11は高度なタイミング特有のプロトコルを使用します。 intel galileo dht11 を検索すると、ガリレオとガリレオのDHT回避策が明らかになりましたGen2は1つではなく2つのピンを使用しています。
追加された 著者 Nick Gammon,
これは、私がctrl + cとctrl + vを行った場所と同じ素材を使用しているためです。 :)これにさらに追加すると、ピンの接続を詳細に指定できますか?簡単に言えば、どのピンがダイオードを接続するのか、同じピンを使って抵抗を上のリンクから接続するのかということです! (ダイオードと抵抗の仕様もあります)。助けてくれてありがとう!乾杯..
追加された 著者 Lidia Janoszka,
さらに、3ピンDHT22(Vcc、Out、Gnd)を使用しています。
追加された 著者 Lidia Janoszka,

1 答え

Nickの記事のリンクは、私が見つけたものと同じです。よく検索問題。

インテルフォーラムに記載されていることは、マイクロコントローラではなくコンピュータであるため、ガリレオはセンサーと直接通信することができないため、センサーが要求する正確なタイミングが不十分であり、DHT *従って、「PC」とインターフェースする方法を必要とするであろう。

ポストに記載されているのは、DHT用の適切なデジタル信号を生成するために2本のピンを使用することです。

回路は出力ピンを保護するダイオードを使用します。

フォーラムのOPには、次のような接続が記述されています。

Galileoのピン2はDHT11のデータピンに接続されています。

     

ダイオードのカソードは、ガリレオのピン3に接続されています。

     

ダイオードのアノードはDHT11データピンに接続されています。

ダイオードは標準ダイオード、おそらく1N4143のような高速スイッチング信号ダイオードです。抵抗は10KΩの標準プルアップ抵抗になります。

OPの回路図は次のとおりです。

enter image description here

回避策で動作するように変更されたので、リンク先のOPでリンクされているコードを使用する必要もあります。

1
追加された
@ JayMこんにちは、 PIN2 はガリレオ、 PIN3 はガリレオです。ピン2はdhtのデータピンに接続され、ピン3はダイオードのカソードに接続され、ダイオードのアノードはdhtのデータピンに接続され、op communities.intel.com/servlet/JiveServlet/downloadImage/…
追加された 著者 RSM,
ここでは、「ピン2はDHT11に接続されています」と書かれていますが、ピン2はDHTに接続し、DHTのピンには接続する必要があります。
追加された 著者 Lidia Janoszka,