Kon de DHT22-sensor niet lezen met behulp van de Intel Galileo Gen2-kaart

Waarom kom ik op het scherm?

Kan niet lezen van DHT-sensor!

in de seriële monitor in de meeste gevallen als ik de onderstaande code voer? Wanneer ik de vertraging verkort tot 1000 ms, toont de aflezing 0,00 voor zowel de temperatuur als de luchtvochtigheid, wat ook vrij vals is. Alle hulp wordt zeer op prijs gesteld.

// 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
Is die bibliotheek ontworpen voor de Galileo? Ik zie dat het draait op 400 MHz, terwijl de bibliotheek (toen ik het voor het laatst gebruikte) voor een 16 MHz Arduino was. De DHT11 gebruikt een zeer timing-specifiek protocol. Een zoekopdracht naar intel galileo dht11 onthulde DHT-oplossing voor Galileo en Galileo Gen2 met 2 pinnen in plaats van één
toegevoegd de auteur Nick Gammon, de bron
Dit is alleen omdat ik hetzelfde materiaal gebruik als waar Ctrl + C en Ctrl + V gedaan zijn! :) Als je er nog meer aan toevoegt, kun je alsjeblieft de pinverbindingen in detail opgeven? betekent in eenvoudige woorden, zoals op welke pen diode moet worden aangesloten, op welke pen de weerstand moet worden aangesloten via de link die u hierboven hebt gedeeld! (ook de specificatie van diode en weerstand). Bedankt vriend voor de hulp !!! Proost ..
toegevoegd de auteur Lidia Janoszka, de bron
En daarnaast gebruik ik 3-pins DHT22 (Vcc, Out, Gnd).
toegevoegd de auteur Lidia Janoszka, de bron

1 antwoord

De artikel -link van Nick is dezelfde als die ik heb gevonden, dus het moet een goed zoekprobleem.

Wat op het Intel-forum wordt beschreven, is dat de Galileo niet in staat is om rechtstreeks met de sensor te communiceren, omdat het een computer is en geen microcontroller, waardoor het daarom ontbreekt aan de mogelijkheid voor nauwkeurige timing die door de sensor wordt vereist en ook de DHT * als een perifere en zou dus een manier nodig hebben om te communiceren met de "PC".

Wat in de post wordt beschreven, is om twee pinnen te gebruiken om het juiste digitale signaal voor de DHT te maken.

Het circuit maakt gebruik van een diode om de uitgangspen te beschermen.

De OP op het forum beschrijft de verbindingen als volgt:

Pin 2 van de Galileo is verbonden met de data-pin van de DHT11.

     

De kathode van de diode is verbonden met pin 3 van de Galileo.

     

Anode van de diode is verbonden met de datapin DHT11.

De diode zou een standaard diode zijn, mogelijk een snel schakelende signaaldiode als de 1N4143. De weerstand zou de standaard optrekweerstand van 10K Ohm zijn.

Hier is het schema van de OP's:

enter image description here

U moet ook gebruik maken van de code waarnaar het OP in het gekoppelde bericht verwijst, omdat het is aangepast om met de oplossing te werken.

1
toegevoegd
@JayM hi, de PIN2 is de Galileo en PIN3 is ook de Galileo. Pen 2 is verbonden met de datapen van de dht, terwijl pin 3 is verbonden met de kathode van de diode en de anode van de diode met de datapen van de dht dit schema van de op communities.intel.com/servlet/JiveServlet/downloadImage/…
toegevoegd de auteur RSM, de bron
Hier staat geschreven: "pin 2 is verbonden met de DHT11", maar wiens pin 2 moet worden verbonden met DHT en op welke pin van DHT i moet worden aangesloten.
toegevoegd de auteur Lidia Janoszka, de bron