Innholdsfortegnelse:
- Trinn 1: Slik fungerer I2c
- Trinn 2: Bibliotek
- Trinn 3: Behaivor
- Trinn 4: I2c -bruk
- Trinn 5: Bruk av én tråd
- Trinn 6: Implisitt lesing
- Trinn 7: Enkel lesing
- Trinn 8: Full lest
- Trinn 9: Tilkoblingsdiagram
- Trinn 10: Arduino: OneWire
- Trinn 11: Arduino: I2c
- Trinn 12: Esp8266 (D1Mini) OneWire
- Trinn 13: Esp8266 (D1Mini) I2c
- Trinn 14: Takk
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02
Du kan finne oppdateringer og annet på nettstedet mitt
Jeg liker sensor som kan brukes med 2 -leder (i2c -protokoll), men jeg elsker den rimelige.
Dette er et Arduino- og esp8266 -bibliotek for DHT12 -serien med svært lave temperatur-/fuktighetssensorer (mindre enn 1 $) som fungerer med i2c eller en ledningstilkobling.
Veldig nyttig hvis du vil bruke esp01 (hvis du bruker seriell har du bare 2 pinner) for å lese fuktighet og temperatur og vise den på i2c LCD.
AI leste at det en gang ser ut til at det er behov for kalibrering, men jeg har et tre av dette og får mye lik DHT22. Hvis du har kalibrering av dette problemet, åpner du problemet på github, og jeg legger til implementering.
Trinn 1: Slik fungerer I2c
I2C fungerer med sine to ledninger, SDA (datalinje) og SCL (klokke linje).
Begge disse ledningene er åpne-drenering, men trekkes opp med motstander.
Vanligvis er det en mester og en eller flere slaver på linjen, selv om det kan være flere mestere, men vi snakker om det senere.
Både mestere og slaver kan overføre eller motta data, derfor kan en enhet befinne seg i en av disse fire tilstandene: masteroverføring, mastermottak, slaveoverføring, slavemottak.
Trinn 2: Bibliotek
Du finner biblioteket mitt her.
For å laste ned
Klikk på DOWNLOADS -knappen øverst til høyre, gi nytt navn til den ukomprimerte mappen DHT12.
Kontroller at DHT -mappen inneholder DHT12.cpp og DHT12.h.
Plasser DHT -biblioteksmappen din / biblioteker / mappe.
Du må kanskje opprette undermappen biblioteker hvis det er ditt første bibliotek.
Start IDE på nytt.
Trinn 3: Behaivor
Denne biblioteket prøver å etterligne oppførselen til standard DHT -bibliotekssensorer (og kopiere mye kode), og jeg legger til koden for å administrere i2c olso på samme måte.
Metoden er den samme som DHT -bibliotekssensor, med noen tillegg som duggpunktfunksjon.
Trinn 4: I2c -bruk
For å bruke med i2c (standardadresse og standard SDA SCL -pin) er konstruktøren:
DHT12 dht12;
og ta standardverdien for SDA SCL -pin.
(Det er mulig å omdefinere med spesifisert konstruktør for esp8266, nødvendig for ESP-01). eller
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> adresse
for å endre adresse.
Trinn 5: Bruk av én tråd
Slik bruker du én ledning:
DHT12 dht12 (uint8_t addressOrPin, true)
addressOrPin -> pin
boolsk verdi er valget av oneWire- eller i2c -modus.
Trinn 6: Implisitt lesing
Du kan bruke den med "implisitt", "enkel lesing" eller "fullread": Implisitt, bare den første lesingen gjør en sann lesing av sensoren, den andre lesingen som blir på 2 sekunder. intervall er den lagrede verdien for første avlesning.
// Lesingen av sensoren har 2 sekunder med forløpt tid, med mindre du passerer kraftparameteren
// Les temperaturen som Celsius (standard) float t12 = dht12.readTemperature (); // Les temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoravlesninger kan også være opptil 2 sekunder 'gamle' (det er en veldig treg sensor) flyte h12 = dht12.readHumidity (); // Beregn varmeindeks i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beregn varmeindeks i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beregn duggpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beregn duggpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Trinn 7: Enkel lesing
Enkel lesing for å få statusen lese.
// Lesingen av sensoren har 2 sekunder med forløpt tid, med mindre du passerer kraftparameteren
bool chk = dht12.read (); // true read er ok, feil lese problem
// Les temperaturen som Celsius (standard)
float t12 = dht12.readTemperature (); // Les temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoravlesninger kan også være opptil 2 sekunder 'gamle' (det er en veldig treg sensor) flyte h12 = dht12.readHumidity (); // Beregn varmeindeks i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beregn varmeindeks i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beregn duggpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beregn duggpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Trinn 8: Full lest
Fullstendig lest for å få en spesifisert status.
// Lesingen av sensoren har 2 sekunder med forløpt tid, med mindre du passerer kraftparameteren
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nLes sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); gå i stykker; case DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksum -feil")); gå i stykker; sak DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); gå i stykker; case DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Timeout -feil på lavt signal, prøv å sette høy pullup -motstand")); gå i stykker; case DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Timeout -feil på lavt signal, prøv å sette lav pullup -motstand")); gå i stykker; sak DHT12:: ERROR_CONNECT: Serial.println (F ("Tilkoblingsfeil")); gå i stykker; sak DHT12:: ERROR_ACK_L: Serial.println (F ("AckL -feil")); gå i stykker; sak DHT12:: ERROR_ACK_H: Serial.println (F ("AckH -feil")); gå i stykker; sak DHT12:: ERROR_UNKNOWN: Serial.println (F ("Ukjent feil DETEKTERT")); gå i stykker; sak DHT12:: INGEN: Serial.println (F ("Ingen resultat")); gå i stykker; standard: Serial.println (F ("Ukjent feil")); gå i stykker; }
// Les temperaturen som Celsius (standard)
float t12 = dht12.readTemperature (); // Les temperaturen som Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensoravlesninger kan også være opptil 2 sekunder 'gamle' (det er en veldig sakte sensor) float h12 = dht12.readHumidity (); // Beregn varmeindeks i Fahrenheit (standard) float hif12 = dht12.computeHeatIndex (f12, h12); // Beregn varmeindeks i Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Beregn duggpunkt i Fahrenheit (standard) float dpf12 = dht12.dewPoint (f12, h12); // Beregn duggpunkt i Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Trinn 9: Tilkoblingsdiagram
Med eksempler er det tilkoblingsdiagrammet, det er viktig å bruke riktig pullup -motstand.
Takk til Bobadas, dplasa og adafruit, for å dele koden i github (hvor jeg tar litt kode og ideer).
Trinn 10: Arduino: OneWire
Trinn 11: Arduino: I2c
Trinn 12: Esp8266 (D1Mini) OneWire
Trinn 13: Esp8266 (D1Mini) I2c
Trinn 14: Takk
Arduino lekeplass (https://playground.arduino.cc/Main/DHT12SensorLibrary)
i2c -prosjektserie (samling):
- Temperaturfuktighetssensor
- Analog ekspander
- Digital ekspander
- LCD-skjerm
Anbefalt:
Hvordan bruke DHT12 I2C fuktighets- og temperatursensor med Arduino: 7 trinn
Hvordan bruke DHT12 I2C fuktighets- og temperatursensor med Arduino: I denne opplæringen lærer vi hvordan du bruker DHT12 I2C fuktighets- og temperatursensor med Arduino og viser verdiene på OLED -skjermen. Se videoen
Raspberry Pi - HIH6130 I2C Fuktighets- og temperatursensor Pythonopplæring: 4 trinn
Raspberry Pi - HIH6130 I2C Fuktighets- og temperatursensor Pythonopplæring: HIH6130 er en fuktighets- og temperatursensor med digital utgang. Disse sensorene gir et nøyaktighetsnivå på ± 4% RF. Med bransjeledende langsiktig stabilitet, ekte temperaturkompensert digital I2C, bransjeledende pålitelighet, energieffektivitet
Raspberry Pi - HIH6130 I2C Fuktighets- og temperatursensor Java Opplæring: 4 trinn
Raspberry Pi - HIH6130 I2C Fuktighets- og temperatursensor Java Opplæring: HIH6130 er en fuktighets- og temperatursensor med digital utgang. Disse sensorene gir et nøyaktighetsnivå på ± 4% RF. Med bransjeledende langsiktig stabilitet, ekte temperaturkompensert digital I2C, bransjeledende pålitelighet, energieffektivitet
PCF8591 (i2c Analog I/O Expander) Rask enkel bruk: 9 trinn
PCF8591 (i2c Analog I/O Expander) Rask enkel bruk: Bibliotek for bruk av i2c pcf8591 IC med arduino og esp8266. Denne IC kan kontrollere (inntil 4) analog inngang og/eller 1 analog utgang som målespenning, lese termistorverdi eller fade en lysdiode. Kan lese analog verdi og skrive analog verdi med bare 2 ledninger (perfekt
Rask, rask, billig, flott LED -rombelysning (for alle): 5 trinn (med bilder)
Rask, rask, billig, flott LED-rombelysning (for alle): Velkommen alle :-) Dette er min første instruks, så kommentarer mottas med takk :-) Det jeg håper å vise deg er hvordan du lager rask LED-belysning som er på en TINY buget.Det du trenger: KabelLED -resistorer (510Ohms for 12V) stifterSolderjernKuttere og andre grunnleggende