Turinys:

DHT12 („i2c“pigus drėgmės ir temperatūros jutiklis), greitas ir paprastas naudojimas: 14 žingsnių
DHT12 („i2c“pigus drėgmės ir temperatūros jutiklis), greitas ir paprastas naudojimas: 14 žingsnių

Video: DHT12 („i2c“pigus drėgmės ir temperatūros jutiklis), greitas ir paprastas naudojimas: 14 žingsnių

Video: DHT12 („i2c“pigus drėgmės ir temperatūros jutiklis), greitas ir paprastas naudojimas: 14 žingsnių
Video: Датчик влажности и температуры AM2320 2024, Liepa
Anonim
DHT12 („i2c“pigus drėgmės ir temperatūros jutiklis), greitas ir paprastas naudojimas
DHT12 („i2c“pigus drėgmės ir temperatūros jutiklis), greitas ir paprastas naudojimas

Atnaujinimus ir kitus galite rasti mano svetainėje

Man patinka jutiklis, kurį galima naudoti su 2 laidais („i2c“protokolas), bet man patinka nebrangus.

Tai yra „Arduino“ir esp8266 biblioteka, skirta DHT12 serijos labai nebrangiems temperatūros/drėgmės jutikliams (mažiau nei 1 USD), kurie veikia su „i2c“arba vienu laidiniu ryšiu.

Labai naudinga, jei norite naudoti esp01 (jei naudojate serijinį, turite tik 2 kontaktus), kad nuskaitytumėte drėgmę ir temperatūrą ir parodytumėte ją „i2c“LCD ekrane.

AI skaitė, kad kartais atrodo, kad reikia kalibruoti, bet aš turiu šį medį ir gaunu vertę, labai panašią į DHT22. Jei kalibruojate šią problemą, atidarykite „github“problemą ir pridėsiu įgyvendinimą.

1 žingsnis: Kaip veikia „I2c“

Kaip veikia „I2c“
Kaip veikia „I2c“

„I2C“veikia su dviem laidais: SDA (duomenų linija) ir SCL (laikrodžio linija).

Abi šios linijos yra atviro nutekėjimo, tačiau ištraukiamos su rezistoriais.

Paprastai linijoje yra vienas šeimininkas ir vienas ar keli vergai, nors gali būti keli šeimininkai, tačiau apie tai kalbėsime vėliau.

Tiek šeimininkai, tiek vergai gali perduoti arba priimti duomenis, todėl įrenginys gali būti vienoje iš šių keturių būsenų: pagrindinis perdavimas, pagrindinis priėmimas, vergo perdavimas, vergo priėmimas.

2 žingsnis: biblioteka

Mano biblioteką rasite čia.

Atsisiųsti

Viršutiniame dešiniajame kampe spustelėkite mygtuką ATSISIŲSTI, pervardykite nesuspaustą aplanką DHT12.

Patikrinkite, ar DHT aplanke yra DHT12.cpp ir DHT12.h.

Įdėkite DHT bibliotekos aplanką į savo / libraries / aplanką.

Jums gali tekti sukurti bibliotekų pakatalogį, jei tai jūsų pirmoji biblioteka.

Iš naujo paleiskite IDE.

3 žingsnis: Elgesys

Ši libray bando imituoti standartinių DHT bibliotekos jutiklių elgseną (ir nukopijuoti daug kodo), o aš pridedu kodą, kad tokiu pačiu būdu valdyčiau „i2c olso“.

Metodas yra tas pats, kaip ir DHT bibliotekos jutiklis, kai kurie papildo rasos taško funkciją.

4 žingsnis: I2c naudojimas

Norėdami naudoti su „i2c“(numatytasis adresas ir numatytasis SDA SCL kaištis), konstruktorius yra:

DHT12 dht12;

ir paimkite numatytąją SDA SCL kaiščio vertę.

(Galima iš naujo apibrėžti naudojant nurodytą esp8266 konstruktorių, reikalingą ESP-01). arba

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> adresas

pakeisti adresą.

5 žingsnis: vieno laido naudojimas

Norėdami naudoti vieną laidą:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> kaištis

loginė vertė yra „oneWire“arba „i2c“režimo pasirinkimas.

6 žingsnis: numanomas skaitymas

Jį galite naudoti su „numanomu“, „paprastu skaitymu“arba „pilnai perskaitytu“: netiesiogiai, tik pirmasis skaitymas atlieka tikrą jutiklio nuskaitymą, kitas skaitymas - per 2 sekundes. intervalas yra pirmojo skaitymo išsaugota vertė.

// Jutiklio nuskaitymas turi praeiti 2 sekundes, nebent perduosite jėgos parametrą

// Skaityti temperatūrą kaip Celsijų (numatytoji) float t12 = dht12.readTemperature (); // Skaityti temperatūrą kaip Farenheitą (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Jutiklio rodmenys taip pat gali būti iki 2 sekundžių seno (jo labai lėtas jutiklis) plūdė h12 = dht12.readHumidity (); // Apskaičiuoti šilumos indeksą Farenheitu (numatytasis) float hif12 = dht12.computeHeatIndex (f12, h12); // Apskaičiuoti šilumos indeksą Celsijaus (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Apskaičiuoti rasos tašką Farenheitu (numatytasis) float dpf12 = dht12.dewPoint (f12, h12); // Apskaičiuoti rasos tašką Celsijaus (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

7 žingsnis: paprastas skaitymas

Paprastas skaitymas, norint gauti skaitymo būseną.

// Jutiklio nuskaitymas turi praeiti 2 sekundes, nebent perduosite jėgos parametrą

bool chk = dht12. skaityti (); // tikras skaitymas yra gerai, klaidingo skaitymo problema

// Skaityti temperatūrą kaip Celsijų (numatytasis)

plūdė t12 = dht12.readTemperature (); // Skaityti temperatūrą kaip Farenheitą (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Jutiklio rodmenys taip pat gali būti iki 2 sekundžių seno (jo labai lėtas jutiklis) plūdė h12 = dht12.readHumidity (); // Apskaičiuoti šilumos indeksą Farenheitu (numatytasis) float hif12 = dht12.computeHeatIndex (f12, h12); // Apskaičiuoti šilumos indeksą Celsijaus (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Apskaičiuoti rasos tašką Farenheitu (numatytasis) float dpf12 = dht12.dewPoint (f12, h12); // Apskaičiuoti rasos tašką Celsijaus (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

8 žingsnis: visiškai perskaitykite

Visiškai perskaitykite, kad gautumėte nurodytą būseną.

// Jutiklio nuskaitymas turi praeiti 2 sekundes, nebent perduosite jėgos parametrą

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nSkaitykite jutiklį:")); jungiklis (chk) {atvejis DHT12:: OK: Serial.println (F („OK“)); pertrauka; atvejis DHT12:: ERROR_CHECKSUM: Serial.println (F („Kontrolinės sumos klaida“)); pertrauka; atvejis DHT12:: ERROR_TIMEOUT: Serial.println (F („Timeout error“)); pertrauka; atvejis DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F („Laiko skirtumo klaida esant žemam signalui, pabandykite įkelti didelį atsparumą prisitraukimui“)); pertrauka; atvejis DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F („Laiko skirtumo klaida esant žemam signalui, pabandykite uždėti mažą pasipriešinimą“)); pertrauka; atvejis DHT12:: ERROR_CONNECT: Serial.println (F („Prisijungimo klaida“)); pertrauka; atvejis DHT12:: ERROR_ACK_L: Serial.println (F („AckL klaida“)); pertrauka; atvejis DHT12:: ERROR_ACK_H: Serial.println (F („AckH klaida“)); pertrauka; atvejis DHT12:: ERROR_UNKNOWN: Serial.println (F („Aptikta nežinoma klaida“)); pertrauka; atvejis DHT12:: NĖRA: Serial.println (F („Nėra rezultato“)); pertrauka; numatytasis: Serial.println (F („Nežinoma klaida“)); pertrauka; }

// Skaityti temperatūrą kaip Celsijų (numatytasis)

plūdė t12 = dht12.readTemperature (); // Skaityti temperatūrą kaip Farenheitą (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Jutiklio rodmenys taip pat gali būti iki 2 sekundžių seno (jo labai lėtas jutiklis) plūdė h12 = dht12.readHumidity (); // Apskaičiuoti šilumos indeksą Farenheitu (numatytasis) float hif12 = dht12.computeHeatIndex (f12, h12); // Apskaičiuoti šilumos indeksą Celsijaus (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Apskaičiuoti rasos tašką Farenheitu (numatytasis) float dpf12 = dht12.dewPoint (f12, h12); // Apskaičiuoti rasos tašką Celsijaus (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

9 veiksmas: prijungimo schema

Pavyzdžiui, yra prijungimo schema, svarbu naudoti teisingą traukimo rezistorių.

Ačiū Bobadas, dplasa ir adafruit, kad pasidalintumėte kodu „github“(kur aš paimu keletą kodų ir idėjų).

10 veiksmas: „Arduino“: „OneWire“

Arduino: „OneWire“
Arduino: „OneWire“

11 veiksmas: „Arduino“: I2c

Arduino: I2c
Arduino: I2c

12 veiksmas: „Esp8266“(„D1Mini“) „OneWire“

Esp8266 (D1Mini) „OneWire“
Esp8266 (D1Mini) „OneWire“

13 žingsnis: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

14 žingsnis: ačiū

„Arduino“žaidimų aikštelė (https://playground.arduino.cc/Main/DHT12SensorLibrary)

„i2c“projektų serija (kolekcija):

  • Drėgmės temperatūros jutiklis
  • Analoginis plėtiklis
  • Skaitmeninis plėtiklis
  • LCD ekranas

Rekomenduojamas: