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.