Cuprins:
- Pasul 1: Cum funcționează I2c
- Pasul 2: Biblioteca
- Pasul 3: Comportament
- Pasul 4: Utilizarea I2c
- Pasul 5: utilizarea unui fir
- Pasul 6: citire implicită
- Pasul 7: Citire simplă
- Pasul 8: Citire completă
- Pasul 9: Diagrama conexiunii
- Pasul 10: Arduino: OneWire
- Pasul 11: Arduino: I2c
- Pasul 12: Esp8266 (D1Mini) OneWire
- Pasul 13: Esp8266 (D1Mini) I2c
- Pasul 14: Mulțumesc
Video: DHT12 (senzor i2c de umiditate și temperatură ieftină), utilizare ușoară rapidă: 14 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Puteți găsi actualizări și altele pe site-ul meu
Îmi place senzorul care poate fi utilizat cu 2 fire (protocol i2c), dar îl iubesc pe cel ieftin.
Aceasta este o bibliotecă Arduino și esp8266 pentru seria DHT12 de senzori de temperatură / umiditate foarte mici (mai puțin de 1 $) care funcționează cu i2c sau o conexiune cu un singur fir.
Foarte util dacă doriți să utilizați esp01 (dacă utilizați serial aveți doar 2 pini) pentru a citi umiditatea și temperatura și a le afișa pe LCD i2c.
AI a citit că uneori pare că este nevoie de calibrare, dar am arborele acestui și obțin o valoare foarte asemănătoare cu DHT22. Dacă aveți calibrarea acestei probleme, deschideți problema pe github și adaug implementarea.
Pasul 1: Cum funcționează I2c
I2C funcționează cu cele două fire, SDA (linia de date) și SCL (linia de ceas).
Ambele linii sunt deschise, dar sunt trase cu rezistențe.
De obicei, există un maestru și unul sau mai mulți sclavi pe linie, deși pot exista mai mulți maeștri, dar despre asta vom vorbi mai târziu.
Atât stăpânii, cât și sclavii pot transmite sau primi date, prin urmare, un dispozitiv poate fi în una dintre aceste patru stări: transmiterea master, recepția master, transmiterea slave, recepția slave.
Pasul 2: Biblioteca
Puteți găsi biblioteca mea aici.
A descărca
Faceți clic pe butonul DESCĂRCĂRI din colțul din dreapta sus, redenumiți folderul necomprimat DHT12.
Verificați dacă folderul DHT conține DHT12.cpp și DHT12.h.
Plasați folderul bibliotecă DHT / bibliotecile / folderul dvs.
Poate fi necesar să creați subfolderul bibliotecilor dacă este prima dvs. bibliotecă.
Reporniți IDE-ul.
Pasul 3: Comportament
Acest libray încearcă să imite comportamentul senzorilor de bibliotecă DHT standard (și să copieze o mulțime de cod) și adaug codul pentru a gestiona i2c și în același mod.
Metoda este aceeași cu senzorul bibliotecii DHT, cu unele adăugând funcția de punct de rouă.
Pasul 4: Utilizarea I2c
Pentru a utiliza cu i2c (adresa implicită și pinul SDL SCA implicit), constructorul este:
DHT12 dht12;
și luați valoarea implicită pentru pinul SDA SCL.
(Este posibil să se redefinească cu un controlor specificat pentru esp8266, necesar pentru ESP-01). sau
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> address
pentru a schimba adresa.
Pasul 5: utilizarea unui fir
Pentru a utiliza un fir:
DHT12 dht12 (uint8_t addressOrPin, true)
addressOrPin -> pin
valoarea booleană este selectarea modului oneWire sau i2c.
Pasul 6: citire implicită
Îl puteți folosi cu „implicit”, „citire simplă” sau „citire completă”: implicit, doar prima citire care face o citire adevărată a senzorului, cealaltă citire care devine în 2 secunde. interval sunt valoarea stocată a primei citiri.
// Citirea senzorului are 2 secunde de timp scurs, cu excepția cazului în care treceți parametrul forței
// Citiți temperatura ca Celsius (implicit) plutitor t12 = dht12.readTemperature (); // Citiți temperatura ca Fahrenheit (isFahrenheit = true) plutitor f12 = dht12.readTemperature (true); // Citirile senzorilor pot fi, de asemenea, de până la 2 secunde „vechi” (este un senzor foarte lent) plutitor h12 = dht12.readHumidity (); // Calculați indicele de căldură în Fahrenheit (implicit) float hif12 = dht12.computeHeatIndex (f12, h12); // Calculați indicele de căldură în Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calculați punctul de rouă în Fahrenheit (implicit) float dpf12 = dht12.dewPoint (f12, h12); // Calculați punctul de rouă în Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Pasul 7: Citire simplă
Citire simplă pentru a obține un statut de citire.
// Citirea senzorului are 2 secunde de timp scurs, cu excepția cazului în care treceți parametrul forței
bool chk = dht12.read (); // citirea adevărată este ok, problema de citire falsă
// Citiți temperatura în grade Celsius (implicit)
plutitor t12 = dht12.readTemperature (); // Citiți temperatura ca Fahrenheit (isFahrenheit = true) plutitor f12 = dht12.readTemperature (true); // Citirile senzorilor pot fi, de asemenea, de până la 2 secunde „vechi” (este un senzor foarte lent) plutitor h12 = dht12.readHumidity (); // Calculați indicele de căldură în Fahrenheit (implicit) float hif12 = dht12.computeHeatIndex (f12, h12); // Calculați indicele de căldură în Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calculați punctul de rouă în Fahrenheit (implicit) float dpf12 = dht12.dewPoint (f12, h12); // Calculați punctul de rouă în Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Pasul 8: Citire completă
Citire completă pentru a obține o stare specificată.
// Citirea senzorului are 2 secunde de timp scurs, cu excepția cazului în care treceți parametrul forței
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nCitește senzorul:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); pauză; caz DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksum error")); pauză; caz DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); pauză; caz DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Eroare de expirare la semnal scăzut, încercați să puneți rezistență ridicată la tragere")); pauză; caz DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Eroare de expirare la semnal scăzut, încercați să puneți rezistență scăzută la tragere")); pauză; caz DHT12:: ERROR_CONNECT: Serial.println (F ("Eroare conectare")); pauză; caz DHT12:: ERROR_ACK_L: Serial.println (F ("eroare AckL")); pauză; caz DHT12:: ERROR_ACK_H: Serial.println (F ("eroare AckH")); pauză; caz DHT12:: ERROR_UNKNOWN: Serial.println (F ("Eroare necunoscută DETECTATĂ")); pauză; caz DHT12:: NONE: Serial.println (F ("Fără rezultat")); pauză; implicit: Serial.println (F ("Eroare necunoscută")); pauză; }
// Citiți temperatura în grade Celsius (implicit)
plutitor t12 = dht12.readTemperature (); // Citiți temperatura ca Fahrenheit (isFahrenheit = true) plutitor f12 = dht12.readTemperature (true); // Citirile senzorilor pot fi, de asemenea, de până la 2 secunde „vechi” (este un senzor foarte lent) plutitor h12 = dht12.readHumidity (); // Calculați indicele de căldură în Fahrenheit (implicit) float hif12 = dht12.computeHeatIndex (f12, h12); // Calculați indicele de căldură în Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calculați punctul de rouă în Fahrenheit (implicit) float dpf12 = dht12.dewPoint (f12, h12); // Calculați punctul de rouă în Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Pasul 9: Diagrama conexiunii
Cu exemple, există diagrama de conectare, este important să utilizați rezistență de tragere corectă.
Mulțumesc lui Bobadas, dplasa și adafruit, pentru a împărtăși codul în github (unde iau niște cod și idei).
Pasul 10: Arduino: OneWire
Pasul 11: Arduino: I2c
Pasul 12: Esp8266 (D1Mini) OneWire
Pasul 13: Esp8266 (D1Mini) I2c
Pasul 14: Mulțumesc
Loc de joacă Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
Seria de proiecte i2c (Colecție):
- Senzor de umiditate a temperaturii
- Expander analogic
- Expander digital
- Ecran LCD
Recomandat:
NodeMCU Lua Placă ieftină de 6 $ cu înregistrare de temperatură și umiditate MicroPython, statistici Wifi și mobile: 4 pași
NodeMCU Lua Board ieftin de 6 $ Cu înregistrare de temperatură și umiditate MicroPython, statistici Wifi și mobile: Aceasta este în esență stație meteo cloud, puteți verifica datele de pe telefon sau puteți utiliza unele telefoane ca afișaj live Cu dispozitivul NodeMCU puteți înregistra date de temperatură și umiditate în exterior , în cameră, seră, laborator, cameră de răcire sau orice alte locuri completel
Cum se utilizează senzorul de umiditate și temperatură DHT12 I2C cu Arduino: 7 pași
Cum să utilizați senzorul de umiditate și temperatură DHT12 I2C cu Arduino: În acest tutorial vom învăța cum să utilizați senzorul de umiditate și temperatură DHT12 I2C cu Arduino și vom afișa valorile pe ecranul OLED. Urmăriți videoclipul
Ghid de utilizare a setului de solenoizi Sol-EZ Ghid de utilizare: 9 pași
Sol-EZ Solenoid Driver Kit Ghid de utilizare: DISCLAIMER: ACEST ESTE UN GHID DE UTILIZARE PENTRU UN PRODUS: KITUL DE SOLENOID SOL-EZ SOLID. Acesta nu este un proiect DIY
PCF8591 (i2c analogic I / O Expander) Utilizare rapidă ușoară: 9 pași
PCF8591 (i2c analogic I / O Expander) Utilizare rapidă ușoară: bibliotecă pentru a utiliza i2c pcf8591 IC cu arduino și esp8266. Acest IC poate controla (până la 4) intrări analogice și / sau 1 ieșire analogică, cum ar fi măsurarea tensiunii, citirea valorii termistorului sau decolorarea unui led. Poate citi valoarea analogică și scrie valoare analogică cu doar 2 fire (perfec
Iluminare rapidă, rapidă, ieftină, plăcută cu LED cu cameră (pentru oricine): 5 pași (cu imagini)
Iluminare rapidă, rapidă, ieftină, plăcută cu cameră LED (pentru oricine): Bine ați venit pe toți :-) Acesta este primul meu instructiv, așa că comentariile sunt binevenite :-) TINY buget.De ce aveți nevoie: cabluri LED-uri Rezistoare (510 Ohmi pentru 12V) CapseSoldareCutere și alte elemente de bază