Senzor temperature in vlažnosti DHT17 je priljubljen in poceni senzor, ki ga lahko uporabljate v dokaj širokem območju temperatur in relativne vlažnosti. Poglejmo, kako ga povezati z Arduinom in kako brati podatke iz njega.
Potrebno
- - Arduino;
- - DHT17 senzor temperature in vlažnosti.
Navodila
Korak 1
Torej ima senzor DHT11 naslednje značilnosti:
- območje izmerjene relativne vlažnosti - 20..90% z napako do 5%, - razpon izmerjenih temperatur - 0..50 stopinj Celzija z napako do 2 stopinj;
- odzivni čas na spremembe vlažnosti - do 15 sekund, temperature - do 30 sekund;
- najkrajše obdobje glasovanja je 1 sekunda.
Kot lahko vidite, senzor DHT11 ni zelo natančen in temperaturno območje ne pokriva negativnih vrednosti, kar je v naših podnebjih komaj primerno za zunanje meritve v hladni sezoni. Nizka cena, majhnost in enostavnost uporabe pa te pomanjkljivosti delno izravnajo.
Slika prikazuje videz senzorja in njegove mere v milimetrih.
2. korak
Upoštevajte diagram povezave senzorja temperature in vlažnosti DHT11 z mikrokrmilnikom, zlasti z Arduinom. Na sliki:
- MCU - mikrokrmilnik (na primer Arduino ali podoben) ali enojni računalnik (Raspberry Pi ali podoben);
- DHT11 - senzor temperature in vlage;
- DATA - podatkovno vodilo; če dolžina povezovalnega kabla od senzorja do mikrokrmilnika ne presega 20 metrov, je priporočljivo, da to vodilo povlečete na napajanje z uporom 5, 1 kOhm; če je več kot 20 metrov, potem druga primerna vrednost (manjša).
- VDD - napajanje senzorja; dovoljene napetosti od ~ 3,0 do ~ 5,5 voltov enosmernega toka; če se uporablja napajalnik ~ 3,3 V, je priporočljivo uporabiti napajalno žico, ki ni daljša od 20 cm.
Eden od vodnikov senzorja - tretji - ni povezan z ničemer.
Senzor DHT11 se pogosto prodaja kot celoten sklop s potrebnim cevnim vlečnim uporom in kondenzatorjem filtra.
3. korak
Sestavimo obravnavano shemo. Na vezje bom priklopil tudi logični analizator, da bom lahko preučil časovni diagram komunikacije s senzorjem.
4. korak
Pojdimo na preprost način: prenesite knjižnico za senzor DHT11 (povezava v razdelku "Viri"), jo namestite na standardni način (razpakirajte v imenik / knjižnice / razvojnega okolja Arduino).
Napišimo tako preprosto skico. Naložimo ga v Arduino. Ta skica bo vsaka 2 sekundi prikazala sporočila RH in temperature, prebrana s senzorja DHT11, na zaporedna vrata računalnika.
5. korak
Zdaj, s pomočjo časovnega diagrama, pridobljenega iz logičnega analizatorja, ugotovimo, kako poteka izmenjava informacij.
Senzor temperature in vlažnosti DHT11 uporablja enožični serijski vmesnik za komunikacijo z mikrokrmilnikom. Ena izmenjava podatkov traja približno 40 ms in vsebuje: 1 bit zahteve mikrokrmilnika, 1 bit odziva senzorja in 40 podatkovnih bitov senzorja. Podatki vključujejo: 16 bitov informacij o vlažnosti, 26 bitov informacij o temperaturi in 8 kontrolnih bitov.
Oglejmo si podrobneje časovni diagram komunikacije Arduino s senzorjem DHT11.
Iz slike je razvidno, da obstajata dve vrsti impulzov: kratki in dolgi. Kratki impulzi v tem protokolu izmenjave označujejo ničle, dolgi impulzi - enote.
Torej, prva dva impulza sta Arduinova zahteva za DHT11 in s tem odziv senzorja. Sledi 16 bitov vlage. Poleg tega so razdeljeni na bajte, visoke in nizke, visoko na levi. Na naši sliki so podatki o vlagi naslednji:
0001000000000000 = 00000000 00010000 = 0x10 = 16% relativne vlažnosti.
Podatki o temperaturi, podobni:
0001011100000000 = 00000000 00010111 = 0x17 = 23 stopinj Celzija.
Kontrolni bit - kontrolna vsota je le seštevek 4 prejetih bajtov podatkov:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 v binarni obliki ali 16 + 23 = 39 v decimalni obliki.