Kod Arduino i wideo dla czujnika temperatury i wilgotności DHT11
W tym samouczku dowiemy się, jak używać czujnika temperatury i wilgotności DHT11 z Arduino. Ten czujnik to niedrogie rozwiązanie do pomiaru zarówno temperatury, jak i wilgotności, co czyni go idealnym wyborem do różnych projektów. Omówimy podłączenie, niezbędny kod oraz sposób, w jaki komponenty współdziałają, aby zapewnić dokładne odczyty.

Po ukończeniu tego samouczka będziesz w stanie odczytywać temperaturę w stopniach Celsjusza, Fahrenheita i Kelvina, a także poziomy wilgotności z czujnika DHT11. Dla dodatkowej jasności obejrzyj wideo we wskazanych znacznikach czasu (w wideo o 00:00).
Objaśnienie sprzętu
Czujnik DHT11 składa się z trzech pinów: masy, zasilania i danych. Pin masy łączy się z masą Arduino, a pin zasilania z wyjściem 5V z Arduino. Pin danych odpowiada za komunikację między Arduino a czujnikiem, umożliwiając Arduino odczyt wartości temperatury i wilgotności.
Czujnik ten wykorzystuje wyjście cyfrowe, co oznacza, że wysyła dane w formacie szeregowym do Arduino. Zawiera termistor do pomiaru temperatury oraz pojemnościowy czujnik wilgotności. DHT11 przekształca sygnały analogowe, które otrzymuje, na sygnały cyfrowe, co ułatwia mikrokontrolerom takim jak Arduino przetwarzanie danych.
Szczegóły z karty katalogowej
| Producent | ASAIR |
|---|---|
| Numer części | DHT11 |
| Napięcie logiki/IO | 3,3–5,5 V |
| Napięcie zasilania | 3,3–5,5 V |
| Prąd wyjściowy (na kanał) | 0,5 mA |
| Prąd szczytowy (na kanał) | 2,5 mA |
| Zalecenia dotyczące częstotliwości PWM | N/D |
| Progi logiki wejściowej | 0,3*VDD do 0,7*VDD |
| Spadek napięcia / RDS(on) / nasycenie | N/D |
| Limity termiczne | 0 do 60 °C |
| Obudowa | 4-pin DIP |
| Uwagi / warianty | Niski koszt, łatwy w użyciu |
- Napięcie robocze od 3,3 V do 5,5 V.
- Maksymalny prąd wyjściowy 2,5 mA.
- Zakres temperatury od 0 do 60 stopni Celsjusza.
- Zakres wilgotności od 20% do 90%.
- Użyj rezystora podciągającego na pinie danych dla stabilnych odczytów.
- Zapewnij prawidłowe połączenie, aby uniknąć pływających wejść.
- Zachowaj ostrożność przy odwróconej polaryzacji podczas podłączania zasilania.
- Opóźnij odczyty o co najmniej 1 sekundę dla dokładnych wyników.
Instrukcje podłączenia

Aby podłączyć czujnik DHT11 do Arduino, wykonaj następujące kroki:
Najpierw podłącz pin masy (zwykle czarny lub brązowy) czujnika DHT11 do masy (GND) na Arduino. Następnie podłącz pin zasilania (zwykle czerwony) czujnika DHT11 do wyjścia 5V na Arduino. Na koniec podłącz pin danych (zwykle żółty lub biały) do pinu cyfrowego 2 na Arduino. Upewnij się, że używasz rezystora podciągającego (około 10 kΩ) między pinem danych a pinem zasilania, aby zapewnić stabilną komunikację.
Przykłady kodu i omówienie
W kodzie Arduino zaczynamy od dołączenia niezbędnego pliku nagłówkowego dla czujnika DHT11:
#include
Ta linia importuje bibliotekę zawierającą funkcje potrzebne do interakcji z czujnikiem DHT11. Następnie tworzymy instancję klasy DHT11:
dht11 DHT11; // utwórz obiekt DHT11
Ta linia inicjalizuje obiekt DHT11, którego użyjemy do odczytu danych z czujnika. Pin podłączony do DHT11 jest zdefiniowany jako:
#define dhtpin 2 // ustaw pin do podłączenia DHT11
To ustawia pin danych dla czujnika na pin 2 na Arduino. W funkcji loop() odczytujemy dane z czujnika:
DHT11.read(dhtpin);// zainicjuj odczyt
Ta linia rozpoczyna proces odczytu, a wilgotność można uzyskać za pomocą:
int humidity = DHT11.humidity;// pobierz wilgotność
Wartość wilgotności jest przechowywana w zmiennej humidity, która jest następnie drukowana na monitorze szeregowym wraz z wartościami temperatury przeliczonymi na stopnie Celsjusza, Fahrenheita i Kelvina.
Demonstracja / Czego się spodziewać
Po uruchomieniu kodu powinieneś zobaczyć odczyty temperatury i wilgotności wyświetlane na monitorze szeregowym. Odczyty temperatury będą aktualizowane co pół sekundy (w wideo o 00:00). Jeśli czujnik zostanie podgrzany lub schłodzony, zauważysz, że wartości zmieniają się odpowiednio. Zachowaj ostrożność, ponieważ DHT11 ma maksymalny limit temperatury 60 stopni Celsjusza; przekroczenie tego limitu może prowadzić do niedokładnych odczytów.
Znaczniki czasu wideo
- 00:00 - Wprowadzenie do czujnika DHT11
- 01:30 - Instrukcje podłączenia
- 02:15 - Przegląd kodu
- 03:00 - Uruchomienie kodu i oczekiwane wyniki
/*
* This is the Arduino code for the DHT11 module to read temperature and humidity.
* This code can display temperature in:
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
* Watch the video https://youtu.be/FjZBt6eU9b4
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: January 4, 2018, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// header file from GitHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
void setup() {
Serial.begin(9600);// setting up serial monitor
}
void loop() {
DHT11.read(dhtpin);// initialize the reading
//code for Robojax.com video
int humidity = DHT11.humidity;// get humidity
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.println("% ");
Serial.println();
delay(500);
}
/*
* getTemp(char type)
* type character of upper case.
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
*/
float getTemp(char type) {
float temp = (float)DHT11.temperature;//get temp
if(type =='F')
{
return temp * 1.8 + 32;// convert to Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// convert to Kelvin
}else{
return temp;
}
}
Zasoby i odniesienia
-
ZewnętrznyDHT11 library on GitHubgithub.com
Pliki📁
Biblioteki Arduino (zip)
-
DHT22 Arduino Library
robojax-DHT22_library.zip0.01 MB
Plik Fritzing
-
Temperature Sensor DHT11
Temperature Sensor DHT11.fzpz0.01 MB
Instrukcja obsługi
-
Podręcznik użytkownika DHT11
robojax-DHT11_manual.pdf0.82 MB
Inne pliki
-
Biblioteka DHT11 dla Arduino
robojax-DHT11-simple_library.zip