Sisukord:

DHT12 (i2c odava niiskuse ja temperatuuri andur), kiire lihtne kasutamine: 14 sammu
DHT12 (i2c odava niiskuse ja temperatuuri andur), kiire lihtne kasutamine: 14 sammu

Video: DHT12 (i2c odava niiskuse ja temperatuuri andur), kiire lihtne kasutamine: 14 sammu

Video: DHT12 (i2c odava niiskuse ja temperatuuri andur), kiire lihtne kasutamine: 14 sammu
Video: Датчик влажности и температуры AM2320 2024, Juuli
Anonim
DHT12 (i2c odava niiskuse ja temperatuuri andur), kiire lihtne kasutamine
DHT12 (i2c odava niiskuse ja temperatuuri andur), kiire lihtne kasutamine

Värskendusi ja muud leiate minu saidilt

Mulle meeldib andur, mida saab kasutada 2 juhtmega (i2c protokoll), kuid mulle meeldib odav.

See on Arduino ja esp8266 raamatukogu DHT12 seeria väga odavate temperatuuri/niiskuse andurite (alla 1 $) jaoks, mis töötavad i2c või ühe juhtmega.

Väga kasulik, kui soovite kasutada niiskuse ja temperatuuri lugemiseks ning i2c LCD -ekraanil kuvamiseks esp01 -d (kui kasutate jadaühendust, teil on ainult 2 tihvti).

AI luges, et mõnikord tundub, et see vajab kalibreerimist, kuid mul on selle puu ja saan väärtuse, mis on väga sarnane DHT22 -ga. Kui teil on see probleem kalibreeritud, avage probleem githubis ja lisan rakenduse.

Samm: kuidas I2c töötab

Kuidas I2c töötab
Kuidas I2c töötab

I2C töötab kahe juhtmega, SDA (andmeside) ja SCL (kellajoon).

Mõlemad liinid on avatud äravooluga, kuid takistitega üles tõmmatud.

Tavaliselt on liinil üks peremees ja üks või mitu orja, kuigi neid võib olla mitu, kuid sellest räägime hiljem.

Nii meistrid kui ka orjad saavad andmeid edastada või vastu võtta, seetõttu võib seade olla ühes neljast olekust: põhisaatmine, ülemvastuvõtmine, alamsaade, alamvastuvõtt.

2. samm: kogu

Minu raamatukogu leiate siit.

Alla laadida

Klõpsake paremas ülanurgas nuppu DOWNLOADS (Laadi alla), nimetage tihendamata kaust ümber DHT12 -ks.

Kontrollige, kas kaust DHT sisaldab DHT12.cpp ja DHT12.h.

Asetage DHT raamatukogu kaust oma / libraries / kausta.

Teil võib tekkida vajadus luua raamatukogude alamkaust, kui see on teie esimene kogu.

Taaskäivitage IDE.

3. samm: käitumine

See libray proovib jäljendada tavaliste DHT -teegiandurite käitumist (ja kopeerida palju koodi) ning lisan koodi, et hallata i2c olso samal viisil.

Meetod on sama DHT raamatukogu anduriga, mõned lisavad kastepunkti funktsiooni.

4. samm: I2c kasutamine

Kasutamiseks koos i2c -ga (vaikimisi aadress ja vaikimisi kasutatav SDA SCL -pin) on konstruktor järgmine:

DHT12 dht12;

ja võtke SDA SCL -i tihvti vaikeväärtus.

(Esp8266 jaoks on võimalik uuesti määratleda määratud konstruktoriga, vajalik ESP-01 jaoks). või

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> aadress

aadressi muutmiseks.

Samm: ühe juhtme kasutamine

Ühe juhtme kasutamiseks:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> pin

loogiline väärtus on oneWire või i2c režiimi valik.

6. samm: kaudne lugemine

Saate seda kasutada koos "kaudse", "lihtsa lugemise" või "täislugemisega": kaudselt, ainult esimene lugemine teeb anduri tõese lugemise, teine lugemine, mis saab 2 sekundiga. intervall on esimese lugemise salvestatud väärtus.

// Anduri lugemil on kulunud 2 sekundit, kui te jõu parameetrit ei edasta

