| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- ESP32 Weather Station Project Information
- ==========================================
- Project Overview:
- -----------------
- This is a comprehensive weather monitoring system built on ESP32 microcontroller
- with multiple environmental sensors and MQTT connectivity for IoT integration.
- Hardware Components:
- -------------------
- - ESP32 Development Board (main controller)
- - DHT11 Temperature & Humidity Sensor
- - BMP180 Atmospheric Pressure Sensor
- - Rain Sensor Module (analog)
- - LDR (Light Dependent Resistor)
- - 16x2 I2C LCD Display
- - LED (Status Indicator for light detection)
- - Breadboard and Jumper Wires
- Pin Configuration:
- ------------------
- - DHT11 Sensor: Pin 4
- - LDR Sensor: Pin 35 (input only pin)
- - Rain Sensor: Pin 34 (analog pin)
- - Status LED: Pin 2
- - I2C LCD (SDA): Pin 21
- - I2C LCD (SCL): Pin 22
- Software Features:
- -----------------
- - Real-time sensor data collection with timed intervals
- - Temperature, humidity, pressure, rain, and light monitoring
- - Live LCD display of weather data
- - WiFi connectivity for network access
- - MQTT client for data publishing
- - Automatic MQTT reconnection with random client ID
- - JSON data format for MQTT messages
- - Error handling and status indication
- - Serial output for debugging (115200 baud)
- - LED status indicator synchronized with LDR readings
- Code Structure:
- --------------
- - Modular sensor reading functions
- - Structured WeatherData for data management
- - Non-blocking timer-based operations
- - Automatic WiFi connection with timeout
- - MQTT client with reconnection logic
- - LCD display formatting and error messages
- MQTT Configuration:
- ------------------
- - Broker: Configurable server address
- - Port: 1883 (default)
- - Topic: weather/station (configurable)
- - Data Format: JSON
- - Client ID: Auto-generated (ESP32WeatherStation-XXXX)
- - Authentication: None (configurable)
- Sensor Reading Schedule:
- ------------------------
- - All sensors read: Every 2 seconds (2000ms)
- - MQTT data published: Every 30 seconds (30000ms)
- - LCD display updated: Every 2 seconds
- - LED status: Updated with each sensor read
- - Serial output: With each sensor reading
- Technical Specifications:
- ------------------------
- - Microcontroller: ESP32 (Dual Core, 240MHz)
- - Memory: 520KB SRAM, 4MB Flash
- - Wireless: WiFi 802.11 b/g/n
- - Sensors: DHT11 (±2°C, ±5%RH), BMP180 (±1hPa), Rain sensor, LDR
- - Display: 16x2 Character LCD with I2C interface (0x27)
- - Power: 5V via USB or external supply
- - Communication: I2C, WiFi, MQTT
- Development Environment:
- ----------------------
- - PlatformIO with ESP32 framework
- - Arduino IDE compatible
- - Libraries: DHT, LiquidCrystal_I2C, SFE_BMP180, PubSubClient
- MQTT Data Format:
- -----------------
- ```json
- {
- "temperature": 23.45,
- "humidity": 67.89,
- "pressure": 1013.25,
- "rainLevel": 15,
- "lightDetected": true
- }
- ```
- LCD Display Format:
- ------------------
- Line 1: "T:23.4C H:67%"
- Line 2: "R:15% P:1013"
- Serial Output Format:
- -------------------
- "Temp: 23.45°C, Humidity: 67.89%, Rain: 15%, Pressure: 1013.25 hPa, Light: YES"
- Installation Instructions:
- ------------------------
- 1. Connect hardware according to pin configuration
- 2. Set up MQTT broker (Mosquitto, HiveMQ, AWS IoT, etc.)
- 3. Update WiFi credentials (ssid, password) in sketch
- 4. Update MQTT broker settings (mqtt_server, mqtt_port, mqtt_topic)
- 5. Upload firmware using PlatformIO or Arduino IDE
- 6. Monitor serial output at 115200 baud rate
- 7. Subscribe to MQTT topic to receive weather data
- MQTT Broker Setup:
- -----------------
- 1. Install Mosquitto broker or use cloud service
- 2. Configure broker for client connections on port 1883
- 3. Create topic structure: weather/station (or custom)
- 4. Test broker connectivity with MQTT client tools
- 5. Configure firewall if using local broker
- 6. Verify broker allows anonymous connections or add auth
- Troubleshooting:
- ---------------
- - Check wiring connections if sensors return errors
- - Verify WiFi credentials if connection fails
- - Ensure MQTT broker is accessible and running
- - Check MQTT broker address and port
- - Verify topic permissions on broker
- - Check I2C address (default 0x27) for LCD
- - Use external power supply if sensors are unstable
- - Check analog pin assignments for rain sensor (Pin 34)
- - Monitor serial output for detailed error messages
- - Verify BMP180 sensor initialization
- - Check DHT11 sensor readings for NaN values
- Code Constants and Variables:
- ----------------------------
- - sensorInterval: 2000ms (sensor reading frequency)
- - mqttInterval: 30000ms (MQTT publish frequency)
- - WiFi connection attempts: 20 (10 seconds total)
- - MQTT reconnection delay: 5 seconds
- - Rain sensor mapping: 0-4095 to 0-100% (inverted)
- - LDR reading: Digital (HIGH/LOW)
- - Pressure oversampling: 3 (BMP180)
- Project Status:
- --------------
- Version: 3.0.0 (MQTT Edition)
- Last Updated: May 2026
- Author: Weather Station Team
- License: Open Source
- Additional Notes:
- ---------------
- - MQTT provides flexible IoT integration options
- - JSON format allows easy data processing and parsing
- - Rain sensor values are inverted and mapped to percentage (0-100%)
- - LDR provides digital light detection (HIGH=light detected, LOW=no light)
- - LED indicates light detection status (ON when light detected)
- - LCD shows formatted sensor data locally with error messages
- - System requires WiFi connection for MQTT functionality
- - Automatic reconnection ensures reliable data transmission
- - All sensor data available via MQTT subscription
- - Non-blocking code design prevents system hangs
- - Modular structure allows easy sensor additions
|