Satura rādītājs:

DHT12 (i2c lēts mitruma un temperatūras sensors), ātra un vienkārša lietošana: 14 soļi
DHT12 (i2c lēts mitruma un temperatūras sensors), ātra un vienkārša lietošana: 14 soļi

Video: DHT12 (i2c lēts mitruma un temperatūras sensors), ātra un vienkārša lietošana: 14 soļi

Video: DHT12 (i2c lēts mitruma un temperatūras sensors), ātra un vienkārša lietošana: 14 soļi
Video: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, Novembris
Anonim
DHT12 (i2c lēts mitruma un temperatūras sensors), ātra un vienkārša lietošana
DHT12 (i2c lēts mitruma un temperatūras sensors), ātra un vienkārša lietošana

Atjauninājumus un citu informāciju varat atrast manā vietnē

Man patīk sensors, ko var izmantot ar 2 vadiem (i2c protokols), bet man patīk lēts.

Šī ir Arduino un esp8266 bibliotēka DHT12 sērijai ļoti zemu izmaksu temperatūras/mitruma sensoriem (mazāk nekā 1 USD), kas darbojas ar i2c vai vienu vadu savienojumu.

Ļoti noderīgi, ja vēlaties izmantot esp01 (ja izmantojat seriālo, jums ir tikai 2 tapas), lai nolasītu mitrumu un temperatūru un parādītu to i2c LCD.

AI lasīja, ka dažkārt šķiet, ka tas ir jākalibrē, bet man ir šis koks un iegūstu vērtību, kas ir ļoti līdzīga DHT22. Ja jums ir šīs problēmas kalibrēšana, atveriet problēmu vietnē github, un es pievienoju ieviešanu.

1. darbība. Kā darbojas I2c

Kā darbojas I2c
Kā darbojas I2c

I2C darbojas ar diviem vadiem - SDA (datu līnija) un SCL (pulksteņa līnija).

Abas šīs līnijas ir atvērtas kanalizācijas, bet ir uzvilktas ar rezistoriem.

Parasti uz līnijas ir viens saimnieks un viens vai vairāki vergi, lai gan var būt vairāki saimnieki, bet mēs par to runāsim vēlāk.

Gan kapteiņi, gan vergi var pārsūtīt vai saņemt datus, tāpēc ierīce var būt vienā no šiem četriem stāvokļiem: galvenā pārraide, galvenā saņemšana, vergu pārraide, vergu saņemšana.

2. darbība: bibliotēka

Manu bibliotēku varat atrast šeit.

Lai lejupielādētu

Augšējā labajā stūrī noklikšķiniet uz pogas LEJUPIELĀDĒT, pārdēvējiet nesaspiesto mapi DHT12.

Pārbaudiet, vai DHT mapē ir DHT12.cpp un DHT12.h.

Ievietojiet DHT bibliotēkas mapi savā / libraries / mapē.

Jums var būt jāizveido bibliotēku apakšmape, ja tā ir jūsu pirmā bibliotēka.

Restartējiet IDE.

3. darbība: uzvedība

Šī libray mēģina līdzināties standarta DHT bibliotēkas sensoru uzvedībai (un kopē daudz koda), un es pievienoju kodu, lai tādā pašā veidā pārvaldītu i2c olso.

Metode ir tāda pati kā DHT bibliotēkas sensoram, dažiem pievienojot rasas punkta funkciju.

4. darbība: I2c lietošana

Lai izmantotu ar i2c (noklusējuma adrese un noklusējuma SDA SCL tapa), konstruktors ir:

DHT12 dht12;

un ņemiet SDA SCL tapas noklusējuma vērtību.

(Ir iespējams no jauna definēt ar norādīto esp8266 kontrolieri, kas nepieciešams ESP-01). vai

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> adrese

lai mainītu adresi.

5. darbība: viena stieples izmantošana

Lai izmantotu vienu vadu:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> pin

Būla vērtība ir oneWire vai i2c režīma izvēle.

6. darbība: netieša lasīšana

Varat to izmantot ar "netiešu", "vienkāršu lasīšanu" vai "pilnu lasīšanu": netieši, tikai pirmais lasījums, kas nolasa patiesi sensoru, otrs lasījums, kas kļūst 2 sek. intervāls ir pirmā lasījuma saglabātā vērtība.

// Sensora nolasījumam ir pagājušas 2 sekundes, ja vien nenododat spēka parametru

// Temperatūras lasīšana pēc Celsija (noklusējuma) float t12 = dht12.readTemperature (); // Temperatūras lasīšana pēc Fārenheita (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensora rādījumi var būt arī līdz 2 sekundēm veci (tas ir ļoti lēns sensors) pludiņš h12 = dht12.readHumidity (); // Aprēķināt siltuma indeksu pēc Fārenheita (noklusējums) float hif12 = dht12.computeHeatIndex (f12, h12); // Aprēķināt siltuma indeksu pēc Celsija (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Rasas punkta aprēķināšana pēc Fārenheita (noklusējuma) pludiņš dpf12 = dht12.dewPoint (f12, h12); // Rasas punkta aprēķināšana pēc Celsija (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

7. darbība: vienkārša lasīšana

Vienkārša lasīšana, lai iegūtu lasīšanas statusu.

// Sensora nolasījumam ir pagājušas 2 sekundes, ja vien nenododat spēka parametru

bool chk = dht12. lasīt (); // patiesa lasīšana ir ok, nepatiesa lasīšanas problēma

// Temperatūras lasīšana pēc Celsija (noklusējums)

pludiņš t12 = dht12.readTemperature (); // Temperatūras lasīšana pēc Fārenheita (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensora rādījumi var būt arī līdz 2 sekundēm veci (tas ir ļoti lēns sensors) pludiņš h12 = dht12.readHumidity (); // Aprēķināt siltuma indeksu pēc Fārenheita (noklusējums) float hif12 = dht12.computeHeatIndex (f12, h12); // Aprēķināt siltuma indeksu pēc Celsija (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Rasas punkta aprēķināšana pēc Fārenheita (noklusējuma) pludiņš dpf12 = dht12.dewPoint (f12, h12); // Rasas punkta aprēķināšana pēc Celsija (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

8. solis: pilna lasīšana

Pilns lasījums, lai iegūtu noteiktu statusu.

// Sensora nolasījumam ir pagājušas 2 sekundes, ja vien nenododat spēka parametru

DHT12:: Lasīšanas statuss chk = dht12.readStatus (); Serial.print (F ("\ nLasīt sensoru:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); pārtraukums; gadījums DHT12:: ERROR_CHECKSUM: Serial.println (F ("Kontrolsummas kļūda")); pārtraukums; gadījums DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); pārtraukums; gadījums DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Taimauta kļūda zemam signālam, mēģiniet uzlikt lielu pievilkšanas pretestību")); pārtraukums; gadījums DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Noildzes kļūda zemam signālam, mēģiniet likt zemu pievilkšanas pretestību")); pārtraukums; gadījums DHT12:: ERROR_CONNECT: Serial.println (F ("Savienojuma kļūda")); pārtraukums; gadījums DHT12:: ERROR_ACK_L: Serial.println (F ("AckL kļūda")); pārtraukums; gadījums DHT12:: ERROR_ACK_H: Serial.println (F ("AckH kļūda")); pārtraukums; gadījums DHT12:: ERROR_UNKNOWN: Serial.println (F ("NEZINĀTA kļūda DETECTED")); pārtraukums; gadījums DHT12:: NAV: Serial.println (F ("Nav rezultāta")); pārtraukums; noklusējums: Serial.println (F ("Nezināma kļūda")); pārtraukums; }

// Temperatūras lasīšana pēc Celsija (noklusējums)

pludiņš t12 = dht12.readTemperature (); // Temperatūras lasīšana pēc Fārenheita (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensora rādījumi var būt arī līdz 2 sekundēm veci (tas ir ļoti lēns sensors) pludiņš h12 = dht12.readHumidity (); // Aprēķināt siltuma indeksu pēc Fārenheita (noklusējums) float hif12 = dht12.computeHeatIndex (f12, h12); // Aprēķināt siltuma indeksu pēc Celsija (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Rasas punkta aprēķināšana pēc Fārenheita (noklusējuma) pludiņš dpf12 = dht12.dewPoint (f12, h12); // Rasas punkta aprēķināšana pēc Celsija (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

9. darbība. Savienojuma shēma

Izmantojot piemērus, ir pievienošanas shēma, ir svarīgi izmantot pareizo pievilkšanas rezistoru.

Paldies Bobadas, dplasa un adafruit, lai kopīgotu kodu github (kur es ņemu dažus kodus un idejas).

10. darbība: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

11. darbība: Arduino: I2c

Arduino: I2c
Arduino: I2c

12. darbība: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

13. darbība: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

14. solis: Paldies

Arduino rotaļu laukums (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c projektu sērija (kolekcija):

  • Temperatūras mitruma sensors
  • Analogais paplašinātājs
  • Digitālais paplašinātājs
  • LCD displejs

Ieteicams: