Kazalo:

DHT12 (senzor poceni vlažnosti in temperature i2c), hitra enostavna uporaba: 14 korakov
DHT12 (senzor poceni vlažnosti in temperature i2c), hitra enostavna uporaba: 14 korakov

Video: DHT12 (senzor poceni vlažnosti in temperature i2c), hitra enostavna uporaba: 14 korakov

Video: DHT12 (senzor poceni vlažnosti in temperature i2c), hitra enostavna uporaba: 14 korakov
Video: Как избежать появления трещин на стенах? Подготовка под штукатурку. #11 2024, November
Anonim
DHT12 (senzor poceni vlažnosti in temperature i2c), hitra enostavna uporaba
DHT12 (senzor poceni vlažnosti in temperature i2c), hitra enostavna uporaba

Posodobitve in drugo najdete na moji spletni strani

Všeč mi je senzor, ki ga lahko uporabljam z 2 žicami (protokol i2c), vendar mi je všeč poceni.

To je knjižnica Arduino in esp8266 za nizkocenovne senzorje temperature/vlažnosti DHT12 (manj kot 1 USD), ki delujejo z i2c ali eno žično povezavo.

Zelo koristno, če želite uporabiti esp01 (če uporabljate serijsko, imate samo 2 polna), da preberete vlažnost in temperaturo ter jih prikažete na i2c LCD.

AI sem prebral, da se včasih zdi potrebno umeriti, vendar imam drevo tega in dobim vrednost zelo podobno kot DHT22. Če imate kalibracijo te težave, odprite težavo na githubu in dodam izvedbo.

1. korak: Kako deluje I2c

Kako deluje I2c
Kako deluje I2c

I2C deluje z dvema žicama, SDA (podatkovna linija) in SCL (linija ure).

Obe liniji sta odprti, vendar sta potegnjeni z upori.

Običajno je na liniji en glavni in en ali več podrejenih, čeprav jih je lahko več, vendar bomo o tem govorili kasneje.

Tako nadrejeni kot podrejeni lahko prenašajo ali sprejemajo podatke, zato je naprava lahko v enem od teh štirih stanj: glavni prenos, glavni sprejem, podrejeni prenos, podrejeni sprejem.

2. korak: Knjižnica

Mojo knjižnico najdete tukaj.

Prenesti

Kliknite gumb DOWNLOADS v zgornjem desnem kotu in preimenujte nestisnjeno mapo DHT12.

Preverite, ali mapa DHT vsebuje DHT12.cpp in DHT12.h.

Mapo knjižnice DHT postavite v mapo / libraries /.

Morda boste morali ustvariti podmapo knjižnice, če je to vaša prva knjižnica.

Znova zaženite IDE.

3. korak: Behaivor

Ta knjižnica poskuša posnemati obnašanje standardnih knjižničnih senzorjev DHT (in kopira veliko kode), jaz pa dodam kodo za upravljanje i2c tudi na enak način.

Metoda je enaka kot pri tipalu knjižnice DHT, nekateri dodajajo funkcijo rosišča.

4. korak: Uporaba I2c

Za uporabo z i2c (privzeti naslov in privzeti pin SCA SDA) je konstruktor:

DHT12 dht12;

in vzemite privzeto vrednost za SDA SCL pin.

(Možno je redefinirati z določenim izvajalcem za esp8266, potrebnim za ESP-01). ali

DHT12 dht12 (uint8_t naslovOrPin)

addressOrPin -> naslov

spremeniti naslov.

5. korak: Uporaba ene žice

Če želite uporabiti eno žico:

DHT12 dht12 (uint8_t naslovOrPin, res)

addressOrPin -> pin

logična vrednost je izbira načina oneWire ali i2c.

6. korak: Implicitno branje

Uporabite ga lahko z "implicitno", "preprosto branje" ali "polno branje": implicitno, samo prvo branje resnično bere senzor, drugo branje pa v 2 sekundah. interval so shranjene vrednosti prvega branja.

// Odčitavanje senzorja traja 2 sekundi, razen če prenesete parameter sile

// Temperatura se bere kot Celzij (privzeto) float t12 = dht12.readTemperature (); // Temperatura se bere kot Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Odčitki senzorjev so lahko tudi do 2 sekundi "stari" (to je zelo počasen senzor) float h12 = dht12.readHumidity (); // Izračunamo toplotni indeks v Fahrenheitu (privzeto) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunamo toplotni indeks v Celzijih (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Izračunamo rosišče v Fahrenheitu (privzeto) float dpf12 = dht12.dewPoint (f12, h12); // Izračunamo rosišče v Celziju (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

7. korak: Enostavno branje

Preprosto branje, da dobite status branja.

// Odčitavanje senzorja traja 2 sekundi, razen če prenesete parameter sile

bool chk = dht12.read (); // resnično branje je v redu, napačno branje

// Temperatura se bere kot Celzij (privzeto)

float t12 = dht12.readTemperature (); // Temperatura se bere kot Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Odčitki senzorjev so lahko tudi do 2 sekundi "stari" (to je zelo počasen senzor) float h12 = dht12.readHumidity (); // Izračunamo toplotni indeks v Fahrenheitu (privzeto) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunamo toplotni indeks v Celsiusih (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Izračunamo rosišče v Fahrenheitu (privzeto) float dpf12 = dht12.dewPoint (f12, h12); // Izračunamo rosišče v Celziju (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

8. korak: Preberite v celoti

Celotno branje, da dobite določeno stanje.

// Odčitavanje senzorja traja 2 sekundi, razen če prenesete parameter sile

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nPreberi senzor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); zlom; primer DHT12:: ERROR_CHECKSUM: Serial.println (F ("Napaka kontrolne vsote")); zlom; ohišje DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); zlom; ohišje DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Napaka časovne omejitve pri nizkem signalu, poskusite z visoko odpornostjo na vlečenje")); zlom; ohišje DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Napaka časovne omejitve pri nizkem signalu, poskusite z nizko upornostjo")); zlom; primer DHT12:: ERROR_CONNECT: Serial.println (F ("Napaka pri povezovanju")); zlom; primer DHT12:: ERROR_ACK_L: Serial.println (F ("Napaka AckL")); zlom; primer DHT12:: ERROR_ACK_H: Serial.println (F ("Napaka AckH")); zlom; primer DHT12:: ERROR_UNKNOWN: Serial.println (F ("DETECTED Unknown error DETECTED")); zlom; ohišje DHT12:: NONE: Serial.println (F ("Ni rezultata")); zlom; privzeto: Serial.println (F ("Neznana napaka")); zlom; }

// Temperatura se bere kot Celzij (privzeto)

float t12 = dht12.readTemperature (); // Temperatura se bere kot Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Odčitki senzorjev so lahko tudi do 2 sekundi "stari" (to je zelo počasen senzor) float h12 = dht12.readHumidity (); // Izračunamo toplotni indeks v Fahrenheitu (privzeto) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunamo toplotni indeks v Celsiusih (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Izračunamo rosišče v Fahrenheitu (privzeto) float dpf12 = dht12.dewPoint (f12, h12); // Izračunamo rosišče v Celziju (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

9. korak: Shema povezave

Na primer, obstaja shema povezave, pomembno je, da uporabite pravilen upor.

Hvala Bobadas, dplasa in adafruit, da so kodo delili v githubu (kjer vzamem nekaj kode in idej).

10. korak: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

11. korak: Arduino: I2c

Arduino: I2c
Arduino: I2c

12. korak: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

13. korak: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

14. korak: Hvala

Igrišče Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

serija projektov i2c (zbirka):

  • Senzor temperaturne vlažnosti
  • Analogni ekspander
  • Digitalni ekspander
  • LCD zaslon

Priporočena: