top of page
Writer's pictureSanskruti Ashtikar

Building a Real-Time Weather Station Using TinkerCAD and Arduino

Updated: Nov 23

Introduction


Creating a weather station is an excellent project for understanding how sensors work and how to integrate various components with Arduino. A real-time weather station can monitor environmental parameters such as temperature, humidity, and atmospheric pressure. In this tutorial, we will guide you through building a basic weather station using TinkerCAD, an Arduino, and a few sensors. This project will help you learn how to read sensor data and display it in real-time.





Materials Needed


To build this project in TinkerCAD, you will need the following components:

  • Arduino Uno

  • Breadboard

  • DHT11 Temperature and Humidity Sensor

  • BMP180 Barometric Pressure Sensor

  • LCD Display (16x2)

  • Jumper Wires

  • Resistors (220Ω for LCD)


Step 1: Setting Up the Components


  1. Arduino and Breadboard: Open TinkerCAD and create a new circuit project. Drag and drop an Arduino Uno and a breadboard onto the workspace.

  2. DHT11 Sensor: This sensor measures temperature and humidity. It has three pins:

    • VCC: Connect to the 5V pin on the Arduino.

    • GND: Connect to GND on the Arduino.

    • DATA: Connect to digital pin 2 on the Arduino.

  3. BMP180 Sensor: This sensor measures atmospheric pressure. It has four pins:

    • VCC: Connect to the 5V pin on the Arduino.

    • GND: Connect to GND on the Arduino.

    • SDA: Connect to analog pin A4 on the Arduino.

    • SCL: Connect to analog pin A5 on the Arduino.

  4. LCD Display (16x2): The LCD will display the temperature, humidity, and pressure readings. Connect the LCD as follows:

    • VSS: Connect to GND on Arduino.

    • VDD: Connect to 5V on Arduino.

    • VO: Connect to a potentiometer for contrast adjustment (not included in TinkerCAD, use a fixed resistor if not available).

    • RS: Connect to digital pin 12 on Arduino.

    • RW: Connect to GND on Arduino.

    • EN: Connect to digital pin 11 on Arduino.

    • D0-D3: Connect to GND on Arduino.

    • D4-D7: Connect to digital pins 10, 9, 8, and 7 on Arduino respectively.

    • A: Connect to 5V on Arduino (backlight).

    • K: Connect to GND on Arduino (backlight).


Step 2: Wiring Diagram


Ensure your wiring looks like this:

  • DHT11 Sensor:

    • VCC → 5V on Arduino

    • GND → GND on Arduino

    • DATA → Digital Pin 2 on Arduino

  • BMP180 Sensor:

    • VCC → 5V on Arduino

    • GND → GND on Arduino

    • SDA → A4 on Arduino

    • SCL → A5 on Arduino

  • LCD Display (16x2):

    • VSS → GND on Arduino

    • VDD → 5V on Arduino

    • VO → (Fixed resistor or potentiometer, not available in TinkerCAD)

    • RS → Digital Pin 12 on Arduino

    • RW → GND on Arduino

    • EN → Digital Pin 11 on Arduino

    • D0-D3 → GND on Arduino

    • D4 → Digital Pin 10 on Arduino

    • D5 → Digital Pin 9 on Arduino

    • D6 → Digital Pin 8 on Arduino

    • D7 → Digital Pin 7 on Arduino

    • A → 5V on Arduino

    • K → GND on Arduino





Step 3: Writing the Code


With the components connected, let’s write the Arduino code to read sensor data and display it on the LCD.


#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#include <DHT.h>
#include <LiquidCrystal.h>
// LCD Pins
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
// DHT11 Sensor Pins
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// BMP180 Sensor
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified();
void setup() {
  lcd.begin(16, 2);  // Initialize the LCD
  dht.begin();       // Initialize the DHT11 sensor
  if (!bmp.begin()) {
    lcd.print("BMP180 not found");
    while (1);
  }
  lcd.print("Weather Station");
  delay(2000);
}
void loop() {
  // Read temperature and humidity
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  
  // Read pressure
  sensors_event_t event;
  bmp.getEvent(&event);
  float pressure = event.pressure;


  // Display data on LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print(" C");
  lcd.setCursor(0, 1);
  lcd.print("Hum: ");
  lcd.print(humidity);
  lcd.print(" % ");
  lcd.setCursor(8, 1);
  lcd.print("Pres: ");
  lcd.print(pressure);
  lcd.print(" hPa");
  
  delay(2000); // Update every 2 seconds
}

Step 4: Simulating the Circuit


  1. After entering the code, click the "Start Simulation" button in TinkerCAD.

  2. The LCD will display real-time readings from the DHT11 and BMP180 sensors. The temperature, humidity, and pressure will be shown on the screen, updating every 2 seconds.


Step 5: Understanding the Code


  • Library Inclusions: The Wire.h and Adafruit_BMP085_U.h libraries handle communication with the BMP180 sensor. The DHT.h library manages the DHT11 sensor. The LiquidCrystal.h library controls the LCD display.

  • Sensor Initialization: The dht.begin() and bmp.begin() functions initialize the sensors. If the BMP180 sensor is not found, the LCD displays an error message.

  • Reading Sensor Data: The code reads temperature and humidity from the DHT11 sensor and pressure from the BMP180 sensor.

  • LCD Display: The lcd.print() function displays the sensor readings on the LCD screen. The lcd.clear() function updates the display every 2 seconds.





Step 6: Enhancing the System


This basic weather station can be expanded with additional features:

  • Real-Time Clock (RTC): Integrate an RTC module to display the current time and date alongside weather data.

  • Data Logging: Use an SD card module to log weather data over time for analysis.

  • Wireless Communication: Add a Wi-Fi or Bluetooth module to send weather data to a remote server or smartphone app.


Conclusion


You have successfully created a Real-Time Weather Station using TinkerCAD and Arduino. This project demonstrates how to integrate multiple sensors and display real-time data on an LCD, providing a practical introduction to environmental monitoring and sensor integration.

By following this guide, you’ve gained experience with temperature, humidity, and pressure sensors, as well as working with an LCD display. This foundational knowledge can be applied to various projects, from advanced weather stations to IoT applications.


Want us to guide you through your project or make the project for you ?







Create Various Projects

Check out our Free Arduino Projects Playlist - Arduino Projects 

Check out our Free Raspberry Pi Projects Playlist - Raspberry Pi Projects 

Check out our Free TinkerCAD Projects Playlist - TinkerCAD Projects 

Check out our Free IoT Projects Playlist - IoT Projects 

Check out our Free Home Automation Projects Playlist - Home Automation Projects 

Check out our Free NodeMCu Projects Playlist - NodeMCu Projects 



37 views0 comments

Related Posts

See All

Comments