Introduction: Portable Arduino Uno Temperature and Humidity Sensor With LCD Screen
Hey everybody. I have gotten a lot of great ideas from instructables over the years. As this is my first 'ible, I figure I would share something I made as well. I am entering this into the Full Spectrum Laser Contest 2016. If I were to win, I would be able to 3d print a case for this project and use the laser engraver to etch an awesome design into the case. If you enjoy this 'ible, please vote for me.
In this Instructable, I am going to show you how I made a temp and humidity sensor with an Arduino Uno. My end goal is to make one with an Attiny84 and etch a PCB for it. While I do have the parts and pieces to do this, the weather outside is not cooperating. It is hard to etch a board in my garage at less than 10 degrees Fahrenheit. That will be a different instructable for a later date.
Without further delay, here is my instructable. Thanks again for taking time to read my project.
Step 1: Parts BOM
To start out, the following is required for this project:
All parts can be purchased at sparkfun or adafruit. Or you can do as I do and salvage as much as you can from old devices.
- Arduino (I used an UNO R3, but 5V any will work)
- Breadboard
- DHT11 temperature and humidity sensor
- 10k ohm potentiometer
- 16x2 LCD screen
- tactile button
- USB A-B cable
- Power Bank
- Jumper Wires
Step 2: Building the Circuit
Now it is time to attach all the wires to the devices. Please refer to the Fritzing schematic (please note I do not have jumper wires between the two power rails on the breadboard. you will need them if you use both):
The LCD display I am using was recovered from an old fire alarm annunciator panel. Pins 15 & 16 are located before Pin 1 and instead of Pin 16 being Gnd, it is actually 5v and Pin 15 is Gnd. Please double check your own display and make sure your pins are correct. As my display pinout is most likely different from almost everybody else, I have made the Fritzing schematic with the "standard" display instead of my exact pinout.
Uno
Gnd --> negative rail on breadboard
5v --> positive rail on breadboard
DTH11
Pin1 --> 5v and 10k ohm resistor
Pin2 --> Arduino Pin8 and 10k ohm resistor
Pin3 --> no connection
Pin4 --> Gnd
16x2 LCD Screen
Pin1 --> Gnd
Pin2 --> 5v
Pin3 --> 10k ohm potentiometer wiper pin ( middle pin. the other two pins on the POT go to 5v and Gnd)
Pin4 --> Arduino Pin12
Pin5 --> Gnd
Pin6 --> Arduino Pin11
Pin7 --> no connection
Pin8 --> no connection
Pin9 --> no connection
Pin10 --> no connection
Pin11 --> Arduino Pin5
Pin12 --> Arduino Pin4
Pin13 --> Arduino Pin3
Pin14 --> Arduino Pin2
Pin15 --> 5v
Pin16 --> Tactile button (other side of tack button goes to Gnd)
Step 3: The Code
Below is the code:
I used the DHT library from Adafruit.
https://github.com/adafruit/DHT-sensor-library
--CODE--
// include the library code:
#include "DHT.h"
// set the DHT Pin #define DHTPIN 8
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
dht.begin();
// Print a message to the LCD.
lcd.print("Temp: Humidity:"); }
void loop() {
delay(500);
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// read humidity
float h = dht.readHumidity();
//read temperature in Fahrenheit
float f = dht.readTemperature(true);
if (isnan(h) || isnan(f)) {
lcd.print("ERROR");
return;
}
lcd.print(f);
lcd.setCursor(2,1);
lcd.print(char(223));
lcd.setCursor(3,1);
lcd.print(" F");
lcd.setCursor(7,1);
lcd.print(h);
lcd.setCursor(9,1);
lcd.print(char(37));
}
--CODE--
Attachments
Step 4: Finished!
After all of the wiring, plug your power bank to the Arduino.
Your LCD display and DHT11 should start up. Press the tact button and your LCD backlight should light up.
Now you have a portable temperature and humidity sensor with a real time display.
This has helped me determine my draftiest windows in my house and how best to set my house ventilation.
Thanks again for taking the time to read my first instructable.
UPDATE #1
Thanks to Waggabob, the LCD display has been updated to display the degree symbol. I also added the % symbol to the humidity. (see last picture for updated display)

Participated in the
Digital Life 101 Challenge

Participated in the
Full Spectrum Laser Contest 2016
17 Comments
6 years ago
A.This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows NT (unknown)), Board: "Arduino Uno"
sketch_dec03a:39: error: 'dht11' does not name a type
sketch_dec03a.ino: In function 'void setup()':
sketch_dec03a:46: error: 'DHT11LIB_VERSION' was not declared in this scope
sketch_dec03a.ino: In function 'void loop()':
sketch_dec03a:52: error: 'DHT11' was not declared in this scope
Reply 6 years ago
Did you install the DHT library from adafruit?
Reply 6 years ago
Yes. I installed it. Is it because of my windows? it is win 10.
Reply 6 years ago
I don't think so. I have used Win 7,8,8.1 and 10 as well as MacOS and Linux. Double check your installation location. I have noticed that the Arduino IDE looks for the libs in various places. Most likely either C:\Arduino and/or C:\Users\[username]\Documents\Arduino (or something like that.
I have had that problem but was able to fix it by checking the IDE preferences for the location that it is looking for libraries in
6 years ago
A.help me please!
6 years ago
when I try to verify then upload I get this message please help I am very new to this stuff.
( C:\Users\Dans\Desktop\ARDUINO STARTERKITS\code\DHT11_interface_with_arduino_and_lcd\DHT11_interface_with_arduino_and_lcd.ino:46:19: fatal error: DHT11.h: No such file or directory
#include <DHT11.h>
^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.)
Reply 6 years ago
recheck step 3. you need to download and install the DHT library from Adafruit
https://github.com/adafruit/DHT-sensor-library
6 years ago
when I try to download it, I get the error
exit status 1
'LiquidCrystal' does not name a type.
7 years ago
The code doesnt work. Here is the error code
LCD_DHT11:11: error: 'DHT' does not name a type
DHT dht(DHTPIN, DHTTYPE);
^
/Users/masteruser/Downloads/LCD_DHT11/LCD_DHT11.ino: In function 'void setup()':
LCD_DHT11:16: error: expected unqualified-id before '.' token
dht.begin();
^
/Users/masteruser/Downloads/LCD_DHT11/LCD_DHT11.ino: In function 'void loop()':
LCD_DHT11:28: error: expected primary-expression before '.' token
int h = dht.readHumidity();
^
LCD_DHT11:30: error: expected primary-expression before '.' token
int f = dht.readTemperature(true);
^
exit status 1
'DHT' does not name a type
Reply 7 years ago
Hey muhammet resule. Thanks for checking out my 'ible.
Did you install Adafruit's DHT library? That is what I used and the only one I could make work. Make sure you have the DHT library installed and everything should work well.
Reply 7 years ago
yes i already installed the library, this is the error code after i install the library...
Reply 7 years ago
Ok. First, where did you install your library? If using windows, there usually ends up being a library folder in the C:\Arduino\ path and the ~Documents\Arduino path. Make sure it is installed correctly. I am on a mac now and have only one location but also have a Win 10 pc that always gives me a twist when installing a library.
Second, did you copy the code from the page or download the .ino file?
Can you post your code?
7 years ago
cool, thanks
7 years ago
Very nice Instructable! Thanks for sharing!
7 years ago
These projects are a great way to start with Arduinos! Can I make 2 suggestions. Firstly if you can get a DHT22 sensor they have better accuracy for not much more cost. Second, you can include the "degrees" symbol like this:
lcd.print((char)223);
That makes it look nicer on the screen.
Reply 7 years ago
Thanks WaggaBob. I made the changes and it looks a lot better. I did update the instructable. I agree with the DHT22. I am using a DHT11 because I was gifted 10 of them. For what I have been using this for, 1-2 degrees is rounding error.
7 years ago
This is great! Thanks for sharing you project! Welcome to the community!