Objective: In this project, we will get temperature and humid data from DHT11 and send it to Raspberry Pi, then display the temperature and humid on 16x2 LCD screen. If you don’t know what is GPIO layout, check our tutorial How to read Raspberry Pi i/o pin diagram (GPIO pin graph) Parts:
1 pc Raspberry Pi 2/3/zero x 1 raspi
1 pc 8GB MicroSD memory card x 1preinstalled Raspbian OS. 8gtf
1 pc DHT11 Temperature/Humid Sensor x 1 dht11
1 pc  I2C 1602 LCD screen x 1
1 pc breadboard x 1 BREADBOARD
1 pc GPIO breakout kit(optional) breakout
Software/Hardware Installation and Configuration Step 1)Raspbian should be upgraded to latest version in order to support RPI.GPIO module Please run following commands in shell: Step 2)Enable I2C and SPI protocol To enable the protocol, run shell command sudo raspi-config Then select Advance Options and enable I2C and SPI After rebooting the Pi, we need to modify the module's config file. Type the following command in terminal: sudo nano /etc/modules Add following two lines in modules file if they do not exist: i2c-bcm2708 i2c-dev Then Type Ctrl X and Yes to save the file. Step 3) – Install smbus and i2c python library Type following command in terminal: sudo apt-get update sudo apt-get install -y python-smbus i2c-tools sudo reboot After rebooting the system, type the following command in order to check software installation: lsmod | grep i2c You should see i2c_bcm2708 in a list, this means the library has been installed successfully. Otherwise you might need to find another Raspbian OS MicroSD card and repeat Step 2 and 3. Step 4)Raspberry Pi ,I2C 1602 LCD and DHT11 sensor pin connection
LCD Pin Description Pi Function RasPi Pin
GND GND GND pin 6 or pin 39
VCC +5V/3.3v +3.3V pin 2
SDA SDA GPIO 02 pin 3
SCL SCL GPIO 03 pin 5
DHT11 DATA pin GPIO 14 pin 8
DHT11 +VCC pin +3V pin 1
DHT11 GND(-) GND pin 6
Circuit Graph: 201703pi-dh11-i2clcd Caution: Unlike Arduino board 5V input voltage, Raspberry GPIO pin accept only 3 Volt. Wrong voltage input might damage the Pi board. Please be very careful! Step 5) Testing Hardware Depending on your Raspberry Pi version, please run one of following commands in terminal: sudo i2cdetect -y 1 or sudo i2cdetect -y 0 You should see something as follows: 0 1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 00:             -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3f 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- If you can only see "-- -- --" sign in the list without any numbers, it means either your circuit connection is wrong or your software is not properly installed. Please take special attention on the "3f" in above result, this is the i2c address of your LCD, it might be other value such as 27. If the value is not 3f, you need change line 18 of file "pi-dht11-i2clcd.py"  (you need download this file in Step 6 with wget command) Step 6) download python code Please typing following shell commands to download python file(dht11.py): sudo wget http://osoyoo.com/driver/dht11.py a) If your LCD i2c address shows 3f, pls type following shell commands to download python file(pi-dht11-ic2lcd.py) sudo wget http://osoyoo.com/driver/pi-dht11-i2clcd.py b) If you get other number in the step 5(not 3F), pls type following command in shell window sudo nano pi-dht11-i2clcd.py then copy python code and paste the code into pi-dht11-ic2lcd.py. you need change line 18 of file "pi-dht11-i2clcd.py" (I2C_ADDR = 0x3f, use your number to replace 3f) Then Type Ctrl X and Yes to save the file. and press enter Finally, run following command in shell window: sudo python pi-dht11-i2clcd.py If you can not see the text clearly in LCD, use a screw driver to adjust the brightness screw(on the back of 1602 LCD) until the display is ok. Video Demo: