Last Updated on Sep 2, 2020
Home automation projects often there is a need to measure the temperature and humidity of the air. This can be done with e.g. the DHT11 or the more advanced DHT22 sensors.
The AM2302 is a wired version of the DHT22, in a large plastic body. There is a 5.1K resistor inside the sensor connecting VCC and DATA so you do not need any additional pullup resistors. Here’s how to make it work.
cd ~ git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get update sudo apt-get install build-essential python-dev python-openssl sudo python setup.py install
Note that the library doesn’t use the WiringPi numbering, nor the physical, but it uses the BCM numbering!
Handy tool to check it http://pinout.xyz/
My AM2302 Data wire is wired to physical PIN 3, which is WiringPi pin 8, and BCM pin 2 :D So we put in 2 as a variable here.
cd examples sudo ./AdafruitDHT.py 2302 2
create a symlink in /usr/bin so “AdafruitDHT” becomes a command in the shell:
sudo ln -s /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py /usr/bin/AdafruitDHT
It should look like this:
pi@433v4:~ $ ls -la /usr/bin/AdafruitDHT lrwxrwxrwx 1 root root 52 Jun 8 20:47 /usr/bin/AdafruitDHT -> /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py
Then you can test the newly created command. Note that you still need to use sudo!
pi@433v4:~ $ AdafruitDHT 2302 2 Traceback (most recent call last): File "/usr/bin/AdafruitDHT", line 41, in humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 90, in read_retry File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 77, in read File "build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2.py", line 34, in read RuntimeError: Error accessing GPIO. Make sure program is run as root with sudo!
We need sudo!
pi@433v4:~ $ sudo AdafruitDHT 2302 2 Temp=24.4* Humidity=43.6%
It works, enjoy!
*This guide is based on the official Adafruit guide to install the library from here, I’ve this post in case it gets moved/deleted.