Ships worldwide · rates shown at checkout
Free help & advice · we reply within 24 hours
30-day returns · 12-month warranty on faults
Import VAT and customs duties may be charged to the buyer on delivery.

02 - Basic Example

Lonely Binary |

# 2_Arduino with DHT Sensors In this guide, we will explore the DHTesp library, a powerful tool for interfacing with DHT temperature and humidity sensors in Arduino projects. The library works for Arduino, ESP8266 and ESP32. We'll cover everything from basic setup to reading temperature and humidity data, with practical examples that you can implement in your own projects. You will learn the following in this guide: - How to install and configure the DHTesp library - Reading temperature and humidity data from DHT sensors - Understanding sensor communication and error handling - Implementing real-world monitoring applications # Library Installation - Open **Arduino IDE** > **Sketch** > **Include Library** > **Manage Libraries**. - Search for **“DHT ESP”** and install it. ![](https://cdn.shopify.com/s/files/1/0331/9994/7908/files/Pasted_image_20250206232422.png?v=1766487670) # Project - Interactive with DHT Sensor This code is for reading temperature and humidity data from a **DHT11 sensor** using an **Arduino**. Connecting the DHT11 or DHT22 to an Arduino is straightforward. Simply connect the sensor’s **VCC** to **5V**, **GND** to **Ground**, and the **Data** pin to **GPIO 2** on the Arduino. | DHT11/22 | Arduino | | -------- | ------- | | + | 5V | | OUT | 2 | | - | GND | For the DHT22 sensor, simply set the **DHT_MODEL** to **DHTesp::DHT22**. ``` cpp #include <DHTesp.h> DHTesp dht; const int DHT_PIN = 2; // Pin where DHT11 is connected const DHTesp::DHT_MODEL_t DHT_MODEL = DHTesp::DHT11; //DHT11 const int FREQUENCY = 2000; // Update every 2 seconds void setup() { Serial.begin(9600); dht.setup(DHT_PIN, DHT_MODEL); // Initialize the DHT11 sensor } void loop() { float temperature = dht.getTemperature(); float humidity = dht.getHumidity(); if (isnan(temperature) || isnan(humidity)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Temperature: "); Serial.print(temperature); Serial.print(" C\t"); Serial.print("Humidity: "); Serial.print(humidity); Serial.println(" %"); delay(FREQUENCY); //update the reading every 2 seconds } ``` Here’s a step-by-step breakdown of how the code works: **Library Inclusion** ``` cpp #include <DHTesp.h> ``` **DHTesp** is a library that helps you easily interface with DHT sensors like **DHT11** and **DHT22**. It provides functions to read data from the sensor. **Create DHT Object** ``` cpp DHTesp dht; ``` This line creates an object dht of the **DHTesp** class. This object will be used to interact with the DHT11 sensor and get the temperature and humidity data. **Pin and Sensor Setup** ``` cpp const int DHT_PIN = 2;  _// Pin where DHT11 is connected_ const DHTesp::DHT_MODEL_t DHT_MODEL = DHTesp::DHT11; _//DHT11_ const int FREQUENCY = 2000; _// Update every 2 seconds_ ``` DHT_PIN = 2: The sensor is connected to digital pin 2 of the Arduino board. DHT_MODEL = DHTesp::DHT11: This specifies that the sensor is a **DHT11**. If you were using a **DHT22**, you would use DHTesp::DHT22. FREQUENCY = 2000: This sets the delay between each reading to **2 seconds (2000 ms)**. **Setup Function** ``` cpp void setup() {   Serial.begin(9600);   dht.setup(DHT_PIN, DHT_MODEL); _// Initialize the DHT11 sensor_ } ``` Serial.begin(9600): This starts the serial communication with the computer at a baud rate of **9600**. This allows you to print data to the Serial Monitor. •dht.setup(DHT_PIN, DHT_MODEL): Initializes the DHT11 sensor on the specified pin (DHT_PIN) and the specified model (DHT_MODEL), which is **DHT11**. **Main Loop** ```cpp   float temperature = dht.getTemperature();   float humidity = dht.getHumidity(); ``` dht.getTemperature(): This function retrieves the **temperature** reading from the DHT11 sensor. dht.getHumidity(): This function retrieves the **humidity** reading from the DHT11 sensor. Both values are stored in the temperature and humidity variables as **floating-point numbers**. **Error Checking** ```cpp if (isnan(temperature) || isnan(humidity)) {     Serial.println("Failed to read from DHT sensor!");     return; } ``` isnan() checks if the **temperature** or **humidity** reading is **Not a Number** (NaN), which could happen if the sensor failed to provide valid data. If either value is **NaN**, an error message is printed to the Serial Monitor, and the loop exits early (return). **Print Data to Serial Monitor** ```cpp Serial.print("Temperature: "); Serial.print(temperature); Serial.print(" C\t"); Serial.print("Humidity: "); Serial.print(humidity); Serial.println(" %"); ``` **Delay** ```cpp delay(FREQUENCY); _//update the reading every 2 seconds_ ``` delay(FREQUENCY) pauses the program for **2 seconds** (2000 milliseconds). This ensures the temperature and humidity readings are updated only every 2 seconds, instead of constantly refreshing and flooding the Serial Monitor with data. - [ ] This process will continue repeatedly as long as the Arduino is powered on. Here is the output from Serial Monitor. ![](https://cdn.shopify.com/s/files/1/0331/9994/7908/files/Pasted_image_20250206233757.png?v=1766487678) # Summary This guide demonstrated how to effectively use the DHTesp library to interface with DHT temperature and humidity sensors in Arduino projects. We covered the complete process from hardware setup and library installation to implementing a functional monitoring system. The provided code example shows how to read temperature and humidity data at regular intervals, handle potential errors, and display the results through the Serial Monitor. With this foundation, you can now integrate DHT sensors into your own projects for environmental monitoring, home automation, or any application requiring temperature and humidity measurements. # Reference ![[isnan()]]