Indholdsfortegnelse:

DHT12 (i2c billig fugtigheds- og temperatursensor), hurtig let brug: 14 trin
DHT12 (i2c billig fugtigheds- og temperatursensor), hurtig let brug: 14 trin

Video: DHT12 (i2c billig fugtigheds- og temperatursensor), hurtig let brug: 14 trin

Video: DHT12 (i2c billig fugtigheds- og temperatursensor), hurtig let brug: 14 trin
Video: DHT12 I2C Temperature - Relative Humidity Sensor Demo 2024, Juli
Anonim
DHT12 (i2c billig luftfugtigheds- og temperatursensor), hurtig let brug
DHT12 (i2c billig luftfugtigheds- og temperatursensor), hurtig let brug

Du kan finde opdatering og andet på mit websted

Jeg kan godt lide sensor, der kan bruges med 2 -leder (i2c -protokol), men jeg elsker den billige.

Dette er et Arduino- og esp8266 -bibliotek til DHT12 -serien med meget billige temperatur-/fugtighedsfølere (mindre end 1 $), der fungerer med i2c eller en ledningsforbindelse.

Meget nyttigt, hvis du vil bruge esp01 (hvis du bruger seriel har du kun 2 ben) til at aflæse fugtighed og temperatur og vise det på i2c LCD.

AI læser, at det engang ser ud til, at der er brug for kalibrering, men jeg har træ af dette og får værdi, der meget ligner DHT22. Hvis du har kalibrering af dette problem, skal du åbne problemet på github, og jeg tilføjer implementering.

Trin 1: Sådan fungerer I2c

Sådan fungerer I2c
Sådan fungerer I2c

I2C fungerer med sine to ledninger, SDA (datalinje) og SCL (urlinje).

Begge disse linjer er åbne-afløb, men er trukket op med modstande.

Normalt er der en mester og en eller flere slaver på linjen, selvom der kan være flere mestre, men vi taler om det senere.

Både mestre og slaver kan overføre eller modtage data, derfor kan en enhed befinde sig i en af disse fire tilstande: masteroverførsel, mastermodtagelse, slaveoverførsel, slavemodtagelse.

Trin 2: Bibliotek

Du kan finde mit bibliotek her.

At downloade

Klik på knappen DOWNLOADS i øverste højre hjørne, omdøb den ukomprimerede mappe DHT12.

Kontroller, at DHT -mappen indeholder DHT12.cpp og DHT12.h.

Placer DHT -biblioteksmappen din / biblioteker / mappe.

Du skal muligvis oprette bibliotekernes undermappe, hvis det er dit første bibliotek.

Genstart IDE.

Trin 3: Behaivor

Denne bibliotek forsøger at efterligne adfærden for standard DHT -bibliotekssensorer (og kopiere en masse kode), og jeg tilføjer koden til at styre i2c olso på samme måde.

Metoden er den samme som DHT -bibliotekssensor, med nogle tilføjelser som dugpunktsfunktion.

Trin 4: I2c -brug

For at bruge med i2c (standardadresse og standard SDA SCL -pin) er konstruktøren:

DHT12 dht12;

og tag standardværdien for SDA SCL -pin.

(Det er muligt at redefinere med specificeret konstruktor til esp8266, nødvendig for ESP-01). eller

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> adresse

at ændre adresse.

Trin 5: Brug af én tråd

Sådan bruges en ledning:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> pin

boolsk værdi er valget af oneWire- eller i2c -tilstand.

Trin 6: Implicit læsning

Du kan bruge den med "implicit", "simple read" eller "fullread": Implicit, kun den første læsning gør en sand læsning af sensoren, den anden læsning, der bliver i 2sek. interval er den lagrede værdi for første læsning.

// Sensorens aflæsning har 2 sekunder af den forløbne tid, medmindre du overfører kraftparameteren

// Læs temperaturen som Celsius (standard) float t12 = dht12.readTemperature (); // Læs temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoraflæsninger kan også være op til 2 sekunder 'gamle' (det er en meget langsom sensor) float h12 = dht12.readHumidity (); // Beregn varmeindeks i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beregn varmeindeks i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beregn dugpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beregn dugpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Trin 7: Enkel læsning

Enkel læsning for at få status som læst.

// Sensorens aflæsning har 2 sekunder af den forløbne tid, medmindre du overfører kraftparameteren

bool chk = dht12.read (); // sand læsning er ok, falsk læsning problem

// Læs temperaturen som Celsius (standard)

float t12 = dht12.readTemperature (); // Læs temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoraflæsninger kan også være op til 2 sekunder 'gamle' (det er en meget langsom sensor) float h12 = dht12.readHumidity (); // Beregn varmeindeks i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beregn varmeindeks i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beregn dugpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beregn dugpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Trin 8: Fuld læsning

Fuld læsning for at få en specificeret status.

// Sensorens aflæsning har 2 sekunder af den forløbne tid, medmindre du overfører kraftparameteren

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nLæs sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); pause; case DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksum fejl")); pause; sag DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout -fejl")); pause; case DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Timeout -fejl ved lavt signal, prøv at sætte høj pullup -modstand")); pause; case DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Timeout error on low signal, try put low pullup resistance")); pause; case DHT12:: ERROR_CONNECT: Serial.println (F ("Connect error")); pause; sag DHT12:: ERROR_ACK_L: Serial.println (F ("AckL fejl")); pause; sag DHT12:: ERROR_ACK_H: Serial.println (F ("AckH fejl")); pause; case DHT12:: ERROR_UNKNOWN: Serial.println (F ("Ukendt fejl DETEKTERET")); pause; sag DHT12:: INGEN: Serial.println (F ("Intet resultat")); pause; standard: Serial.println (F ("Ukendt fejl")); pause; }

// Læs temperaturen som Celsius (standard)

float t12 = dht12.readTemperature (); // Læs temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoraflæsninger kan også være op til 2 sekunder 'gamle' (det er en meget langsom sensor) float h12 = dht12.readHumidity (); // Beregn varmeindeks i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beregn varmeindeks i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beregn dugpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beregn dugpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Trin 9: Tilslutningsdiagram

Med eksempler er der forbindelsesdiagrammet, det er vigtigt at bruge den korrekte pullup -modstand.

Tak til Bobadas, dplasa og adafruit, for at dele koden i github (hvor jeg tager lidt kode og ideer).

Trin 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Trin 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Trin 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Trin 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Trin 14: Tak

Arduino legeplads (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c projektserie (samling):

  • Temperaturfugtighedsføler
  • Analog ekspander
  • Digital ekspander
  • LCD display

Anbefalede: