Arduino Wireless Weather Station

Home/Arduino Projects/Arduino Wireless Weather Station

Arduino Wireless Weather Station

Arduino Wireless Weather Station Project

In this video we build an Arduino Wireless Weather Station using the fast and powerful 32bit Arduino Due board. We measure the temperature and the humidity with a couple of DHT22 sensors and we communicate with the remote sensor using the 2.4GHz NRF24L01+ module. Let’s see how to build this project!

Today’s project is this. A Wireless Weather Station with a big 3.2” Color TFT display. As you can see, the project is up and running, and it displays the current date and time, the indoor temperature and humidity, and the outdoor temperature and humidity. The readings of the outdoor sensor are updated every second in order to demonstrate that we have a reliable communication link established with the transmitter which is outside at a distance of 5m. The readings of the indoor sensor are updated once every minute. The heart of the project is the fast Arduino Due, and as you can see there is no flickering of the screen when the values are updated. Let’s now see the transmitter.

The transmitter is much simpler. It consists of an Arduino Nano, a DHT22 sensor and the NRF24L01 wireless transceiver module. The transmitter reads the temperature and the humidity every second, and sends them to the receiver via the NRF24L01 module. This is a one way communication link, we don’t know if the receiver actually receives the data, but we send new data every second, so in case we miss a package we are going to receive another one soon. Let’s now see how to build this project.

The parts needed for the Arduino Wireless Weather Station project are these:

——————–
WHERE TO BUY
——————–

Arduino Due: http://bit.ly/ArduinoDUE

Arduino Mega: http://bit.ly/ArduinoMega

Arduino Nano: http://bit.ly/CheapArduinoNano

3.2″ TFT display: http://bit.ly/32COLORTFT

DHT22: http://bit.ly/DHT_22

NRF24L01: http://bit.ly/NRF24L01B

DS3231 RTC: http://bit.ly/Ds3231

Breadboard: http://bit.ly/SmallBreadboard

Wires: http://bit.ly/Wires3InOne

Header Pins: http://bit.ly/HeaderPinsB

Xiaomi Powerbank: http://bit.ly/PowerBank_XiaoMi

Full disclosure: All of the links above are affiliate links. I get a small percentage of each sale they generate. Thank you for your support!

The cost of the project is around 40$. You can lower the cost of the project by 5$ if you use the Arduino Mega instead of the Arduino Due. I haven’t tested it, but it should work fine as well but it will be much slower.

Let’s now connect all the parts together. Before we start I highly recommend you to watch a couple of videos before attempting to build this project. That’s a difficult project for beginners, there are many things that can go wrong, so it requires some experience. That’s the reason I encourage you to build the projects shown in these videos first. Just click on the card here to watch them.

Let’s first build the transmitter. It is very simple. We connect the output pin of the sensor to digital pin 4 of the Arduino Nano. We connect the Ground and Vcc and we are ready. All we have to do now is to connect the NRF24L01 wireless module. Please watch the NRF24L01 tutorial I have prepared in order to see how to connect it.

——————–

LIBRARIES
——————–

DISPLAY: https://github.com/Bodmer/TFT_HX8357_Due
NRF24L01: https://github.com/TMRh20/RF24
DHT22: https://github.com/adafruit/DHT-sensor-library
DS3231: https://github.com/SodaqMoja/Sodaq_DS3231

The transmitter code is very simple. It is almost identical with the code of the NRF24L01 tutorial. The only thing that it has changed is that we now send real data that we get from the DHT22 sensor. Please, be sure to use the correct library for the NRF24L01 module. You can find a link for it in the description of the video.

Let’s now see the receiver code for the Arduino Wireless Weather Station. We need 4 libraries. I now use a different library for the display which works great! You can download it from a link that can be found in the description of the video. After downloading the library you have to open the User_Setup.h file comment line 13 and uncomment line 14 because the display we have is using the HX8357C driver.  Now we can continue with the 3 other libraries. We need one library for the Real Time clock, one for the DHT22 sensor and lastly one for the Wireless module.

——————–

CODE OF THE PROJECT
——————–

Download

 

 

 

SUBSCRIBE ON YOUTUBE

——————–

Never miss a video: Subscribe to educ8s.tv[

2017-03-30T12:23:27+00:00

16 Comments

  1. Mike August 19, 2016 at 6:25 am - Reply

    Hi , thank you for sharing this project, I am fairly new to arduino and was looking for a way to send data from the dht22 wirelessly to an arduino uno using nRF24L01+ modules and your code was the closest I could get to the components and the librarys I am using I had to make changes to the code to make it work for me, what I would like to know is how to change from Celcius to Fahrenheit? I would be grateful if you could let me know.

  2. Wim October 12, 2016 at 5:42 pm - Reply

    Hello

    WARNING: library TFT HX8357 Due claiming to working with architecture [sam] and may be incompatible with your current board working under architecture [avr].

    What can i do ??

    • Nilo January 14, 2017 at 12:30 pm - Reply

      Same problem here. Did u get it to work? and how?

  3. Aditya Patil October 19, 2016 at 5:24 pm - Reply

    can you help me with sending heart rate sensor data and temperature sensor data using nrf24l01 modules and display on lcd screen
    using arduino uno and mega 2560
    please help me and send me codings to
    adityabeast3110@gmail.com

  4. Michael November 8, 2016 at 10:14 am - Reply

    Grate Grate project
    I’m doing something similar.
    I have Arduino pro mini with 1c2 oled display + Nrf24l01 and a x&y joystick.
    The main unit is an Arduino mega with a Nrf24l01+ dht22, ds3231, 8 relay module.+sd card (for logging)
    I’m reading the humidity and temperatures and displaying them on the remote screen.
    I would like to know how to make a menu system on the remote
    Say
    Main =display current temps
    Menu 1 turn on/off relay 1
    Menu 2 turn on/off relay 2
    And so on.
    Thanks in advance.
    Michael

  5. Sami November 20, 2016 at 1:19 am - Reply

    I got this working!, thank you very much for the amazing project tutorial. I just did not understand how we are controlling the Indoor sensor to read only every one minute?

    • Nick November 20, 2016 at 10:11 am - Reply

      Hello Sami, thanks for the comment.

      With this line of code: “if(minuteNow!=minutePrevious)” we check it the time has changed in order to print the time. Before printing the time we read the sensor as well

  6. Jon November 24, 2016 at 3:01 am - Reply

    This is a great project and you are a great teacher!

    I almost have this finished; I am having trouble with the remote showing on the screen but will recheck all the connections and such next.

    I cannot get the clock to show minutes on the screen. The line shows:

    Wednesday 24/11/2016 18:

    This is all, the minutes never show up and the clock is keeping time as I see the hour just changed to 19, as it should.

    This is my first project and I am loving all that I’m learning! Can you please help me with the minute error?

    Thank you.

    • Nick November 24, 2016 at 8:22 am - Reply

      Maybe the date string is too long. Try to remove the 2016 and see what happens.

    • Sami November 27, 2016 at 6:13 pm - Reply

      Jon,

      Same thing happened to me when I was building it, I just shortened the day names to Mon,Tue,Wed… instead of Monday,Tuesday, Wednesday and such. worked perfect.

      Sami

  7. Jon November 24, 2016 at 5:16 pm - Reply

    Good suggestion, I will try that soon. However, I don’t think that is the solution as I already changed the font size down to 1 and I had the same display error, only smaller.

    Thanks again, great great project and learning going on.

  8. Randy January 6, 2017 at 6:50 am - Reply

    I have an inverted screen, that being the text is upside down and backwards (mirror). Any suggestions? I also only have about 3/4 of the screen in use for some strange reason.

  9. masterkey January 9, 2017 at 9:12 am - Reply

    Hello,

    thank you for providing this great project. I built it and it works fine. Now I want to upgrade it with an carbon dioxid sensor and want to bring the data into internet to ThingSpeak.
    For the carbon dioxid sensor I found the MQ138.
    For the internet-Connection I think a WIFI-module like the ESP8266 would be great. And there I have the first problem. How can I connect this module to this weatherstation project? On this page I found a circuit diagram:
    http://arduino-er.blogspot.de/2015/04/connect-esp8266-wifi-module-to-arduino.html
    The problem is that the Due Pin 53 is blocked by the TFT display. Does anybody know how I can solve this problem?

  10. Duane Jardine February 1, 2017 at 2:35 pm - Reply

    Hi I am also getting this error message, what can I do?
    “WARNING: library TFT_HX8357_Due-master claims to run on [sam] architecture(s) and may be incompatible with your current board which runs on [avr] architecture(s).”

  11. Glen Lewis February 15, 2017 at 9:15 am - Reply

    Thank you so much, I have watched a few of your videos. I have made this weather station…apart from the RTC as it has not arrived yet! This is the first project I have attempted, I am going to add Pressure sensor (BMP180) to display pressure, Altitude and Relative air density as I need these for my sport. As I learn C I will add more functions to data log and share to my network or Tablet (Cloud) and play with an HMI touch screen too:-)

    Thanks for all your work in sharing this knowledge, I’m very excited to start this new journey!!!

  12. pratik parmar April 9, 2017 at 7:31 pm - Reply

    i am getting the problem of printing NAN in the display can some one give salutation for this ??????

Leave A Comment

Close