Fugtighed og temperatur er almindelige parametre til måling af miljøforhold. I dette Arduino-baserede projekt skal vi måle omgivelsestemperatur og fugtighed og vise det på en 16x2 LCD-skærm. En kombineret temperatur- og fugtighedsføler DHT11 bruges sammen med Arduino uno til at udvikle dette Celsius-skala-termometer og det procentuelle skalafugtighedsmålingsprojekt. I et af mine tidligere projekter har jeg også udviklet et digitalt termometer ved hjælp af temperatursensor LM35.
Dette projekt består af tre sektioner - en registrerer fugtighed og temperatur ved hjælp af fugtighed og temperaturføler DHT11. Det andet afsnit læser DHTsensor-modulets output og udtrækker temperatur- og fugtighedsværdier til et passende antal i procent og Celsius-skala. Og den tredje del af systemet viser fugtighed og temperatur på LCD.
Arbejdet med dette projekt er baseret på single wire seriel kommunikation. Først sender arduino et startsignal til DHT-modulet, og derefter giver DHT et svarsignal, der indeholder temperatur- og fugtighedsdata. Arduino indsamler og udtrækker i to dele, den ene er fugtighed og den anden er temperaturen og send dem derefter til 16x2 LCD.
Her i dette projekt har vi brugt et sensormodul, nemlig DHT11. Dette modul har et fugtigheds- og temperaturkompleks med et kalibreret digitalt signaludgang, hvilket betyder, at DHT11-sensormodulet er et kombineret modul til registrering af fugtighed og temperatur, der giver et kalibreret digitalt udgangssignal. DHT11 giver os en meget præcis værdi af fugtighed og temperatur og sikrer høj pålidelighed og langvarig stabilitet. Denne sensor har en resistiv type luftfugtighedsmålingskomponent og NTC-type temperaturmålingskomponent med en 8-bit mikrocontroller indbygget, som har en hurtig respons og omkostningseffektiv og tilgængelig i 4-polet enkeltpakke.
DHT11-modulet fungerer på seriel kommunikation, dvs. enkeltlednings kommunikation. Dette modul sender data i form af et pulstog med en bestemt tidsperiode. Før du sender data til arduino, har det brug for en initialiseringskommando med en tidsforsinkelse. Og hele procestiden er ca. 4 ms. En komplet datatransmission er på 40-bit, og dataformatet for denne proces er angivet nedenfor:
8-bit integreret RH-data + 8-bit decimal RH-data + 8-bit integreret T-data + 8-bit decimal T-data + 8-bit kontrolsum.
Komplet proces
Først og fremmest sender arduino et højt til lavt startsignal til DHT11 med 18 µs forsinkelse for at sikre DHT's detektion. Og så trækker arduino datalinjen op og venter på 20-40 µs på DHTs svar. Når DHT registrerer startsignal, sender det et lavspændingsresponssignal til arduino med tidsforsinkelse på ca. 80 µs. Og så trækker DHT-controlleren datalinjen op og holder den i 80 µs til DHT's ordning af afsendelse af data.
Når databussen er på lavt spændingsniveau, betyder det, at DHT11 sender svarsignal. Når det er gjort, foretager DHT igen datalinje pull-up i 80 µs til forberedelse af datatransmission.
Dataformat, der sendes med DHT til arduino for hver bit, begynder med 50 µs lavspændingsniveau, og længden af højspændingsniveausignalet bestemmer, om databitten er “0” eller “1”.
En vigtig ting er at sørge for at trække op modstandsværdien, for hvis vi placerer DHT-sensoren på <20 meters afstand, anbefales 5 k træk op modstand. Hvis DHT placeres længere end 20 meter, skal du bruge en passende værdi til at trække op modstand.
Kredsløbsdiagram og forklaring
Et display med flydende krystaller bruges til at vise temperatur og fugtighed, som er direkte forbundet til arduino i 4-bit-tilstand. Stifter på LCD, nemlig RS, EN, D4, D5, D6 og D7 er forbundet til arduino digital pin nummer 2, 3, 4, 5, 6 og 7. Og et DHT11 sensormodul er også forbundet til digital pin 12 i arduino med en 5k pull-up modstand.
Programmeringsbeskrivelse
I programmeringen skal vi bruge forudbyggede biblioteker til DHT11-sensoren og LCD-displaymodulet.
Derefter fik vi definerede stifter til LCD- og DHT-sensor og initialiseret alle tingene i opsætningen. Derefter læser DHT-sensoren i en sløjfe ved hjælp af dht-funktionen og derefter bruger vi nogle dht-funktioner, hvor vi udtrækker fugtighed og temperatur og viser dem på LCD.
Her oprettes gradssymbolet ved hjælp af brugerdefineret tegnmetode.