// Temperatuuri lugemine Celsiuse järgi (vaikimisi) float t12 = dht12.readTemperature (); // Temperatuuri lugemine Fahrenheiti järgi (isFahrenheit = tõene) float f12 = dht12.readTemperature (true); // Andurite näidud võivad olla ka kuni 2 sekundit vanad (see on väga aeglane andur) float h12 = dht12.readHumidity (); // Soojusindeksi arvutamine Fahrenheiti järgi (vaikimisi) float hif12 = dht12.computeHeatIndex (f12, h12); // Soojusindeksi arvutamine Celsiuse järgi (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Kastepunkti arvutamine Fahrenheiti järgi (vaikimisi) float dpf12 = dht12.dewPoint (f12, h12); // Kastepunkti arvutamine Celsiuse järgi (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Samm: lihtne lugemine

Lihtne lugemine lugemisoleku saamiseks.

// Anduri lugemil on kulunud 2 sekundit, kui te jõu parameetrit ei edasta

bool chk = dht12.lugu (); // tõeline lugemine on ok, vale lugemise probleem

// Temperatuuri lugemine Celsiuse järgi (vaikimisi)

ujuk t12 = dht12.readTemperature (); // Temperatuuri lugemine Fahrenheiti järgi (isFahrenheit = tõene) float f12 = dht12.readTemperature (true); // Andurite näidud võivad olla ka kuni 2 sekundit vanad (see on väga aeglane andur) float h12 = dht12.readHumidity (); // Soojusindeksi arvutamine Fahrenheiti järgi (vaikimisi) float hif12 = dht12.computeHeatIndex (f12, h12); // Soojusindeksi arvutamine Celsiuse järgi (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Kastepunkti arvutamine Fahrenheiti järgi (vaikimisi) float dpf12 = dht12.dewPoint (f12, h12); // Kastepunkti arvutamine Celsiuse järgi (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

8. samm: täielik lugemine

Täielik lugemine määratud oleku saamiseks.

// Anduri lugemil on kulunud 2 sekundit, kui te jõu parameetrit ei edasta

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nLugemisandur:")); lüliti (chk) {juhtum DHT12:: OK: Serial.println (F ("OK")); murda; juhtum DHT12:: ERROR_CHECKSUM: Serial.println (F ("Kontrollsumma viga")); murda; juhtum DHT12:: ERROR_TIMEOUT: Serial.println (F ("Ajalõpu viga")); murda; juhtum DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Aegumise viga madala signaali korral, proovige panna kõrge tõmbetakistus")); murda; juhtum DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Aegumise viga madala signaali korral, proovige panna väike tõmbetakistus")); murda; juhtum DHT12:: ERROR_CONNECT: Serial.println (F ("Ühendusviga")); murda; juhtum DHT12:: ERROR_ACK_L: Serial.println (F ("AckL -viga")); murda; juhtum DHT12:: ERROR_ACK_H: Serial.println (F ("AckH viga")); murda; juhtum DHT12:: ERROR_UNKNOWN: Serial.println (F ("Tundmatu viga Tuvastatud")); murda; juhtum DHT12:: NONE: Serial.println (F ("Tulemust pole")); murda; vaikimisi: Serial.println (F ("Tundmatu viga")); murda; }

// Temperatuuri lugemine Celsiuse järgi (vaikimisi)

ujuk t12 = dht12.readTemperature (); // Temperatuuri lugemine Fahrenheiti järgi (isFahrenheit = tõene) float f12 = dht12.readTemperature (true); // Andurite näidud võivad olla ka kuni 2 sekundit vanad (see on väga aeglane andur) float h12 = dht12.readHumidity (); // Soojusindeksi arvutamine Fahrenheiti järgi (vaikimisi) float hif12 = dht12.computeHeatIndex (f12, h12); // Soojusindeksi arvutamine Celsiuse järgi (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Kastepunkti arvutamine Fahrenheiti järgi (vaikimisi) float dpf12 = dht12.dewPoint (f12, h12); // Kastepunkti arvutamine Celsiuse järgi (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

9. samm: ühendusskeem

Näidetega on ühendusskeem, oluline on kasutada õiget tõmbetakistit.

Tänu Bobadasele, dplasale ja adafruitile, et jagada koodi githubis (kust ma võtan mõned koodid ja ideed).

10. samm: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

11. samm: Arduino: I2c

Arduino: I2c
Arduino: I2c

12. samm: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Samm 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

14. samm: aitäh

Arduino mänguväljak (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c projektisari (kollektsioon):

  • Temperatuuri niiskuse andur
  • Analooglaiendaja
  • Digitaalne laiendaja
  • LCD ekraan

Soovitan: