INHOUDSOPGAWE:

DHT12 (i2c goedkoop humiditeits- en temperatuursensor), vinnig en maklik om te gebruik: 14 stappe
DHT12 (i2c goedkoop humiditeits- en temperatuursensor), vinnig en maklik om te gebruik: 14 stappe

Video: DHT12 (i2c goedkoop humiditeits- en temperatuursensor), vinnig en maklik om te gebruik: 14 stappe

Video: DHT12 (i2c goedkoop humiditeits- en temperatuursensor), vinnig en maklik om te gebruik: 14 stappe
Video: DHT12 I2C Temperature - Relative Humidity Sensor Demo 2024, Julie
Anonim
DHT12 (i2c goedkoop humiditeits- en temperatuursensor), vinnig en maklik om te gebruik
DHT12 (i2c goedkoop humiditeits- en temperatuursensor), vinnig en maklik om te gebruik

U kan opdaterings en ander op my webwerf vind

Ek hou van sensor wat met 2 -draad (i2c -protokol) gebruik kan word, maar ek hou van die goedkoop een.

Dit is 'n Arduino- en esp8266 -biblioteek vir die DHT12 -reeks baie goedkoop temperatuur-/humiditeitsensors (minder as 1 $) wat werk met i2c of eendraadverbinding.

Dit is baie handig as u esp01 wil gebruik (as u seriële gebruik, het u slegs 2 penne) om humiditeit en temperatuur te lees en dit op die i2c LCD te vertoon.

AI lees dat dit soms lyk asof dit kalibrasie nodig het, maar ek het 'n boom hiervan en kry 'n baie soortgelyke waarde as DHT22. As u hierdie probleem kalibreer, maak die probleem op github oop en ek voeg implementering by.

Stap 1: Hoe I2c werk

Hoe I2c werk
Hoe I2c werk

I2C werk met sy twee drade, die SDA (data lyn) en SCL (kloklyn).

Albei hierdie lyne is oop-dreineer, maar word met weerstande opgetrek.

Gewoonlik is daar een meester en een of meer slawe op die spel, alhoewel daar verskeie meesters kan wees, maar ons sal later daaroor praat.

Beide meesters en slawe kan data stuur of ontvang, daarom kan 'n toestel in een van hierdie vier toestande wees: meester -oordrag, meester -ontvangs, slawe -oordrag, slawe -ontvangs.

Stap 2: Biblioteek

U kan my biblioteek hier vind.

Om af te laai

Klik op die DOWNLOADS -knoppie in die regter boonste hoek, hernoem die ongecomprimeerde gids DHT12.

Kontroleer of die DHT -lêergids DHT12.cpp en DHT12.h bevat.

Plaas die DHT -biblioteekmap u / biblioteke / gids.

Miskien moet u die biblioteek se submap skep as dit u eerste biblioteek is.

Herbegin die IDE.

Stap 3: Behaivor

Hierdie biblioteek probeer om die gedrag van standaard DHT -biblioteeksensors na te boots (en baie kode te kopieer), en ek voeg die kode by om i2c olso op dieselfde manier te bestuur.

Die metode is dieselfde as die DHT -biblioteeksensor, met 'n bietjie byvoeging soos dauwpuntfunksie.

Stap 4: I2c -gebruik

Die konstruktor is om te gebruik met i2c (standaardadres en standaard SDA SCL -pen):

DHT12 dht12;

en neem die standaardwaarde vir SDA SCL -pen.

(Dit is moontlik om te herdefinieer met die gespesifiseerde konstruktor vir esp8266, benodig vir ESP-01). of

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> adres

adres te verander.

Stap 5: Een draad gebruik

Om een draad te gebruik:

DHT12 dht12 (uint8_t addressOrPin, waar)

addressOrPin -> pin

booleaanse waarde is die keuse van die oneWire- of i2c -modus.

Stap 6: Implisiete lees

U kan dit gebruik met "implisiete", "eenvoudige lees" of "vollees": implisiet, slegs die eerste lees wat die sensor waarlik lees, die ander lees wat in 2 sekondes word. interval is die gestoorde waarde van eerste lees.

// Die lesing van die sensor het 2 sekondes verloop van tyd, tensy u die kragparameter slaag

// Lees temperatuur as Celsius (die standaard) float t12 = dht12.readTemperature (); // Lees temperatuur as Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensorlesings kan ook tot 2 sekondes oud wees (dit is 'n baie stadige sensor) dryf h12 = dht12.readHumidity (); // Bereken hitte -indeks in Fahrenheit (die standaard) float hif12 = dht12.computeHeatIndex (f12, h12); // Bereken hitte -indeks in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Bereken dauwpunt in Fahrenheit (die standaard) dryf dpf12 = dht12.dewPoint (f12, h12); // Bereken dauwpunt in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Stap 7: Eenvoudige lees

Eenvoudige lees om 'n leesstatus te kry.

// Die lesing van die sensor het 2 sekondes verloop van tyd, tensy u die kragparameter slaag

bool chk = dht12.read (); // ware lees is ok, vals leesprobleem

// Lees temperatuur as Celsius (standaard)

float t12 = dht12.readTemperature (); // Lees temperatuur as Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensorlesings kan ook tot 2 sekondes oud wees (dit is 'n baie stadige sensor) dryf h12 = dht12.readHumidity (); // Bereken hitte -indeks in Fahrenheit (die standaard) float hif12 = dht12.computeHeatIndex (f12, h12); // Bereken hitte -indeks in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Bereken dauwpunt in Fahrenheit (die standaard) float dpf12 = dht12.dewPoint (f12, h12); // Bereken dauwpunt in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Stap 8: Lees volledig

Lees volledig om 'n gespesifiseerde status te kry.

// Die lesing van die sensor het 2 sekondes verloop van tyd, tensy u die kragparameter slaag

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nLees sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); breek; saak DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksum -fout")); breek; saak DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout -fout")); breek; saak DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Timeout error on low signal, try put high pullup weerstand")); breek; geval DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Timeout error on low signal, try put low pullup weerstand")); breek; saak DHT12:: ERROR_CONNECT: Serial.println (F ("Verbindingsfout")); breek; saak DHT12:: ERROR_ACK_L: Serial.println (F ("AckL -fout")); breek; saak DHT12:: ERROR_ACK_H: Serial.println (F ("AckH -fout")); breek; saak DHT12:: ERROR_UNKNOWN: Serial.println (F ("Onbekende fout opgemerk")); breek; saak DHT12:: GEEN: Serial.println (F ("Geen resultaat")); breek; standaard: Serial.println (F ("Onbekende fout")); breek; }

// Lees temperatuur as Celsius (standaard)

float t12 = dht12.readTemperature (); // Lees temperatuur as Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensorlesings kan ook tot 2 sekondes oud wees (dit is 'n baie stadige sensor) dryf h12 = dht12.readHumidity (); // Bereken hitte -indeks in Fahrenheit (die standaard) float hif12 = dht12.computeHeatIndex (f12, h12); // Bereken hitte -indeks in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Bereken dauwpunt in Fahrenheit (die standaard) float dpf12 = dht12.dewPoint (f12, h12); // Bereken dauwpunt in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Stap 9: Verbindingsdiagram

Met voorbeelde is daar die verbindingsdiagram; dit is belangrik om die korrekte pullup -weerstand te gebruik.

Dankie aan Bobadas, dplasa en adafruit, om die kode in github te deel (waar ek kode en idees neem).

Stap 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Stap 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Stap 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Stap 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Stap 14: Dankie

Arduino speelgrond (https://playground.arduino.cc/Main/DHT12SensorLibrary)

i2c -projekreeks (versameling):

  • Temperatuur humiditeit sensor
  • Analoog uitbreider
  • Digitale uitbreider
  • LCD -skerm

Aanbeveel: