Search Code

Kod Arduino i wideo dla czujnika temperatury i wilgotności DHT11

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.

DHT11 Module

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

ProducentASAIR
Numer częściDHT11
Napięcie logiki/IO3,3–5,5 V
Napięcie zasilania3,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 PWMN/D
Progi logiki wejściowej0,3*VDD do 0,7*VDD
Spadek napięcia / RDS(on) / nasycenieN/D
Limity termiczne0 do 60 °C
Obudowa4-pin DIP
Uwagi / wariantyNiski 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

Arduino wiring for DHT11 Temperature and humidity sensor
Arduino wiring for DHT11 Temperature and humidity sensor

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

Obrazy

Arduino wiring for DHT11 Temperature and humidity sensor
Arduino wiring for DHT11 Temperature and humidity sensor
DHT11 Module
DHT11 Module
DHT11 Module
DHT11 Module
53-This is the Arduino code and video for a DHT11 temperature and humidity sensor.
Język: C++
/*
 * 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

Pliki📁

Biblioteki Arduino (zip)

Plik Fritzing

Instrukcja obsługi

Inne pliki