Sadržaj:

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

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

Video: DHT12 (i2c senzor jeftine vlažnosti i temperature), brzo i jednostavno korištenje: 14 koraka
Video: Датчик влажности и температуры AM2320 2024, Studeni
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 biblioteka Arduino i esp8266 za seriju DHT12 vrlo niske cijene osjetnika 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 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 radi
Kako I2c radi

I2C radi s 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 robova, iako može postojati više majstora, 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: Knjižnica

Moju biblioteku možete pronaći ovdje.

Preuzeti

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

Provjerite sadrži li mapa DHT DHT12.cpp i DHT12.h.

Postavite mapu knjižnice DHT u svoju / knjižnice / mapu.

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

Ponovo pokrenite IDE.

Korak 3: Behaivor

Ova knjižnica pokušava oponašati ponašanje standardnih senzora knjižnice DHT (i kopirati mnogo koda), a ja dodajem kôd za upravljanje i2c također na isti način.

Metoda je ista kao kod DHT knjižničnog senzora, s tim da neki dodaju funkciju poput točke rosišta.

Korak 4: Upotreba I2c

Za upotrebu s i2c (zadana adresa i zadani SDA SCL pin) konstruktor je:

DHT12 dht12;

i uzeti zadanu vrijednost za SDA SCL pin.

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

DHT12 dht12 (uint8_t adresaOrPin)

addressOrPin -> adresa

za promjenu adrese.

Korak 5: Upotreba jedne žice

Za korištenje jedne žice:

DHT12 dht12 (uint8_t adresaOrPin, točno)

addressOrPin -> pin

Booleova vrijednost odabir je 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 (zadano) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunajte toplinski indeks u Celzijusima (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Izračunaj točku rosišta u Fahrenheitu (zadano) float dpf12 = dht12.dewPoint (f12, h12); // Izračunaj rosište u Celzijusima (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Korak 7: Jednostavno čitanje

Jednostavno čitanje za dobivanje statusa pročitanog.

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

bool chk = dht12.read (); // true read je ok, false read problem

// 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 (zadano) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunajte toplinski indeks u Celzijusima (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Izračunaj točku rosišta u Fahrenheitu (zadano) float dpf12 = dht12.dewPoint (f12, h12); // Izračunaj rosište u Celzijusima (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Korak 8: Potpuno čitanje

Potpuno čitanje za dobivanje određenog statusa.

// 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")); pauza; slučaj DHT12:: ERROR_CHECKSUM: Serial.println (F ("Pogreška kontrolne sume")); pauza; slučaj DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); pauza; slučaj DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Pogreška vremenskog ograničenja pri niskom signalu, pokušajte postaviti visoki otpor pullupa")); pauza; slučaj DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Pogreška vremenskog ograničenja pri niskom signalu, pokušajte s niskim otporom otpora")); pauza; slučaj DHT12:: ERROR_CONNECT: Serial.println (F ("Pogreška pri povezivanju")); pauza; slučaj DHT12:: ERROR_ACK_L: Serial.println (F ("AckL pogreška")); pauza; slučaj DHT12:: ERROR_ACK_H: Serial.println (F ("AckH pogreška")); pauza; slučaj DHT12:: ERROR_UNKNOWN: Serial.println (F ("DETECTED Unknown error")); pauza; slučaj DHT12:: NONE: Serial.println (F ("Nema rezultata")); pauza; zadano: Serial.println (F ("Nepoznata pogreška")); pauza; }

// 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 (zadano) float hif12 = dht12.computeHeatIndex (f12, h12); // Izračunajte toplinski indeks u Celzijusima (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Izračunaj točku rosišta u Fahrenheitu (zadano) float dpf12 = dht12.dewPoint (f12, h12); // Izračunaj rosište u Celzijusima (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, za dijeljenje koda u githubu (gdje 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 zaslon

Preporučeni: