Innehållsförteckning:
- Steg 1: Hur I2c fungerar
- Steg 2: Bibliotek
- Steg 3: Behaivor
- Steg 4: I2c -användning
- Steg 5: En trådanvändning
- Steg 6: Implicit läsning
- Steg 7: Enkel läsning
- Steg 8: Fullständig läsning
- Steg 9: Anslutningsdiagram
- Steg 10: Arduino: OneWire
- Steg 11: Arduino: I2c
- Steg 12: Esp8266 (D1Mini) OneWire
- Steg 13: Esp8266 (D1Mini) I2c
- Steg 14: Tack
Video: DHT12 (i2c billig fukt- och temperatursensor), snabb enkel användning: 14 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
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
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
Steg 11: Arduino: I2c
Steg 12: Esp8266 (D1Mini) OneWire
Steg 13: 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:
Billig NMEA/AIS Hub - RS232 till Wifi Bridge för användning ombord: 6 steg
Billig NMEA /AIS -hubb - RS232 till Wifi Bridge för användning ombord: Uppdatering 9 januari 2021 - Tillagd extra TCP -anslutning och återanvänd den sista anslutningen Om fler klienter ansluter Uppdaterad 13 december 2020 - Tillagde ingen konfigurationsversion av koden för båtar med befintliga routrar Inledning Denna NMEA / AIS RS232 till WiFi -bron är
Otto DIY Robot Walking - Snabb och enkel att göra Handledning: 7 steg
Otto DIY Robot Walking - Snabb och enkel att göra självstudie: I denna handledning lär vi oss hur du enkelt programmerar Otto DIY Robot att gå. Se en demonstrationsvideo
PCF8591 (i2c Analog I/O Expander) Snabb enkel användning: 9 steg
PCF8591 (i2c Analog I/O Expander) Snabb enkel användning: Bibliotek för att använda i2c pcf8591 IC med arduino och esp8266. Denna IC kan styra (upp till 4) analog ingång och/eller 1 analog utgång som mätspänning, läsa termistorvärde eller bleka en lysdiod. Kan läsa analogt värde och skriva analogt värde med endast 2 trådar (perfekt
Hur man gör en snabb billig LED -ficklampa med en stick av deodorant !: 8 steg
Hur man gör en snabb billig LED -ficklampa med en stick av deodorant !: I den här instruktionsboken kommer jag att visa dig hur du gör en coll snabb och billig LED -ficklampa av en stick av deodorant! (och några andra delar)
Snabb, snabb, billig, snygg LED -rumsbelysning (för alla): 5 steg (med bilder)
Snabb, snabb, billig, snygg LED-rumsbelysning (för alla): Välkommen alla :-) Detta är min första instruerbara så kommentarer är välkomna :-) Vad jag hoppas kunna visa dig är hur man gör snabb LED-belysning som är på en TINY buget.Vad du behöver: CableLEDsResistors (510Ohms for 12V) StapelsSolder IronCutters and other basi