Sisällysluettelo:

DHT12 (halpa i2c -kosteus- ja lämpötila -anturi), nopea helppokäyttöinen: 14 vaihetta
DHT12 (halpa i2c -kosteus- ja lämpötila -anturi), nopea helppokäyttöinen: 14 vaihetta

Video: DHT12 (halpa i2c -kosteus- ja lämpötila -anturi), nopea helppokäyttöinen: 14 vaihetta

Video: DHT12 (halpa i2c -kosteus- ja lämpötila -anturi), nopea helppokäyttöinen: 14 vaihetta
Video: DHT11 DHT12 DHT22 Temperature Humidity Sensor Test 2024, Marraskuu
Anonim
DHT12 (halpa i2c -kosteus- ja lämpötila -anturi), nopea helppokäyttöinen
DHT12 (halpa i2c -kosteus- ja lämpötila -anturi), nopea helppokäyttöinen

Löydät päivityksiä ja muuta sivustoltani

Pidän anturista, jota voidaan käyttää 2 -johtimisella (i2c -protokolla), mutta rakastan halpaa.

Tämä on Arduino- ja esp8266 -kirjasto DHT12 -sarjan erittäin edullisille lämpötila-/kosteusantureille (alle 1 $), jotka toimivat i2c: n tai yhden johdinliitännän kanssa.

Erittäin hyödyllinen, jos haluat käyttää esp01: tä (jos käytät sarjaliitäntää, sinulla on vain 2 nastaista) kosteuden ja lämpötilan lukemiseen ja sen näyttämiseen i2c -nestekidenäytöllä.

AI luki, että joskus näyttää siltä, että se tarvitsee kalibrointia, mutta minulla on tämä puu ja saan arvon, joka on hyvin samanlainen kuin DHT22. Jos sinulla on tämän ongelman kalibrointi, avaa ongelma githubissa ja lisään toteutuksen.

Vaihe 1: Miten I2c toimii

Miten I2c toimii
Miten I2c toimii

I2C toimii kahdella johdolla, SDA (datalinja) ja SCL (kellolinja).

Molemmat linjat ovat avoimia tyhjennyksiä, mutta ne on vedetty ylös vastuksilla.

Yleensä linjalla on yksi isäntä ja yksi tai useampi orja, vaikka isäntiä voi olla useita, mutta puhumme siitä myöhemmin.

Sekä isännät että orjat voivat lähettää tai vastaanottaa dataa, joten laite voi olla jossakin näistä neljästä tilasta: isäntälähetys, isäntävastaanotto, orjalähetys, orjavastaanotto.

Vaihe 2: Kirjasto

Kirjastoni löydät täältä.

Ladata

Napsauta LATAA -painiketta oikeassa yläkulmassa ja nimeä pakkaamaton kansio uudelleen DHT12.

Tarkista, että DHT -kansio sisältää DHT12.cpp ja DHT12.h.

Aseta DHT -kirjastokansio / libraries / kansio.

Sinun on ehkä luotava kirjastojen alikansio, jos se on ensimmäinen kirjasto.

Käynnistä IDE uudelleen.

Vaihe 3: Käyttäytyminen

Tämä kirjasto yrittää jäljitellä tavallisten DHT -kirjastoantureiden käyttäytymistä (ja kopioi paljon koodia), ja lisään koodin i2c olso -järjestelmän hallintaan samalla tavalla.

Menetelmä on sama kuin DHT -kirjastosensori, ja jotkut lisäävät kuten kastepistetoiminnon.

Vaihe 4: I2c -käyttö

Käytettäväksi i2c: n kanssa (oletusosoite ja oletus -SDA SCL -nasta) konstruktori on:

DHT12 dht12;

ja ota SDA SCL -tapin oletusarvo.

(On mahdollista määrittää uudelleen määritetyllä esp8266-ohjaimella, jota tarvitaan ESP-01: lle). tai

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> osoite

muuttaa osoitetta.

Vaihe 5: Yhden langan käyttö

Yhden langan käyttäminen:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> nasta

Boolen arvo on oneWire- tai i2c -tilan valinta.

Vaihe 6: Epäsuora lukeminen

Voit käyttää sitä "implisiittisen", "yksinkertaisen lukemisen" tai "kokonaislukemisen" kanssa: implisiittinen, vain ensimmäinen luku lukee anturin oikein, toinen luku, joka tulee 2 sekunnissa. väli on ensimmäisen lukeman tallennettu arvo.

// Anturin lukemisessa on kulunut 2 sekuntia, ellet anna voimaparametria

// Lue lämpötila celsiusasteina (oletus) float t12 = dht12.readTemperature (); // Lue lämpötila Fahrenheitina (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Anturilukemat voivat olla jopa 2 sekuntia "vanhoja" (se on hyvin hidas anturi) float h12 = dht12.readHumidity (); // Laske lämpöindeksi Fahrenheit -asteina (oletus) float hif12 = dht12.computeHeatIndex (f12, h12); // Laske lämpöindeksi celsiusasteina (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Laske kastepiste Fahrenheit -asteina (oletus) float dpf12 = dht12.dewPoint (f12, h12); // Laske kastepiste celsiusasteina (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Vaihe 7: Yksinkertainen luku

Yksinkertainen luku, jotta saat lukemisen tilan.

// Anturin lukemisessa on kulunut 2 sekuntia, ellet anna voimaparametria

bool chk = dht12. luku (); // tosi lukeminen on ok, väärä luku ongelma

// Lue lämpötila celsiusasteena (oletus)

float t12 = dht12.readTemperature (); // Lue lämpötila Fahrenheitina (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Anturilukemat voivat olla jopa 2 sekuntia "vanhoja" (se on hyvin hidas anturi) float h12 = dht12.readHumidity (); // Laske lämpöindeksi Fahrenheit -asteina (oletus) float hif12 = dht12.computeHeatIndex (f12, h12); // Laske lämpöindeksi celsiusasteina (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Laske kastepiste Fahrenheit -asteina (oletus) float dpf12 = dht12.dewPoint (f12, h12); // Laske kastepiste celsiusasteina (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Vaihe 8: Täysi luku

Täysi luku saadaksesi määritetyn tilan.

// Anturin lukemisessa on kulunut 2 sekuntia, ellet anna voimaparametria

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nLue anturi:")); kytkin (chk) {tapaus DHT12:: OK: Serial.println (F ("OK")); tauko; tapaus DHT12:: ERROR_CHECKSUM: Serial.println (F ("Tarkistussummavirhe")); tauko; tapaus DHT12:: ERROR_TIMEOUT: Serial.println (F ("Aikakatkaisuvirhe")); tauko; tapaus DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Aikakatkaisuvirhe alhaisella signaalilla, yritä asettaa suuri vetovoima")); tauko; tapaus DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Aikakatkaisuvirhe alhaisella signaalilla, yritä asettaa alhainen vetovoima")); tauko; tapaus DHT12:: ERROR_CONNECT: Serial.println (F ("Yhteysvirhe")); tauko; tapaus DHT12:: ERROR_ACK_L: Serial.println (F ("AckL -virhe")); tauko; tapaus DHT12:: ERROR_ACK_H: Serial.println (F ("AckH -virhe")); tauko; tapaus DHT12:: ERROR_UNKNOWN: Serial.println (F ("Tuntematon virhe DETECTED")); tauko; tapaus DHT12:: NONE: Serial.println (F ("Ei tulosta")); tauko; oletus: Serial.println (F ("Tuntematon virhe")); tauko; }

// Lue lämpötila celsiusasteena (oletus)

float t12 = dht12.readTemperature (); // Lue lämpötila Fahrenheitina (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Anturilukemat voivat olla jopa 2 sekuntia "vanhoja" (se on hyvin hidas anturi) float h12 = dht12.readHumidity (); // Laske lämpöindeksi Fahrenheit -asteina (oletus) float hif12 = dht12.computeHeatIndex (f12, h12); // Laske lämpöindeksi celsiusasteina (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Laske kastepiste Fahrenheit -asteina (oletus) float dpf12 = dht12.dewPoint (f12, h12); // Laske kastepiste celsiusasteina (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Vaihe 9: Liitäntäkaavio

Esimerkkeinä on kytkentäkaavio, on tärkeää käyttää oikeaa vetovoimaa.

Kiitos Bobadas, dplasa ja adafruit, jakaa koodi githubissa (jossa otan koodin ja ideoita).

Vaihe 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Vaihe 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Vaihe 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Vaihe 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Vaihe 14: Kiitos

Arduinon leikkipaikka (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c -projektisarja (kokoelma):

  • Lämpötilan kosteusanturi
  • Analoginen laajennin
  • Digitaalinen laajennin
  • LCD -näyttö

Suositeltava: