Tartalomjegyzék:

DHT12 (i2c olcsó páratartalom- és hőmérséklet -érzékelő), gyors, egyszerű használat: 14 lépés
DHT12 (i2c olcsó páratartalom- és hőmérséklet -érzékelő), gyors, egyszerű használat: 14 lépés

Videó: DHT12 (i2c olcsó páratartalom- és hőmérséklet -érzékelő), gyors, egyszerű használat: 14 lépés

Videó: DHT12 (i2c olcsó páratartalom- és hőmérséklet -érzékelő), gyors, egyszerű használat: 14 lépés
Videó: Hardware Build of LoRa Transmitter, BME280 Sensor based on Arduino ESP32 (EP08) 2024, Július
Anonim
DHT12 (i2c olcsó páratartalom- és hőmérséklet -érzékelő), gyors, egyszerű használat
DHT12 (i2c olcsó páratartalom- és hőmérséklet -érzékelő), gyors, egyszerű használat

A frissítéseket és egyebeket megtalál a webhelyemen:

Szeretem a 2 vezetékes (i2c protokoll) használható érzékelőt, de szeretem az olcsót.

Ez egy Arduino és esp8266 könyvtár a DHT12 sorozat nagyon alacsony költségű (kevesebb, mint 1 $) hőmérséklet/páratartalom érzékelőihez, amelyek i2c -vel vagy egy vezetékes csatlakozással működnek.

Nagyon hasznos, ha az esp01 -et szeretné használni (ha soros módot használ, akkor csak 2 tűs) a páratartalom és a hőmérséklet leolvasásához, és megjelenítéséhez az i2c LCD -n.

Az AI azt olvasta, hogy néha úgy tűnik, hogy kalibrálni kell, de van ilyen fa, és nagyon hasonló értéket kapok, mint a DHT22. Ha kalibrálja ezt a problémát, nyissa meg a problémát a githubon, és hozzáadom a megvalósítást.

1. lépés: Az I2c működése

Hogyan működik az I2c?
Hogyan működik az I2c?

Az I2C két vezetékkel működik, az SDA (adatvonal) és az SCL (óravonal).

Mindkét vezeték nyitott lefolyású, de ellenállással felhúzva.

Általában egy mester és egy vagy több szolga van a vonalon, bár több mester is lehet, de erről később beszélünk.

Mind a mesterek, mind a slave -k képesek adatokat továbbítani vagy fogadni, ezért egy eszköz a következő négy állapot egyikében lehet: master adás, master fogadás, slave adás, slave fogadás.

2. lépés: Könyvtár

A könyvtáramat itt találod.

Letölteni

Kattintson a LETÖLTÉS gombra a jobb felső sarokban, nevezze át a tömörítetlen mappát DHT12 -re.

Ellenőrizze, hogy a DHT mappa tartalmazza -e a DHT12.cpp és a DHT12.h fájlokat.

Helyezze a DHT könyvtár mappáját a / libraries / mappába.

Előfordulhat, hogy létre kell hoznia a könyvtárak almappáját, ha ez az első könyvtára.

Indítsa újra az IDE -t.

3. lépés: Viselkedés

Ez a libray megpróbálja utánozni a szokásos DHT könyvtári érzékelők viselkedését (és sok kódot másol), és hozzáadom a kódot az i2c olso azonos módon történő kezeléséhez.

A módszer ugyanaz, mint a DHT könyvtári érzékelőnél, néhány olyan, mint a harmatpont funkció.

4. lépés: I2c használat

Az i2c -vel (alapértelmezett cím és alapértelmezett SDA SCL pin) való használathoz a konstruktor:

DHT12 dht12;

és vegye fel az SDA SCL pin alapértelmezett értékét.

(Lehetőség van az ESP-01-hez szükséges esp8266 specifikus konstruktorral történő újradefiniálásra). vagy

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> cím

címet változtatni.

5. lépés: Egy vezeték használata

Egy vezeték használata:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> pin

A logikai érték a oneWire vagy az i2c mód kiválasztása.

6. lépés: Implicit olvasás

Használhatja "implicit", "simple read" vagy "fullread" módokkal: Implicit, csak az első olvasás valós leolvasást végez az érzékelőn, a másik olvasás 2 másodpercen belül. intervallum az első olvasás tárolt értéke.

// Az érzékelő leolvasása 2 másodperc eltelt idővel rendelkezik, hacsak nem adja át az erőparamétert

