Не вдалося прочитати датчик DHT22 за допомогою плати Intel Galileo Gen2

Чому я в кінцевому підсумку з дисплеєм

Не вдалося прочитати з датчика DHT!

у серійному моніторі в більшості випадків, коли я запускаю код, наведений нижче? Коли я зменшую затримку до 1000 мс, читання показує 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
Чи є ця бібліотека призначена для галілео? Я бачу, що він працює на частоті 400 МГц, тоді як бібліотека (коли я її використовував останньою) була для Arduino з частотою 16 МГц. DHT11 використовує високоточний протокол. Пошук intel galileo dht11 показав вирішення DHT для Galileo і Galileo Gen2 з використанням 2 шпильки замість одного
додано Автор Nick Gammon, джерело
Це тільки тому, що я використовую той же матеріал, що і звідси, де зроблено ctrl + c і ctrl + v! :) На додаток до цього, будь ласка, чи можете ви докладно вказати контактні з'єднання? означає в простих словах, наприклад, який штифт для підключення діода з, який контактний для підключення резистора з посиланням ви поділилися вище! (також специфікація діода та резистора). Спасибі подрузі за допомогу !!! Ура ...
додано Автор Lidia Janoszka, джерело
Крім того, я використовую 3-контактний DHT22 (Vcc, Out, Gnd).
додано Автор Lidia Janoszka, джерело

1 Відповіді

Посилання статті , яке я знайшов, тому це має бути добре шукати проблему.

Те, що описується на форумі Intel, полягає в тому, що Galileo не здатний безпосередньо спілкуватися з датчиком, оскільки це комп'ютер, а не мікроконтролер, тому не вистачає можливості точного часу, необхідного датчику, а також DHT * вважається периферійні пристрої, і, отже, потрібен спосіб взаємодії з ПК.

Те, що описано в повідомленні, полягає в тому, щоб використовувати два штифти для створення належного цифрового сигналу для DHT.

У схемі використовується діод для захисту вихідного штифта.

OP на форумі описує такі з'єднання:

Pin 2 Galileo підключений до шпильки даних DHT11.

     

Катод діода з'єднаний із штифтом 3 галілея.

     

Анод діода підключений до PIN-коду даних DHT11.

Діод буде стандартним діодом, можливо діод швидкого перемикання, як 1N4143. Резистор буде стандартним підтягнутим резистором 10 КОм.

Ось схеми ОП:

enter image description here

Вам також доведеться скористатись кодом, зв'язаним OP з пов'язаним повідомленням, оскільки він був змінений для роботи з рішенням.

1
додано
@ JayM привіт, PIN2 - це Galileo, а PIN3 також є Galileo. Штифт 2 підключений до шпильки даних dht, тоді як штифт 3 підключений до катоду діода та анода діода до штифту даних dht перевірити цю схему з op communities.intel.com/servlet/JiveServlet/downloadImage/…
додано Автор RSM, джерело
Тут написано: "pin 2 підключений до DHT11", але його Pin 2 для підключення до DHT і на якому контакті DHT я повинен з'єднатися.
додано Автор Lidia Janoszka, джерело