Introduction: Arduino Uno DHT11 LCD Weather Station DIY

This is DYI on how to make your Weather Station using Arduino Uno, DHT11 temperature and humidity sensor, LCD DFRobot 2x16 screen with keypad. Usually you can buy Arduino, DHT11 and LCD separately and since every device hs it's own libranry and example code I have not found code where DHT11 and LCD would be connected. Togeather with PS we have changed code so it shows temperature and humidity on lcd screen. It required some code work to join two examples into one. During the work itself - we decided to go with new code. Enjoy below as it works really well.

Step 1: Before You Start

1. Do buy ORIGINAL Arduino UNO R3. You can find info in References section of this webpage.2. Next thing you need is 2x16 LCD DFRobot screen with keypad. We won't be using keypad but it's possible to map some actions to buttons.3. Last thing you need is DHT11 temp and humidity sensor. There is DHT22 version of this one but have not tested it so it's up to you.4. Case ? - I used LEGO to make one. Daughter was not happy but managed to take few and build something that is enough for scope of this project :)


1. You have necessary tools to solder three wires to LCD shield.

Deliverables (from me):

1. Screenshot where solder three DHT11 pins to.2. Code of Arduino Station (example, used by me)


1. Download necessary libraries for DHT11 and LCD DFRobot (all links below in References section)2. Connect LCD shield to ARDUINO by pushing pins into sockets. Ensure all are in and stable.3. Time for some soldering.

Step 2: Soldering - Info and How to Connect "wires" ;)

 This is CRITICAL PART of whole job so pay 200% attention to it please. Mistake here - and it's fried. GND - Ground pin goes to GND socket on - LEFT BOTTOM PART OF BOARD (4th from left. First is RESET, Second 3.3V, Third is 5V. You are interested in 4th). Solder it to hole over there. It has been prepared for this. See Image for reference. - DATA PIN from DHT11 - goes to A0 on LCD DFRobot. It is located on BOTTOM RIGHT section (left part of it). Since there is no hole to solder to - solder it to existing element on board. A0 has been dedicated for keypad data. Since we're not using keypad - we will use this one. You can solder it to A1 as well but it requires modification in code from A0 to A1 (need to find it in code on your own - very simple though). - Last but not least - VCC pin from DHT11 should be soldered to 5V on LCD DFRobot. It's next to GND that we already had soldered before. Look at board and you can't miss it. There is hole for this so use it.

4. Ensure that soldering was clean and wires are not "touching" each other or any part on board. All should be stable and well connected. If not - loose cable can cause serious damage to whole device.

5.Once above is done and you have doublechecked it - connect Arduino UNO to USB, load code (see atached code in next step or e-mail me if something is wrong) and send it to device. (You do not know how to connect USB to your PC/Mac ? - go to Arduino webpage for tutorial. Links in next step).

6. Wait until it boots and you should see Arduino Station message as a welcome screen. After 10seconds you should see some blinking info (this was done mainly for LCD test purpose and you can change it if needed)

7. Once blinking is done - you should see Temp: and Humid: info WITH REAL DATA. There is no delay for REAL DATA. It should appear immediately with Temp and Humid info. Note that instead of Humidity you can get "Wilgotnosc" as this is PL version of code.

8. It refreshes every 60 seconds giving you info "Refresh" before new data is displayed.

9. I've used some LEGO to cover it and double-side tape to stick it to wall next to my ipad charger (works well :)

Step 3: Congratulations - It's All Done :)

That's it :) Comments and Questions here - Major changes to code, suggestions etc. - use above to share please :) See links below for more info and useful hints.
Code is attached.

Few links below: