# Example for `dht` Driver
## What it Does
This example demonstrates how to configure and interact with a DHT sensor (DHT11 or DHT22) using the ESP-IDF framework. The DHT sensor provides temperature and humidity data, which are read and displayed every 2 seconds.
To use this example, ensure the appropriate GPIO pin and DHT sensor type are configured using `menuconfig`. These settings can be found under **DHT Sensor Configuration**.
## Wiring
Connect the data pin of the DHT sensor to the ESP32 GPIO pin defined in `menuconfig`. Make sure to add a pull-up resistor (typically 10kΩ) between the data pin and the 3.3V line for reliable operation.
| Name | Description | Default |
|------------|-----------------------------------|----------|
| `DHT_GPIO` | GPIO number connected to the DHT | `4` |
| `DHT_TYPE` | Type of DHT sensor (11 or 22) | `DHT22` |
### Example Wiring for DHT Sensor
| DHT Sensor Pin | Connection |
|-----------------|-------------------------|
| VCC | 3.3V |
| GND | Ground |
| Data | Configured GPIO (e.g., 4) with a pull-up resistor |
<img src="https://github.com/AchimPieters/ESP32-SmartPlug/blob/main/images/MIT%7C%20SOFTWARE%20WHITE.svg" alt="MIT Licence Logo" width="150">
## Include the Library in Your Code
In your project's source code, include the DHT driver header:
```c
#include "dht.h"
#include <stdio.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#define DHT_GPIO GPIO_NUM_4 // GPIO number for DHT sensor
#define DHT_TYPE DHT_TYPE_DHT22 // Type of DHT sensor
void app_main(void)
{
float temperature = 0.0f, humidity = 0.0f;
// Initialize the DHT sensor
if (dht_init(DHT_GPIO, DHT_TYPE) == ESP_OK) {
printf("DHT sensor initialized successfully.\n");
} else {
printf("Failed to initialize DHT sensor.\n");
return;
}
// Read temperature and humidity
while (1) {
if (dht_read(&temperature, &humidity) == ESP_OK) {
printf("Temperature: %.1f°C, Humidity: %.1f%%\n", temperature, humidity);
} else {
printf("Failed to read data from DHT sensor.\n");
}
vTaskDelay(2000 / portTICK_PERIOD_MS); // Delay for 2 seconds
}
}
```
## Configuration
The GPIO pin and sensor type can be configured in `menuconfig`:
1. Run `idf.py menuconfig`.
2. Navigate to **DHT Sensor Configuration**.
3. Set the GPIO number connected to the DHT sensor.
4. Select the sensor type (DHT11 or DHT22).
## Building and Running
Build the Project:
```sh
idf.py build
```
Flash the ESP32:
```sh
idf.py flash
```
Monitor Logs:
```sh
idf.py monitor
```
## Example Output
```
I (12345) DHT_Example: DHT sensor initialized successfully.
I (12346) DHT_Example: Temperature: 25.1°C, Humidity: 60.2%
I (14346) DHT_Example: Temperature: 25.2°C, Humidity: 60.3%
```
StudioPieters® | Innovation and Learning Labs | https://www.studiopieters.nl
idf.py add-dependency "achimpieters/esp32-dht^1.0.0"