Introduction: Portable Arduino Uno Temperature and Humidity Sensor With LCD Screen

About: Guy in his 30's who has always had an interest in building things since a kid. I build hardware durning the summer and software durning the winter. I know a lot about a little and a little about a lot. The who…

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--

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)