DHT12 (senzor jeftine vlažnosti i temperature i2c), brzo i jednostavno korištenje: 14 koraka
DHT12 (senzor jeftine vlažnosti i temperature i2c), brzo i jednostavno korištenje: 14 koraka
Anonim
DHT12 (senzor jeftine vlažnosti i temperature i2c), brzo i jednostavno korištenje
DHT12 (senzor jeftine vlažnosti i temperature i2c), brzo i jednostavno korištenje

Ažuriranje i ostalo možete pronaći na mojoj web stranici

Sviđa mi se senzor koji se može koristiti s 2 žice (i2c protokol), ali volim jeftin.

Ovo je Arduino i esp8266 biblioteka za DHT12 seriju vrlo niskih cijena senzora temperature/vlažnosti (manje od 1 USD) koji rade s i2c ili jednom žicom.

Vrlo korisno ako želite koristiti esp01 (ako koristite serijski imate samo 2 pina) za čitanje vlažnosti i temperature i prikaz na i2c LCD -u.

AI sam pročitao da mi se ponekad čini da je potrebna kalibracija, ali ja imam ovo drvo i dobivam vrijednost vrlo sličnu DHT22. Ako imate kalibraciju ovog problema, otvorite problem na githubu i ja dodajem implementaciju.

Korak 1: Kako I2c radi

Kako I2c funkcionira
Kako I2c funkcionira

I2C radi sa svoje dvije žice, SDA (podatkovna linija) i SCL (linija sata).

Obje ove linije su otvorene, ali su povučene otpornicima.

Obično je na liniji jedan master i jedan ili više slave -ova, iako može postojati i više master -a, ali o tome ćemo kasnije.

I nadređeni i podređeni mogu prenositi ili primati podatke, stoga uređaj može biti u jednom od ova četiri stanja: glavni prijenos, glavni prijem, slave prijenos, slave prijem.

Korak 2: Biblioteka

Moju biblioteku možete pronaći ovdje.

Preuzimanje

Pritisnite dugme DOWNLOADS u gornjem desnom kutu, preimenujte nekomprimiranu mapu DHT12.

Proverite da li fascikla DHT sadrži DHT12.cpp i DHT12.h.

Postavite fasciklu DHT biblioteke u vašu / libraries / fasciklu.

Možda ćete morati stvoriti podmapu biblioteka ako je to vaša prva biblioteka.

Ponovo pokrenite IDE.

Korak 3: Behaivor

Ova biblioteka pokušava oponašati ponašanje standardnih senzora DHT biblioteke (i kopirati mnogo koda), a ja dodajem kôd za upravljanje i2c i na isti način.

Metoda je ista kao kod DHT bibliotečkog senzora, s tim da neki dodaju funkciju poput točke rosišta.

Korak 4: Upotreba I2c

Za korištenje s i2c (zadana adresa i zadani SDA SCL pin) konstruktor je:

DHT12 dht12;

i preuzmite zadanu vrijednost za SDA SCL pin.

(Moguće je redefiniranje s navedenim izvođačem za esp8266, potrebnim za ESP-01). ili

DHT12 dht12 (uint8_t adresaOrPin)

addressOrPin -> adresa

za promenu adrese.

Korak 5: Upotreba jedne žice

Da biste koristili jednu žicu:

DHT12 dht12 (uint8_t adresaOrPin, tačno)

addressOrPin -> pin

logička vrijednost je odabir načina rada oneWire ili i2c.

Korak 6: Implicitno čitanje

Možete ga koristiti s "implicitnim", "jednostavnim čitanjem" ili "punim čitanjem": Implicitno, samo prvo čitanje radi istinsko očitavanje senzora, drugo čitanje postaje u 2 sekunde. interval su pohranjene vrijednosti prvog čitanja.

// Očitavanje senzora ima 2 sekunde proteklog vremena, osim ako ne prođete parametar sile

// Očitavanje temperature kao Celsius (zadano) float t12 = dht12.readTemperature (); // Očitajte temperaturu kao Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Očitavanja senzora mogu biti i do 2 sekunde "stara" (to je vrlo spor senzor) plovak h12 = dht12.readHumidity (); // Izračunajte toplinski indeks u Fahrenheitu (zadani) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunajte toplinski indeks u Celzijusima (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Računamo tačku rosišta u Fahrenheitu (zadano) float dpf12 = dht12.dewPoint (f12, h12); // Izračunaj tačku rosišta u Celzijusu (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Korak 7: Jednostavno čitanje

Jednostavno čitanje za dobijanje statusa pročitanog.

// Očitavanje senzora ima 2 sekunde proteklog vremena, osim ako ne prođete parametar sile

bool chk = dht12.read (); // istina čitanje je u redu, problem sa lažnim čitanjem

// očitavanje temperature kao Celzijusa (zadano)

float t12 = dht12.readTemperature (); // Očitajte temperaturu kao Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Očitavanja senzora mogu biti i do 2 sekunde "stara" (to je vrlo spor senzor) plovak h12 = dht12.readHumidity (); // Izračunajte toplinski indeks u Fahrenheitu (zadani) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunajte toplinski indeks u Celzijusima (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Računamo tačku rosišta u Fahrenheitu (zadano) float dpf12 = dht12.dewPoint (f12, h12); // Izračunaj tačku rosišta u Celzijusu (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Korak 8: Potpuno čitanje

Potpuno pročitano da biste dobili određeni status.

// Očitavanje senzora ima 2 sekunde proteklog vremena, osim ako ne prođete parametar sile

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nČitaj senzor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); break; slučaj DHT12:: ERROR_CHECKSUM: Serial.println (F ("Greška kontrolne sume")); break; slučaj DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); break; slučaj DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Greška u vremenskom ograničenju pri niskom signalu, pokušajte s visokim otporom otpora")); break; slučaj DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Greška isteka vremena pri niskom signalu, pokušajte s niskim otporom otpora")); break; slučaj DHT12:: ERROR_CONNECT: Serial.println (F ("Greška pri povezivanju")); break; slučaj DHT12:: ERROR_ACK_L: Serial.println (F ("AckL greška")); break; slučaj DHT12:: ERROR_ACK_H: Serial.println (F ("AckH greška")); break; slučaj DHT12:: ERROR_UNKNOWN: Serial.println (F ("DETECTED Unknown error")); break; slučaj DHT12:: NONE: Serial.println (F ("Nema rezultata")); break; default: Serial.println (F ("Nepoznata greška")); break; }

// očitavanje temperature kao Celzijusa (zadano)

float t12 = dht12.readTemperature (); // Očitajte temperaturu kao Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Očitavanja senzora mogu biti i do 2 sekunde "stara" (to je vrlo spor senzor) plovak h12 = dht12.readHumidity (); // Izračunajte toplinski indeks u Fahrenheitu (zadani) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunajte toplinski indeks u Celzijusima (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Računamo tačku rosišta u Fahrenheitu (zadano) float dpf12 = dht12.dewPoint (f12, h12); // Izračunaj tačku rosišta u Celzijusu (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Korak 9: Dijagram povezivanja

Uz primjere, postoji dijagram povezivanja, važno je koristiti ispravan otpornik.

Hvala Bobadas -u, dplasi i adafruit -u, što su podelili kôd u githubu (gde preuzimam neke kodove i ideje).

Korak 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Korak 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Korak 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Korak 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Korak 14: Hvala

Arduino igralište (https://playground.arduino.cc/Main/DHT12SensorLibrary)

serija projekata i2c (zbirka):

  • Senzor temperature vlage
  • Analogni ekspander
  • Digitalni ekspander
  • LCD displej

Preporučuje se: