DHT22 with MicroPython on ESP32
Bidut Sharkar Shemanto
Posted on June 20, 2024
Introduction
In this tutorial, we will learn how to interface a DHT22 temperature and humidity sensor with an ESP32 microcontroller using MicroPython. The DHT22 is a reliable sensor for measuring temperature and humidity, making it perfect for environmental monitoring projects.
Prerequisites
Before we dive into the code, ensure you have the following:
- ESP32 microcontroller
- DHT22 sensor
- Breadboard and jumper wires
- MicroPython installed on the ESP32
- Thonny IDE or any other suitable IDE for writing and uploading MicroPython code
Code Explanation
Here is the complete code to read temperature and humidity from the DHT22 sensor and print the values to the console:
# code written by Shemanto Sharkar (let's connect on LinkedIn: https://www.linkedin.com/in/shemanto/)
# step-1: importing necessary modules
from machine import Pin
from utime import sleep
import dht
# step-2: telling ESP32 where our sensor's data pin is connected
sensor = dht.DHT22(Pin(13))
# step-3: reading data continuously inside loop
while True:
try:
sensor.measure()
t = sensor.temperature()
h = sensor.humidity()
print("temp=" + str(t))
print("humidity=" + str(h))
sleep(2)
print("")
except OSError as e: # Error Handling
print("Error Data")
Detailed Code Breakdown
- Importing Necessary Modules:
from machine import Pin
from utime import sleep
import dht
-
from machine import Pin
: Imports thePin
class from themachine
module, used for configuring GPIO pins. -
from utime import sleep
: Imports thesleep
function from theutime
module for introducing delays. -
import dht
: Imports the DHT library to interact with the DHT22 sensor.
- Setting Up the Sensor:
sensor = dht.DHT22(Pin(13))
-
sensor = dht.DHT22(Pin(13))
: Initializes the DHT22 sensor on GPIO pin 13. This line tells the ESP32 where the sensor's data pin is connected.
- Reading Data Continuously:
while True:
try:
sensor.measure()
t = sensor.temperature()
h = sensor.humidity()
print("temp=" + str(t))
print("humidity=" + str(h))
sleep(2)
print("")
except OSError as e:
print("Error Data")
-
while True
: Starts an infinite loop to continuously read data from the sensor. -
sensor.measure()
: Triggers the sensor to measure temperature and humidity. -
t = sensor.temperature()
: Reads the temperature value from the sensor. -
h = sensor.humidity()
: Reads the humidity value from the sensor. -
print("temp=" + str(t))
: Prints the temperature value to the console. -
print("humidity=" + str(h))
: Prints the humidity value to the console. -
sleep(2)
: Introduces a delay of 2 seconds before the next reading. -
except OSError as e
: Catches any errors that occur during the reading process and prints an error message.
Diagram
Here's a diagram illustrating the connections:
ESP32 Microcontroller:
----------------------
___________
| |
| |
| |
| 13 |--------> DHT22 (Data Pin)
| |
| |
|___________|
|
|
GND
VCC (3.3V)
Connections:
- Connect the VCC pin of the DHT22 to the 3.3V pin of the ESP32.
- Connect the GND pin of the DHT22 to the GND pin of the ESP32.
- Connect the Data pin of the DHT22 to GPIO pin 13 of the ESP32.
Conclusion
By following this tutorial, you will be able to read temperature and humidity data from a DHT22 sensor using an ESP32 microcontroller with MicroPython. This basic setup can be extended for various applications like weather stations, smart home systems, and more. Happy coding!
If you have any questions or need further assistance, feel free to reach out on LinkedIn: Shemanto Sharkar.
Posted on June 20, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.