Sensori i temperaturës dhe lagështisë DHT17 është një sensor i njohur dhe i lirë që mund të përdoret në një gamë mjaft të gjerë të temperaturave dhe lagështisë relative. Le të shohim se si ta lidhim atë me Arduino dhe si të lexojmë të dhëna prej tij.
E nevojshme
- - Arduino;
- - Sensori i temperaturës dhe lagështisë DHT17.
Udhëzimet
Hapi 1
Pra, sensori DHT11 ka karakteristikat e mëposhtme:
- diapazoni i lagështisë relative të matur - 20..90% me një gabim deri në 5%, - diapazoni i temperaturave të matura - 0..50 gradë Celsius me një gabim deri në 2 gradë;
- koha e përgjigjes ndaj ndryshimeve të lagështisë - deri në 15 sekonda, temperatura - deri në 30 sekonda;
- periudha minimale e votimit është 1 sekondë.
Siç mund ta shihni, sensori DHT11 nuk është shumë i saktë dhe diapazoni i temperaturës nuk mbulon vlera negative, e cila vështirë se është e përshtatshme për matjet në natyrë në sezonin e ftohtë në klimën tonë. Sidoqoftë, kostoja e ulët, madhësia e vogël dhe lehtësia e përdorimit pjesërisht i kompensojnë këto disavantazhe.
Shifra tregon pamjen e sensorit dhe dimensionet e tij në milimetra.
Hapi 2
Merrni parasysh diagramin e lidhjes së sensorit të temperaturës dhe lagështisë DHT11 me mikrokontrolluesin, në veçanti, me Arduino. Në imazh:
- MCU - mikrokontrollues (për shembull, Arduino ose i ngjashëm) ose kompjuter me një bord (Raspberry Pi ose i ngjashëm);
- DHT11 - sensori i temperaturës dhe lagështisë;
- TAT DHNAT - autobusi i të dhënave; nëse gjatësia e kabllit lidhës nga sensori në mikrokontrollues nuk i kalon 20 metra, atëherë rekomandohet tërheqja e këtij autobusi në furnizimin me energji elektrike me një rezistencë 5, 1 kOhm; nëse është më shumë se 20 metra, atëherë një vlerë tjetër e përshtatshme (më e vogël).
- VDD - furnizimi me energji i sensorit; tensione të lejueshme nga ~ 3.0 në ~ 5.5 volt DC; nëse përdoret furnizimi me energji elektrike ~ 3.3 V, atëherë këshillohet të përdorni një tel furnizimi jo më të gjatë se 20 cm.
Një nga drejtuesit e sensorit - e treta - nuk është e lidhur me asgjë.
Sensori DHT11 shpesh shitet si një montim i plotë me tubacionet e nevojshme - rezistencë tërheqëse dhe kondensator filtri.
Hapi 3
Le të bashkojmë skemën e konsideruar. Unë gjithashtu do të lidh një analizues logjik në qark në mënyrë që të mund të studioj diagramin e kohës së komunikimit me sensorin.
Hapi 4
Le të shkojmë në mënyrën e thjeshtë: shkarkoni bibliotekën për sensorin DHT11 (lidhja në seksionin "Burimet"), instalojeni atë në mënyrën standarde (duke e paketuar në drejtorinë / bibliotekat / e mjedisit të zhvillimit Arduino).
Le të shkruajmë një skicë kaq të thjeshtë. Le ta ngarkojmë në Arduino. Kjo skicë do të nxjerrë mesazhet RH dhe Temperatura të lexuara nga sensori DHT11 në portën serike të kompjuterit çdo 2 sekonda.
Hapi 5
Tani, duke përdorur diagramin e kohës të marrë nga analizuesi logjik, le të kuptojmë se si kryhet shkëmbimi i informacionit.
Sensori i temperaturës dhe lagështisë DHT11 përdor një ndërfaqe serike me një tel për të komunikuar me mikrokontrolluesin. Një shkëmbim i të dhënave kërkon rreth 40 ms dhe përmban: 1 bit kërkese nga mikrokontrolluesi, 1 bit i përgjigjes së sensorit dhe 40 bit të dhënash nga sensori. Të dhënat përfshijnë: 16 bit informacioni për lagështinë, 26 bit informacioni për temperaturën, dhe 8 bit kontroll.
Le të shohim më nga afër diagramin e kohës së komunikimit Arduino me sensorin DHT11.
Nga figura mund të shihet se ekzistojnë dy lloje të impulseve: të shkurtër dhe të gjatë. Pulsat e shkurtra në këtë protokoll shkëmbimi tregojnë zero, impulse të gjata - një.
Pra, dy impulset e para janë kërkesa e Arduino për DHT11 dhe, në përputhje me rrethanat, përgjigja e sensorit. Tjetra vjen 16 bit lagështi. Për më tepër, ato ndahen në bajte, të lartë dhe të ulët, të lartë në të majtë. Kjo është, në figurën tonë, të dhënat e lagështisë janë si më poshtë:
0001000000000000 = 00000000 00010000 = 0x10 = 16% RH.
Të dhënat e temperaturës të ngjashme me:
0001011100000000 = 00000000 00010111 = 0x17 = 23 gradë Celsius.
Bitet e kontrollit - shuma e kontrollit është vetëm përmbledhja e 4 bajtëve të të dhënave të marra:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 në binar ose 16 + 23 = 39 në dhjetore.