Innehållsförteckning:

DHT12 (i2c billig fukt- och temperatursensor), snabb enkel användning: 14 steg
DHT12 (i2c billig fukt- och temperatursensor), snabb enkel användning: 14 steg

Video: DHT12 (i2c billig fukt- och temperatursensor), snabb enkel användning: 14 steg

Video: DHT12 (i2c billig fukt- och temperatursensor), snabb enkel användning: 14 steg
Video: Lesson 11: What is Arduino library and How to use DHT11 Temperature and Humidity Sensor | SunFounder 2024, November
Anonim
DHT12 (i2c billig fukt- och temperatursensor), snabb enkel användning
DHT12 (i2c billig fukt- och temperatursensor), snabb enkel användning

Du hittar uppdatering och annat på min webbplats

Jag gillar sensor som kan användas med 2 -tråds (i2c -protokoll), men jag älskar den billiga.

Detta är ett Arduino- och esp8266 -bibliotek för DHT12 -serien med mycket låga temperatur-/fuktighetssensorer (mindre än 1 $) som fungerar med i2c eller en trådanslutning.

Mycket användbart om du vill använda esp01 (om du använder seriell har du bara 2 stift) för att läsa av luftfuktighet och temperatur och visa den på i2c LCD.

AI läser att det ibland verkar som att det behövs kalibrering, men jag har ett träd av detta och får ett värde som liknar DHT22. Om du har kalibrering av detta problem, öppna problemet på github och jag lägger till implementering.

Steg 1: Hur I2c fungerar

Hur I2c fungerar
Hur I2c fungerar

I2C fungerar med sina två ledningar, SDA (datalinje) och SCL (klocklinje).

Båda dessa ledningar är öppna avlopp, men dras upp med motstånd.

Vanligtvis finns det en mästare och en eller flera slavar på linjen, även om det kan finnas flera mästare, men vi pratar om det senare.

Både mästare och slavar kan överföra eller ta emot data, därför kan en enhet befinna sig i ett av dessa fyra tillstånd: masteröverföring, mastermottagning, slavöverföring, slavmottagning.

Steg 2: Bibliotek

Du hittar mitt bibliotek här.

Att ladda ned

Klicka på knappen DOWNLOADS i det övre högra hörnet, byt namn på den okomprimerade mappen DHT12.

Kontrollera att DHT -mappen innehåller DHT12.cpp och DHT12.h.

Placera DHT -biblioteksmappen din / bibliotek / mapp.

Du kan behöva skapa bibliotekets undermapp om det är ditt första bibliotek.

Starta om IDE.

Steg 3: Behaivor

Det här biblioteket försöker efterlikna beteendet för vanliga DHT -bibliotekssensorer (och kopiera mycket kod), och jag lägger till koden för att hantera i2c olso på samma sätt.

Metoden är densamma som DHT -bibliotekssensorn, med vissa tillägg som daggpunktsfunktion.

Steg 4: I2c -användning

För att använda med i2c (standardadress och standard SDA SCL -pin) är konstruktorn:

DHT12 dht12;

och ta standardvärdet för SDA SCL -pin.

(Det är möjligt att omdefiniera med specificerad konstruktör för esp8266, behövs för ESP-01). eller

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> adress

att byta adress.

Steg 5: En trådanvändning

Så här använder du en tråd:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> pin

booleskt värde är valet av oneWire- eller i2c -läge.

Steg 6: Implicit läsning

Du kan använda den med "implicit", "enkel läsning" eller "fullread": Implicit, bara den första läsningen gör en sann läsning av sensorn, den andra läsningen som blir på 2sek. intervall är det lagrade värdet för första läsning.

// Avläsningen av sensorn har 2 sekunder förfluten tid, såvida du inte passerar kraftparametern

// Läs temperaturen som Celsius (standard) float t12 = dht12.readTemperature (); // Läs temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoravläsningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor) float h12 = dht12.readHumidity (); // Beräkna värmeindex i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beräkna värmeindex i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beräkna daggpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beräkna daggpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Steg 7: Enkel läsning

Enkel läsning för att få lässtatus.

// Avläsningen av sensorn har 2 sekunder förfluten tid, såvida du inte passerar kraftparametern

bool chk = dht12.read (); // true read är ok, falskt läsningsproblem

// Läs temperaturen som Celsius (standard)

float t12 = dht12.readTemperature (); // Läs temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoravläsningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor) float h12 = dht12.readHumidity (); // Beräkna värmeindex i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beräkna värmeindex i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beräkna daggpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beräkna daggpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Steg 8: Fullständig läsning

Fullständig läsning för att få en angiven status.

// Avläsningen av sensorn har 2 sekunder förfluten tid, såvida du inte passerar kraftparametern

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nLäs sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); ha sönder; fall DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksumfel")); ha sönder; fall DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout -fel")); ha sönder; fall DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Timeout -fel på låg signal, försök sätta högt pullup -motstånd")); ha sönder; fall DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Timeout -fel på låg signal, försök sätta lågt pullup -motstånd")); ha sönder; fall DHT12:: ERROR_CONNECT: Serial.println (F ("Anslutningsfel")); ha sönder; fall DHT12:: ERROR_ACK_L: Serial.println (F ("AckL -fel")); ha sönder; fall DHT12:: ERROR_ACK_H: Serial.println (F ("AckH -fel")); ha sönder; fall DHT12:: ERROR_UNKNOWN: Serial.println (F ("Okänt fel upptäckt")); ha sönder; fall DHT12:: INGEN: Serial.println (F ("Inget resultat")); ha sönder; standard: Serial.println (F ("Okänt fel")); ha sönder; }

// Läs temperaturen som Celsius (standard)

float t12 = dht12.readTemperature (); // Läs temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoravläsningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor) float h12 = dht12.readHumidity (); // Beräkna värmeindex i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beräkna värmeindex i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beräkna daggpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beräkna daggpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Steg 9: Anslutningsdiagram

Med exempel finns det anslutningsdiagram, det är viktigt att använda rätt pullup -motstånd.

Tack till Bobadas, dplasa och adafruit, för att dela koden i github (där jag tar lite kod och idéer).

Steg 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Steg 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Steg 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Steg 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Steg 14: Tack

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

i2c -projektserie (samling):

  • Temperaturfuktighetssensor
  • Analog expander
  • Digital expander
  • LCD skärm

Rekommenderad: