Përmbajtje:

DHT12 (sensori i lirë i lagështisë dhe temperaturës i2c), përdorim i shpejtë i lehtë: 14 hapa
DHT12 (sensori i lirë i lagështisë dhe temperaturës i2c), përdorim i shpejtë i lehtë: 14 hapa

Video: DHT12 (sensori i lirë i lagështisë dhe temperaturës i2c), përdorim i shpejtë i lehtë: 14 hapa

Video: DHT12 (sensori i lirë i lagështisë dhe temperaturës i2c), përdorim i shpejtë i lehtë: 14 hapa
Video: ESP32 Tutorial - DHT11/DHT22 (Temperature and Humidity Sensor) 2024, Nëntor
Anonim
DHT12 (sensori i lagështisë dhe temperaturës i lirë i2c), përdorim i shpejtë i lehtë
DHT12 (sensori i lagështisë dhe temperaturës i lirë i2c), përdorim i shpejtë i lehtë

Mund të gjeni përditësime dhe të tjera në faqen time

Më pëlqen sensori që mund të përdoret me 2 tela (protokoll i2c), por më pëlqen ai i lirë.

Kjo është një bibliotekë Arduino dhe esp8266 për serinë DHT12 të sensorëve me kosto shumë të ulët të temperaturës/lagështisë (më pak se 1 $) që punojnë me i2c ose një lidhje teli.

Shumë e dobishme nëse doni të përdorni esp01 (nëse përdorni serial keni vetëm 2 pin) për të lexuar lagështinë dhe temperaturën dhe për ta shfaqur atë në LCD i2c.

AI lexoi se dikur duket se ka nevojë për kalibrim, por unë kam pemë të kësaj dhe marr vlerë shumë të ngjashme me DHT22. Nëse e keni kalibrimin e këtij problemi, hapeni çështjen në github dhe unë shtoj zbatimin.

Hapi 1: Si funksionon I2c

Si funksionon I2c
Si funksionon I2c

I2C punon me dy telat e tij, SDA (linja e të dhënave) dhe SCL (linja e orës).

Të dyja këto linja janë me rrjedhje të hapur, por janë tërhequr me rezistorë.

Zakonisht ka një mjeshtër dhe një ose shumë skllevër në linjë, megjithëse mund të ketë shumë zotërinj, por ne do të flasim për këtë më vonë.

Të dy zotërit dhe skllevërit mund të transmetojnë ose marrin të dhëna, prandaj, një pajisje mund të jetë në njërën nga këto katër gjendje: transmetimi kryesor, marrja master, transmetimi skllav, marrja skllav.

Hapi 2: Biblioteka

Këtu mund të gjeni bibliotekën time.

Për të shkarkuar

Klikoni butonin DOWNLOADS në këndin e sipërm të djathtë, riemërtoni dosjen e pakompresuar DHT12.

Kontrolloni që dosja DHT të përmbajë DHT12.cpp dhe DHT12.h.

Vendosni dosjen tuaj të bibliotekës DHT / bibliotekat / dosjen tuaj.

Ju mund të keni nevojë të krijoni nën -dosjen e bibliotekave nëse është biblioteka juaj e parë.

Rinisni IDE -në.

Hapi 3: Sjellja

Kjo libray përpiqet të imitojë sjellësin e sensorëve standardë të bibliotekës DHT (dhe kopjo shumë kod), dhe unë shtoj kodin për të menaxhuar i2c olso në të njëjtën mënyrë.

Metoda është e njëjtë me sensorin e bibliotekës DHT, me disa që shtojnë funksionin e pikës së vesës.

Hapi 4: Përdorimi I2c

Për t'u përdorur me i2c (adresa e paracaktuar dhe kodi i paracaktuar SDA SCL) konstruktori është:

DHT12 dht12;

dhe merrni vlerën e paracaktuar për kunjin SDA SCL.

(Possibleshtë e mundur të ri-përkufizoni me ndërtuesin e specifikuar për esp8266, të nevojshëm për ESP-01). ose

DHT12 dht12 (uint8_t adresaOrPin)

addressOrPin -> adresa

për të ndryshuar adresën.

Hapi 5: Përdorimi me një tela

Për të përdorur një tel:

DHT12 dht12 (adresa uint8_tOrPin, e vërtetë)

addressOrPin -> pin

vlera boolean është zgjedhja e mënyrës oneWire ose i2c.

Hapi 6: Leximi i nënkuptuar

Mund ta përdorni me "të nënkuptuar", "të lexuar thjeshtë" ose "të lexuar plotësisht": I nënkuptuar, vetëm leximi i parë që bën një lexim të vërtetë të sensorit, leximi tjetër që bëhet në 2 sekonda. intervali është vlera e ruajtur e leximit të parë.

// Leximi i sensorit ka 2 sekonda kohë të kaluar, përveç nëse kaloni parametrin e forcës

// Lexoni temperaturën si Celsius (parazgjedhja) noton t12 = dht12.readTemperature (); // Lexoni temperaturën si Fahrenheit (isFahrenheit = e vërtetë) notoni f12 = dht12.readTemperature (e vërtetë); // Leximet e sensorit gjithashtu mund të jenë të vjetra deri në 2 sekonda (është një sensor shumë i ngadalshëm) noton h12 = dht12.readHumidity (); // Llogarit indeksin e nxehtësisë në Fahrenheit (parazgjedhja) noton hif12 = dht12.computeHeatIndex (f12, h12); // Llogarit indeksin e nxehtësisë në Celsius (isFahreheit = false) noton hic12 = dht12.computeHeatIndex (t12, h12, false); // Llogarit pikën e vesës në Fahrenheit (parazgjedhja) noton dpf12 = dht12.dewPoint (f12, h12); // Llogarit pikën e vesës në Celsius (isFahreheit = false) noton dpc12 = dht12.dewPoint (t12, h12, false);

Hapi 7: Lexim i thjeshtë

Lexim i thjeshtë për të marrë një status të lexuar.

// Leximi i sensorit ka 2 sekonda kohë të kaluar, përveç nëse kaloni parametrin e forcës

bool chk = dht12.read (); // leximi i vërtetë është në rregull, problemi i leximit të rremë

// Lexoni temperaturën si Celsius (e parazgjedhur)

noton t12 = dht12.readTemperature (); // Lexoni temperaturën si Fahrenheit (isFahrenheit = e vërtetë) notoni f12 = dht12.readTemperature (e vërtetë); // Leximet e sensorit gjithashtu mund të jenë të vjetra deri në 2 sekonda (është një sensor shumë i ngadalshëm) noton h12 = dht12.readHumidity (); // Llogarit indeksin e nxehtësisë në Fahrenheit (parazgjedhja) noton hif12 = dht12.computeHeatIndex (f12, h12); // Llogarit indeksin e nxehtësisë në Celsius (isFahreheit = false) noton hic12 = dht12.computeHeatIndex (t12, h12, false); // Llogarit pikën e vesës në Fahrenheit (parazgjedhja) noton dpf12 = dht12.dewPoint (f12, h12); // Llogarit pikën e vesës në Celsius (isFahreheit = false) noton dpc12 = dht12.dewPoint (t12, h12, false);

Hapi 8: Lexoni të plotë

Lexoni plotësisht për të marrë një status të caktuar.

// Leximi i sensorit ka 2 sekonda kohë të kaluar, përveç nëse kaloni parametrin e forcës

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nSensori i leximit:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); pushim; rasti DHT12:: ERROR_CHECKSUM: Serial.println (F ("Gabimi i kontrollit")); pushim; rasti DHT12:: ERROR_TIMEOUT: Serial.println (F ("Gabim i kohës")); pushim; rasti DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Gabimi i afatit në sinjal të ulët, provoni të vendosni rezistencë të lartë tërheqëse")); pushim; rasti DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Gabim i kohës në sinjal të ulët, provo të vendosësh rezistencë të ulët tërheqëse")); pushim; rasti DHT12:: ERROR_CONNECT: Serial.println (F ("Gabimi i lidhjes")); pushim; rasti DHT12:: ERROR_ACK_L: Serial.println (F ("Gabim AckL")); pushim; rast DHT12:: ERROR_ACK_H: Serial.println (F ("Gabim AckH")); pushim; rast DHT12:: ERROR_UNKNOWN: Serial.println (F ("Gabim i panjohur Zbuluar")); pushim; rast DHT12:: NUK: Serial.println (F ("Pa rezultat")); pushim; parazgjedhje: Serial.println (F ("Gabim i panjohur")); pushim; }

// Lexoni temperaturën si Celsius (e parazgjedhur)

noton t12 = dht12.readTemperature (); // Lexoni temperaturën si Fahrenheit (isFahrenheit = e vërtetë) notoni f12 = dht12.readTemperature (e vërtetë); // Leximet e sensorit gjithashtu mund të jenë të vjetra deri në 2 sekonda (është një sensor shumë i ngadalshëm) noton h12 = dht12.readHumidity (); // Llogarit indeksin e nxehtësisë në Fahrenheit (parazgjedhja) noton hif12 = dht12.computeHeatIndex (f12, h12); // Llogarit indeksin e nxehtësisë në Celsius (isFahreheit = false) noton hic12 = dht12.computeHeatIndex (t12, h12, false); // Llogarit pikën e vesës në Fahrenheit (parazgjedhja) noton dpf12 = dht12.dewPoint (f12, h12); // Llogarit pikën e vesës në Celsius (isFahreheit = false) noton dpc12 = dht12.dewPoint (t12, h12, false);

Hapi 9: Diagrami i lidhjes

Me shembuj, ka diagramin e lidhjes, është e rëndësishme të përdorni rezistencën e saktë të tërheqjes.

Falë Bobadas, dplasa dhe adafruit, për të ndarë kodin në github (ku marr disa kod dhe ide).

Hapi 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Hapi 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Hapi 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Hapi 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Hapi 14: Faleminderit

Sheshi i lojërave Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

seri projektesh i2c (Koleksion):

  • Sensori i lagështisë së temperaturës
  • Zgjerues analog
  • Zgjerues dixhital
  • Ekran LCD

Recommended: