Senzorul de temperatură și umiditate DHT17 este un senzor popular și ieftin care poate fi utilizat într-o gamă destul de largă de temperaturi și umiditate relativă. Să vedem cum să-l conectăm la Arduino și cum să citim datele din acesta.
Necesar
- - Arduino;
- - Senzor de temperatură și umiditate DHT17.
Instrucțiuni
Pasul 1
Deci, senzorul DHT11 are următoarele caracteristici:
- domeniul umidității relative măsurate - 20..90% cu o eroare de până la 5%, - intervalul de temperaturi măsurate - 0..50 grade Celsius cu o eroare de până la 2 grade;
- timpul de răspuns la modificările de umiditate - până la 15 secunde, temperatura - până la 30 de secunde;
- perioada minimă de votare este de 1 secundă.
După cum puteți vedea, senzorul DHT11 nu este foarte precis, iar intervalul de temperatură nu acoperă valorile negative, ceea ce nu este potrivit pentru măsurători în aer liber în sezonul rece în climatul nostru. Cu toate acestea, costul redus, dimensiunile reduse și ușurința de utilizare compensează parțial aceste dezavantaje.
Figura arată aspectul senzorului și dimensiunile acestuia în milimetri.
Pasul 2
Luați în considerare diagrama de conectare a senzorului de temperatură și umiditate DHT11 la microcontroler, în special la Arduino. Pe imagine:
- MCU - microcontroler (de exemplu, Arduino sau similar) sau computer cu o singură placă (Raspberry Pi sau similar);
- DHT11 - senzor de temperatură și umiditate;
- DATA - magistrala de date; dacă lungimea cablului de conectare de la senzor la microcontroler nu depășește 20 de metri, atunci este recomandat să trageți acest autobuz la sursa de alimentare cu un rezistor de 5, 1 kOhm; dacă este mai mare de 20 de metri, atunci o altă valoare adecvată (mai mică).
- VDD - alimentare cu senzor; tensiuni admise de la ~ 3,0 la ~ 5,5 volți DC; dacă se utilizează o sursă de alimentare de 3,3 V, este recomandabil să folosiți un fir de alimentare de cel mult 20 cm.
Unul dintre cablurile senzorului - al treilea - nu este conectat la nimic.
Senzorul DHT11 este adesea vândut ca un ansamblu complet cu conductele necesare - rezistență de tragere și condensator de filtrare.
Pasul 3
Să punem împreună schema luată în considerare. Voi conecta, de asemenea, un analizor logic la circuit, astfel încât să pot studia diagrama de sincronizare a comunicației cu senzorul.
Pasul 4
Să mergem pe calea simplă: descărcați biblioteca pentru senzorul DHT11 (link în secțiunea „Surse”), instalați-o în mod standard (despachetați-o în directorul / libraries / din mediul de dezvoltare Arduino).
Să scriem o schiță atât de simplă. Să-l încărcăm în Arduino. Această schiță va transmite mesajele RH și Temperatură citite de la senzorul DHT11 la portul serial al computerului la fiecare 2 secunde.
Pasul 5
Acum, folosind diagrama de sincronizare obținută de la analizorul logic, să ne dăm seama cum se realizează schimbul de informații.
Senzorul de temperatură și umiditate DHT11 utilizează o interfață serială cu un singur fir pentru a comunica cu microcontrolerul. Un schimb de date durează aproximativ 40 ms și conține: 1 bit de solicitare de la microcontroler, 1 bit de răspuns al senzorului și 40 de biți de date de la senzor. Datele includ: 16 biți de informații privind umiditatea, 26 de biți de informații despre temperatură și 8 biți de verificare.
Să aruncăm o privire mai atentă asupra diagramei de sincronizare a comunicării Arduino cu senzorul DHT11.
Din figură se poate observa că există două tipuri de impulsuri: scurt și lung. Impulsurile scurte din acest protocol de schimb denotă zerouri, impulsurile lungi - cele.
Deci, primele două impulsuri sunt cererea Arduino către DHT11 și, în consecință, răspunsul senzorului. Urmează 16 biți de umiditate. Mai mult decât atât, acestea sunt împărțite în octeți, mare și mic, mare în stânga. Adică, în figura noastră, datele privind umiditatea sunt următoarele:
0001000000000000 = 00000000 00010000 = 0x10 = 16% UR.
Date despre temperatură similare cu:
0001011100000000 = 00000000 00010111 = 0x17 = 23 grade Celsius.
Verificați biții - suma de verificare este doar însumarea a 4 octeți de date primiți:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 în binar sau 16 + 23 = 39 în zecimal.