An open API service indexing awesome lists of open source software.

https://github.com/adafruit/adafruit_circuitpython_dht

CircuitPython support for DHT11 and DHT22 type temperature/humidity devices
https://github.com/adafruit/adafruit_circuitpython_dht

hacktoberfest

Last synced: 9 months ago
JSON representation

CircuitPython support for DHT11 and DHT22 type temperature/humidity devices

Awesome Lists containing this project

README

          

Introduction
============

.. image:: https://readthedocs.org/projects/adafruit-circuitpython-dht/badge/?version=latest
:target: https://docs.circuitpython.org/projects/dht/en/latest/
:alt: Documentation Status

.. image:: https://raw.githubusercontent.com/adafruit/Adafruit_CircuitPython_Bundle/main/badges/adafruit_discord.svg
:target: https://adafru.it/discord
:alt: Discord

.. image:: https://github.com/adafruit/Adafruit_CircuitPython_DHT/workflows/Build%20CI/badge.svg
:target: https://github.com/adafruit/Adafruit_CircuitPython_DHT/actions
:alt: Build Status

.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
:target: https://github.com/astral-sh/ruff
:alt: Code Style: Ruff

CircuitPython support for the DHT11 and DHT22 temperature and humidity devices.

Dependencies
=============
This driver depends on:

* `Adafruit CircuitPython `_

Please ensure all dependencies are available on the CircuitPython filesystem.
This is easily achieved by downloading
`the Adafruit library and driver bundle `_.

.. note::
This library uses the `pulseio` module in CircuitPython. As of CircuitPython 7.0.0, `pulseio` is
no longer available on the smallest CircuitPython builds,
such as the Trinket M0, Gemma M0, and Feather M0 Basic boards.
You can substitute a more modern sensor, which will work better as well.
See the guide `Modern Replacements for DHT11 and DHT22 Sensors
`_
for suggestions.

Installing from PyPI
====================

On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally `from
PyPI `_. To install for current user:

.. code-block:: shell

pip3 install adafruit-circuitpython-dht

To install system-wide (this may be required in some cases):

.. code-block:: shell

sudo pip3 install adafruit-circuitpython-dht

To install in a virtual environment in your current project:

.. code-block:: shell

mkdir project-name && cd project-name
python3 -m venv .venv
source .venv/bin/activate
pip3 install adafruit-circuitpython-dht

Usage Example
==============

Hardware Set-up
----------------

Designed specifically to work with the Adafruit DHT series sensors:

* Adafruit `DHT22 temperature-humidity sensor + extras `_
* Adafruit `DHT11 temperature-humidity sensor + extras `_

.. note::
DHT11 and DHT22 devices both need a pull-resistor on the data signal wire. This resistor is in the range of 1k to 5k

* Please check the device datasheet for the appropriate value.
* Be sure that you are running the Buster Operating System.
* Make sure that your user is part of the ``gpio`` group.

Known Issues
------------

* The library may or may not work in Linux 64-bit platforms.
* The Raspberry PI Zero does not provide reliable readings.
* Readings in FeatherS2 does not work as expected.

.. note::
Using a more modern sensor will avoid these issues.
See the guide `Modern Replacements for DHT11 and DHT22 Sensors
`_.

Basics
-------

Of course, you must import the library to use it:

.. code:: python

import adafruit_dht

The DHT type devices use single data wire, so import the board pin

.. code:: python

from board import

Now, to initialize the DHT11 device:

.. code:: python

dht_device = adafruit_dht.DHT11()

OR initialize the DHT22 device:

.. code:: python

dht_device = adafruit_dht.DHT22()

Read temperature and humidity
------------------------------

Now get the temperature and humidity values

.. code:: python

temperature = dht_device.temperature
humidity = dht_device.humidity

These properties may raise an exception if a problem occurs. You should use try/raise
logic and catch RuntimeError and then retry getting the values after at least 2 seconds.
If you try again to get a result within 2 seconds, cached values are returned.

Documentation
=============

API documentation for this library can be found on `Read the Docs `_.

For information on building library documentation, please check out `this guide `_.

Contributing
============

Contributions are welcome! Please read our `Code of Conduct
`_
before contributing to help this project stay welcoming.