Umiditatea și temperatura sunt parametri obișnuiți pentru măsurarea condițiilor de mediu. În acest proiect bazat pe Arduino, vom măsura temperatura și umiditatea ambientală și le vom afișa pe un ecran LCD de 16x2. Un senzor combinat de temperatură și umiditate DHT11 este utilizat cu Arduino uno pentru a dezvolta acest termometru la scară Celsius și proiectul de măsurare a umidității la scară procentuală. Într-unul din proiectele mele anterioare, am dezvoltat și un termometru digital folosind senzorul de temperatură LM35.
Acest proiect constă din trei secțiuni - una detectează umiditatea și temperatura utilizând senzorul de umiditate și temperatură DHT11. A doua secțiune citește ieșirea modulului DHTsensor și extrage valorile de temperatură și umiditate într-un număr adecvat în procente și scara Celsius. Iar a treia parte a sistemului afișează umiditatea și temperatura pe ecranul LCD.
Funcționarea acestui proiect se bazează pe comunicații seriale cu un singur fir. Mai întâi arduino trimite un semnal de pornire la modulul DHT și apoi DHT dă un semnal de răspuns care conține date de temperatură și umiditate. Arduino colectează și extrage în două părți, una este umiditatea și a doua este temperatura și apoi le trimiteți la LCD 16x2.
Aici, în acest proiect, am folosit un modul senzor și anume DHT11. Acest modul are un complex de umiditate și temperatură cu un semnal digital de ieșire calibrat înseamnă că modulul senzor DHT11 este un modul combinat pentru detectarea umidității și temperaturii, care oferă un semnal de ieșire digital calibrat. DHT11 ne oferă o valoare foarte precisă a umidității și temperaturii și asigură o fiabilitate ridicată și stabilitate pe termen lung. Acest senzor are o componentă de măsurare a umidității de tip rezistiv și o componentă de măsurare a temperaturii de tip NTC cu un microcontroler de 8 biți încorporat, care are un răspuns rapid și eficient din punct de vedere al costurilor și este disponibil în pachet cu 4 pini cu un singur rând.
Modulul DHT11 funcționează pe comunicații seriale, adică comunicații cu un singur fir. Acest modul trimite date sub formă de tren de impulsuri pentru o anumită perioadă de timp. Înainte de a trimite date către arduino are nevoie de o comandă de inițializare cu întârziere. Și timpul întregului proces este de aproximativ 4 ms. O transmisie completă de date este de 40 de biți, iar formatul de date al acestui proces este dat mai jos:
Date RH integrale pe 8 biți + date RH zecimale pe 8 biți + date T integrale pe 8 biți + date T zecimale pe 8 biți + sumă de verificare pe 8 biți.
Proces complet
În primul rând, arduino trimite un semnal de pornire de la mare la scăzut către DHT11 cu 18µs întârziere pentru a asigura detectarea DHT. Și apoi arduino trageți linia de date și așteptați 20-40µs pentru răspunsul DHT. Odată ce DHT detectează semnalul de pornire, acesta va trimite un semnal de răspuns de nivel de tensiune scăzută către arduino de întârziere de aproximativ 80µs. Și apoi controlerul DHT trage linia de date în sus și o păstrează timp de 80µs pentru ca DHT să aranjeze transmiterea datelor.
Când magistrala de date este la un nivel de tensiune scăzut, înseamnă că DHT11 trimite semnal de răspuns. Odată ce este terminat, DHT face din nou extragerea liniei de date pentru 80µs pentru pregătirea transmiterii datelor.
Formatul de date care este trimis de DHT către arduino pentru fiecare bit începe cu 50µs nivel de tensiune scăzută și lungimea semnalului de înaltă tensiune determină dacă bitul de date este „0” sau „1”.
Un lucru important este să vă asigurați că valoarea rezistorului de tragere este ridicată, deoarece dacă plasăm senzorul DHT la o distanță de <20 metri, este recomandat rezistorul de tragere de 5 k. Dacă plasați DHT la o lungime mai mare de 20 de metri, utilizați rezistența de tracțiune a valorii corespunzătoare.
Diagrama și explicația circuitului
Un afișaj cu cristale lichide este utilizat pentru afișarea temperaturii și umidității, care este conectat direct la arduino în modul 4 biți. Pinii LCD, respectiv RS, EN, D4, D5, D6 și D7 sunt conectați la pinul digital arduino numărul 2, 3, 4, 5, 6 și 7. Și un modul senzor DHT11 este conectat și la pinul digital 12 al arduino cu un Rezistor de tracțiune de 5k.
Descrierea programării
În programare, vom folosi biblioteci pre-construite pentru senzorul DHT11 și modulul de afișare LCD.
Apoi am definit pini pentru senzorul LCD și DHT și am inițializat toate lucrurile din configurare. Apoi, într-o buclă, utilizând funcția dht citește senzorul DHT și apoi folosind unele funcții dht extragem umiditatea și temperatura și le afișăm pe LCD.
Aici simbolul gradului este creat folosind metoda caracterelor personalizate.