Arduino-Based Weather Station with LCD Display and Data Logging
View and Edit Project In Cirkit Designer
Circuit Documentation
Summary
This circuit involves two Arduino UNO microcontrollers interfacing with various sensors and modules, including a BMP180 barometric pressure sensor, a DHT22 temperature and humidity sensor, a 16x2 I2C LCD, a Micro SD Card Module, a Micro Servo 9G, a rain sensor, a buzzer, and two LEDs (green and red). The circuit is designed to read environmental data, display it on an LCD, log it to an SD card, and provide visual and auditory alerts based on certain conditions.
Component List
Arduino UNO
- Description: Microcontroller board based on the ATmega328P.
- Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0, A1, A2, A3, A4, A5, SCL, SDA, AREF, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0
DHT22
- Description: Temperature and humidity sensor.
- Pins: +, Out, -
16x2 I2C LCD
- Description: 16x2 character LCD with I2C interface.
- Pins: GND, VCC, SDA, SCL
BMP180
- Description: Barometric pressure sensor.
- Pins: 3.3, SDA, SCL, GND, VCC
RAIN SENSOR
- Description: Rain detection sensor.
- Pins: AO, DO, GRD, VCC
Micro Servo 9G
- Description: Small servo motor.
- Pins: GND, +5V, PWM
Micro SD Card Module
- Description: Module for interfacing with SD cards.
- Pins: cs, sck, mosi, miso, vcc, gnd
Buzzer
- Description: Simple piezoelectric buzzer.
- Pins: +, GND
LED: Two Pin (green)
- Description: Green LED.
- Pins: cathode, anode
LED: Two Pin (red)
- Description: Red LED.
- Pins: cathode, anode
Resistor
- Description: 10k Ohm resistor.
- Pins: pin1, pin2
- Properties: Resistance: 10000 Ohms
DC Motor
- Description: Direct current motor.
- Pins: pin 1, pin 2
Wiring Details
Arduino UNO (1)
- A5: Connected to BMP180 (SCL), 16x2 I2C LCD (SCL)
- D13: Connected to Micro SD Card Module (sck)
- D12: Connected to Micro SD Card Module (miso)
- D11: Connected to Micro SD Card Module (mosi)
- D10: Connected to Micro SD Card Module (cs)
- D9: Connected to LED: Two Pin (red) (anode)
- D8: Connected to Buzzer (+)
- D7: Connected to DHT22 (Out)
- D6: Connected to LED: Two Pin (green) (anode)
- D5: Connected to Micro Servo 9G (PWM)
- D3: Connected to DC Motor (pin 1)
- 5V: Connected to 16x2 I2C LCD (VCC), BMP180 (VCC), DHT22 (+), Micro SD Card Module (vcc), Micro Servo 9G (+5V), RAIN SENSOR (VCC)
- GND: Connected to Resistor (pin1), 16x2 I2C LCD (GND), BMP180 (GND), Buzzer (GND), Micro SD Card Module (gnd), DC Motor (pin 2), RAIN SENSOR (GRD), DHT22 (-), Micro Servo 9G (GND)
Arduino UNO (2)
- A4: Connected to BMP180 (SDA), 16x2 I2C LCD (SDA)
- D4: Connected to RAIN SENSOR (AO)
DHT22
- +: Connected to Arduino UNO (1) (5V)
- Out: Connected to Arduino UNO (1) (D7)
- -: Connected to Arduino UNO (1) (GND)
16x2 I2C LCD
- GND: Connected to Arduino UNO (1) (GND)
- VCC: Connected to Arduino UNO (1) (5V)
- SDA: Connected to Arduino UNO (2) (A4)
- SCL: Connected to Arduino UNO (1) (A5)
BMP180
- 3.3: Not connected
- SDA: Connected to Arduino UNO (2) (A4)
- SCL: Connected to Arduino UNO (1) (A5)
- GND: Connected to Arduino UNO (1) (GND)
- VCC: Connected to Arduino UNO (1) (5V)
RAIN SENSOR
- AO: Connected to Arduino UNO (2) (D4)
- DO: Not connected
- GRD: Connected to Arduino UNO (1) (GND)
- VCC: Connected to Arduino UNO (1) (5V)
Micro Servo 9G
- GND: Connected to Arduino UNO (1) (GND)
- +5V: Connected to Arduino UNO (1) (5V)
- PWM: Connected to Arduino UNO (1) (D5)
Micro SD Card Module
- cs: Connected to Arduino UNO (1) (D10)
- sck: Connected to Arduino UNO (1) (D13)
- mosi: Connected to Arduino UNO (1) (D11)
- miso: Connected to Arduino UNO (1) (D12)
- vcc: Connected to Arduino UNO (1) (5V)
- gnd: Connected to Arduino UNO (1) (GND)
Buzzer
- +: Connected to Arduino UNO (1) (D8)
- GND: Connected to Arduino UNO (1) (GND)
LED: Two Pin (green)
- cathode: Connected to Resistor (pin2)
- anode: Connected to Arduino UNO (1) (D6)
LED: Two Pin (red)
- cathode: Connected to Resistor (pin2)
- anode: Connected to Arduino UNO (1) (D9)
Resistor (1)
- pin1: Connected to Arduino UNO (1) (GND)
- pin2: Connected to LED: Two Pin (red) (cathode)
Resistor (2)
- pin1: Connected to Arduino UNO (1) (GND)
- pin2: Connected to LED: Two Pin (green) (cathode)
DC Motor
- pin 1: Connected to Arduino UNO (1) (D3)
- pin 2: Connected to Arduino UNO (1) (GND)
Documented Code
Arduino UNO (1)
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <DHT.h>
#include <SD.h>
// BMP180 Sensor Initialization
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(180); // '180' is just an ID for the sensor
// LCD Initialization
LiquidCrystal_I2C lcd(0x27, 16, 2); // 16x2 LCD at address 0x27
#define CS_PIN 10 // chip select pin for SD Module
// DHT Sensor Initialization
#define DHTPIN 7 // Pin connected to the DHT sensor
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Servo Initialization
Servo tap_servo;
// Sensor and Servo Pins
int sensor_pin = 4; // Digital input sensor pin
int tap_servo_pin = 5; // Servo control pin
// Variables
int val; // Digital sensor reading
float h; // Humidity
float dht_temp; // Temperature from DHT22
float bmp_temp; // Temperature from BMP180
float pressure; // Pressure
float altitude; // Altitude
// Pin Definitions for Buzzer and LEDs
#define BUZZER_PIN 8 // Buzzer connected to pin 8
#define GREEN_LED_PIN 9 // Green LED connected to pin 9
#define RED_LED_PIN 6 // Red LED connected to pin 6
void setup() {
// Serial Monitor Initialization
Serial.begin(9600);
Serial.println("