// A hőmérséklet olvasása Celsius -ban (alapértelmezett) float t12 = dht12.readTemperature (); // A hőmérséklet olvasása Fahrenheit (isFahrenheit = igaz) float f12 = dht12.readTemperature (true); // Az érzékelő leolvasása akár 2 másodperces "régi" is lehet (nagyon lassú érzékelő) float h12 = dht12.readHumidity (); // Hőindex kiszámítása Fahrenheitben (alapértelmezett) float hif12 = dht12.computeHeatIndex (f12, h12); // Hőindex számítása Celsius -ban (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Harmatpont kiszámítása Fahrenheitben (alapértelmezett) float dpf12 = dht12.dewPoint (f12, h12); // Harmatpont kiszámítása Celsius -ban (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

7. lépés: Egyszerű olvasás

Egyszerű olvasás az olvasási állapot megszerzéséhez.

// Az érzékelő leolvasása 2 másodperc eltelt idővel rendelkezik, hacsak nem adja át az erőparamétert

bool chk = dht12.read (); // igaz olvasás rendben van, hamis olvasási probléma

// A hőmérséklet olvasása Celsius -ban (alapértelmezett)

float t12 = dht12.readTemperature (); // A hőmérséklet olvasása Fahrenheit (isFahrenheit = igaz) float f12 = dht12.readTemperature (true); // Az érzékelők leolvasása akár 2 másodperces „régi” is lehet (nagyon lassú érzékelő) float h12 = dht12.readHumidity (); // Hőindex kiszámítása Fahrenheitben (alapértelmezett) float hif12 = dht12.computeHeatIndex (f12, h12); // Hőindex számítása Celsius -ban (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Harmatpont kiszámítása Fahrenheitben (alapértelmezett) float dpf12 = dht12.dewPoint (f12, h12); // Harmatpont kiszámítása Celsius -ban (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

8. lépés: Teljes olvasmány

Teljes olvasás a megadott állapot eléréséhez.

// Az érzékelő leolvasása 2 másodperc eltelt idővel rendelkezik, hacsak nem adja át az erőparamétert

DHT12:: Olvasási állapot chk = dht12.readStatus (); Serial.print (F ("\ nOlvasószenzor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); szünet; eset DHT12:: ERROR_CHECKSUM: Serial.println (F ("Ellenőrző összeg hiba")); szünet; DHT12:: ERROR_TIMEOUT eset: Serial.println (F ("Időtúllépési hiba")); szünet; DHT12:: ERROR_TIMEOUT_LOW eset: Serial.println (F ("Időtúllépési hiba az alacsony jelnél, próbáljon meg magas húzóellenállást")); szünet; DHT12:: ERROR_TIMEOUT_HIGH eset: Serial.println (F ("Időtúllépési hiba alacsony jel esetén, próbáljon alacsony húzóellenállást tenni")); szünet; DHT12:: ERROR_CONNECT eset: Serial.println (F ("Csatlakozási hiba")); szünet; DHT12:: ERROR_ACK_L: Serial.println (F ("AckL hiba")); szünet; DHT12:: ERROR_ACK_H: Serial.println (F ("AckH hiba")); szünet; DHT12 eset: ERROR_UNKNOWN: Serial.println (F ("Ismeretlen hiba DETECTED")); szünet; DHT12 eset: NINCS: Serial.println (F ("Nincs eredmény")); szünet; alapértelmezett: Serial.println (F ("Ismeretlen hiba")); szünet; }

// A hőmérséklet olvasása Celsius -ban (alapértelmezett)

float t12 = dht12.readTemperature (); // A hőmérséklet olvasása Fahrenheit (isFahrenheit = igaz) float f12 = dht12.readTemperature (true); // Az érzékelők leolvasása akár 2 másodperces „régi” is lehet (nagyon lassú érzékelő) float h12 = dht12.readHumidity (); // Hőindex kiszámítása Fahrenheitben (alapértelmezett) float hif12 = dht12.computeHeatIndex (f12, h12); // Hőindex számítása Celsius -ban (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Harmatpont kiszámítása Fahrenheitben (alapértelmezett) float dpf12 = dht12.dewPoint (f12, h12); // Harmatpont kiszámítása Celsius -ban (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

9. lépés: Csatlakozási rajz

Példákkal a csatlakozási rajz, fontos a megfelelő felhúzó ellenállás használata.

Köszönöm Bobadas -nak, dplasa -nak és adafruitnak, hogy megosztják a kódot a github -ban (ahol néhány kódot és ötletet veszek).

10. lépés: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

11. lépés: Arduino: I2c

Arduino: I2c
Arduino: I2c

12. lépés: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

13. lépés: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

14. lépés: Köszönöm

Arduino játszótér (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c projekt sorozat (Gyűjtemény):

  • Hőmérséklet páratartalom érzékelő
  • Analóg bővítő
  • Digitális bővítő
  • LCD kijelzö

Ajánlott: