Obsah:

DHT12 (lacný snímač vlhkosti a teploty i2c), rýchle jednoduché použitie: 14 krokov
DHT12 (lacný snímač vlhkosti a teploty i2c), rýchle jednoduché použitie: 14 krokov

Video: DHT12 (lacný snímač vlhkosti a teploty i2c), rýchle jednoduché použitie: 14 krokov

Video: DHT12 (lacný snímač vlhkosti a teploty i2c), rýchle jednoduché použitie: 14 krokov
Video: Arduino - senzor teploty a vlhkosti vzduchu 2024, December
Anonim
DHT12 (lacný snímač vlhkosti a teploty i2c), rýchle jednoduché použitie
DHT12 (lacný snímač vlhkosti a teploty i2c), rýchle jednoduché použitie

Aktualizáciu a ďalšie nájdete na mojom webe

Mám rád senzor, ktorý je možné použiť s 2 vodičmi (protokol i2c), ale milujem ten lacný.

Toto je knižnica Arduino a esp8266 pre sériu DHT12 veľmi lacných senzorov teploty/vlhkosti (menej ako 1 $), ktoré fungujú s i2c alebo jedným káblovým pripojením.

Veľmi užitočné, ak chcete použiť esp01 (ak používate sériové číslo, máte iba 2 kolíky) na čítanie vlhkosti a teploty a ich zobrazenie na displeji LCD i2c.

AI čítal, že sa niekedy zdá, že je potrebná kalibrácia, ale mám na to strom a získam hodnotu veľmi podobnú DHT22. Ak máte tento problém kalibračný, otvorte problém na github a pridám implementáciu.

Krok 1: Ako funguje I2c

Ako funguje I2c
Ako funguje I2c

I2C pracuje s dvoma vodičmi, SDA (dátový riadok) a SCL (hodinový riadok).

Obe tieto vedenia sú otvorené, ale sú vyťahované odpormi.

Na linke je spravidla jeden pán a jeden alebo viacerí otroci, aj keď môže byť viac majstrov, ale o tom neskôr.

Master aj slave môžu prenášať alebo prijímať údaje, preto môže byť zariadenie v jednom z týchto štyroch stavov: hlavný prenos, hlavný príjem, podradený prenos, podriadený príjem.

Krok 2: Knižnica

Moju knižnicu nájdete tu.

Stiahnuť

Kliknite na tlačidlo STIAHNUTIE v pravom hornom rohu, premenujte nekomprimovaný priečinok DHT12.

Skontrolujte, či priečinok DHT obsahuje DHT12.cpp a DHT12.h.

Umiestnite priečinok knižnice DHT do priečinka / libraries /.

Ak je to vaša prvá knižnica, možno budete musieť vytvoriť podpriečinok knižníc.

Reštartujte IDE.

Krok 3: Správca

Tento libray sa snaží napodobniť správcu štandardných senzorov knižnice DHT (a kopírovať veľa kódu) a ja pridávam kód na správu i2c olso rovnakým spôsobom.

Metóda je rovnaká ako v prípade senzora knižnice DHT, s niektorými funkciami podobnými rosnému bodu.

Krok 4: Použitie I2c

Na použitie s i2c (predvolená adresa a predvolený pin SCA SDA SCL) je konštruktor:

DHT12 dht12;

a vezmite predvolenú hodnotu pre pin SCA SDA.

(Je možné predefinovať pomocou špecifikovaného kontruktora pre esp8266, potrebné pre ESP-01). alebo

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> adresa

zmeniť adresu.

Krok 5: Použitie jedného drôtu

Použitie jedného drôtu:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> pin

booleovská hodnota je výber režimu oneWire alebo i2c.

Krok 6: Implicitné čítanie

Môžete ho použiť s „implicitným“, „jednoduchým čítaním“alebo „úplným prečítaním“: Implicitné, iba prvé čítanie vykoná skutočné čítanie zo senzora, druhé čítanie za 2 sekundy. Interval je uložená hodnota prvého čítania.

// Čítanie senzora má za sebou 2 sekundy, pokiaľ neprejdete parametrom sily

// Čítanie teploty ako Celzia (predvolené) float t12 = dht12.readTemperature (); // Prečítajte teplotu ako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Hodnoty senzora môžu byť tiež „staré“až 2 sekundy (je to veľmi pomalý senzor) float h12 = dht12.readHumidity (); // Vypočítajte tepelný index vo Fahrenheite (predvolené) float hif12 = dht12.computeHeatIndex (f12, h12); // Vypočítajte tepelný index v stupňoch Celzia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Vypočítajte rosný bod vo Fahrenheite (predvolené) float dpf12 = dht12.dewPoint (f12, h12); // Vypočítajte rosný bod v stupňoch Celzia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Krok 7: Jednoduché čítanie

Jednoduché čítanie na získanie stavu prečítania.

// Čítanie senzora má za sebou 2 sekundy, pokiaľ neprejdete parametrom sily

bool chk = dht12.read (); // pravdivé čítanie je v poriadku, falošný problém s čítaním

// Čítanie teploty ako Celzia (predvolené)

float t12 = dht12.readTemperature (); // Prečítajte teplotu ako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Hodnoty senzora môžu byť tiež „staré“až 2 sekundy (je to veľmi pomalý senzor) float h12 = dht12.readHumidity (); // Vypočítajte tepelný index vo Fahrenheite (predvolené) float hif12 = dht12.computeHeatIndex (f12, h12); // Vypočítajte tepelný index v stupňoch Celzia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Vypočítajte rosný bod vo Fahrenheite (predvolené) float dpf12 = dht12.dewPoint (f12, h12); // Vypočítajte rosný bod v stupňoch Celzia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Krok 8: Úplné prečítanie

Úplným prečítaním získate určený stav.

// Čítanie senzora má za sebou 2 sekundy, pokiaľ neprejdete parametrom sily

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nČítať senzor:")); prepínač (chk) {prípad DHT12:: OK: Serial.println (F ("OK")); prestávka; prípad DHT12:: ERROR_CHECKSUM: Serial.println (F ("Chyba kontrolného súčtu")); prestávka; prípad DHT12:: ERROR_TIMEOUT: Serial.println (F ("Chyba časového limitu")); prestávka; prípad DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Chyba časového limitu pri nízkom signáli, skúste dať vysoký odpor vytiahnutia")); prestávka; prípad DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Chyba časového limitu pri nízkom signáli, skúste položiť nízky odpor vytiahnutia")); prestávka; prípad DHT12:: ERROR_CONNECT: Serial.println (F ("Chyba pripojenia")); prestávka; prípad DHT12:: ERROR_ACK_L: Serial.println (F ("chyba AckL")); prestávka; prípad DHT12:: ERROR_ACK_H: Serial.println (F ("chyba AckH")); prestávka; prípad DHT12:: ERROR_UNKNOWN: Serial.println (F ("Unknown error DETECTED")); prestávka; prípad DHT12:: NONE: Serial.println (F ("Žiadny výsledok")); prestávka; predvolené: Serial.println (F ("Neznáma chyba")); prestávka; }

// Čítanie teploty ako Celzia (predvolené)

float t12 = dht12.readTemperature (); // Prečítajte teplotu ako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Hodnoty senzora môžu byť tiež „staré“až 2 sekundy (je to veľmi pomalý senzor) float h12 = dht12.readHumidity (); // Vypočítajte tepelný index vo Fahrenheite (predvolené) float hif12 = dht12.computeHeatIndex (f12, h12); // Vypočítajte tepelný index v stupňoch Celzia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Vypočítajte rosný bod vo Fahrenheite (predvolené) float dpf12 = dht12.dewPoint (f12, h12); // Vypočítajte rosný bod v stupňoch Celzia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Krok 9: Schéma pripojenia

V príkladoch je schéma zapojenia a je dôležité použiť správny vyťahovací odpor.

Vďaka Bobadasovi, dplasa a adafruitovi, za zdieľanie kódu v github (kde beriem nejaký kód a nápady).

Krok 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Krok 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Krok 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Krok 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Krok 14: Ďakujem

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

Séria projektov i2c (zbierka):

  • Teplotný snímač vlhkosti
  • Analógový expandér
  • Digitálny expandér
  • Displej LCD

Odporúča: