Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

ESP32C3 Weather Station with BMP180, AHT10, and DHT11 Sensors

View and Edit Project In Cirkit DesignerImage of ESP32C3 Weather Station with BMP180, AHT10, and DHT11 Sensors

Circuit Documentation

Summary

This circuit is designed to interface an ESP32C3 microcontroller with three sensors: AHT10, BMP180, and KY-015 DHT11. The ESP32C3 reads temperature, humidity, and pressure data from these sensors and outputs the data to the serial port.

Component List

  1. ESP32C3 Supermini

    • Description: A powerful microcontroller with Wi-Fi and Bluetooth capabilities.
    • Pins: GPIO05, GPIO06, GPIO07, GPIO08, GPIO09, GPIO10, GPIO20, GPIO21, GPIO00, GPIO01, GPIO02, GPIO03, GPIO04, 3.3V, GND, +5V
  2. AHT10

    • Description: A temperature and humidity sensor.
    • Pins: Vcc, Gnd, SCL, SDA
  3. BMP180

    • Description: A barometric pressure sensor.
    • Pins: 3.3, SDA, SCL, GND, VCC
  4. KY-015 DHT11 Temperature-Humidity sensor module

    • Description: A basic temperature and humidity sensor.
    • Pins: VCC, GND, DOUT

Wiring Details

ESP32C3 Supermini

AHT10

BMP180

KY-015 DHT11 Temperature-Humidity sensor module

Code Documentation

/*
 * This Arduino Sketch initializes BMP180, AHT10, and KY-015 DHT11 sensors.
 * It reads temperature, humidity, and pressure data from these sensors and
 * outputs the data to the serial port.
 */

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#include <DHT.h>
#include <DHT_U.h>
#include <AHT10.h>

#define DHTPIN 5
#define DHTTYPE DHT11
#define AHT10_SDA 8
#define AHT10_SCL 9

DHT dht(DHTPIN, DHTTYPE);
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
AHT10 aht10(AHT10_SDA, AHT10_SCL);

void setup() {
  Serial.begin(9600);
  Wire.begin();

  if (!bmp.begin()) {
    Serial.print("Could not find a valid BMP180 sensor, check wiring!");
    while (1);
  }

  dht.begin();
  aht10.begin();
}

void loop() {
  sensors_event_t event;
  bmp.getEvent(&event);

  if (event.pressure) {
    Serial.print("Pressure: ");
    Serial.print(event.pressure);
    Serial.println(" hPa");
  }

  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Failed to read from DHT sensor!");
  } else {
    Serial.print("DHT Temperature: ");
    Serial.print(temperature);
    Serial.println(" *C");
    Serial.print("DHT Humidity: ");
    Serial.print(humidity);
    Serial.println(" %");
  }

  temperature = aht10.readTemperature();
  humidity = aht10.readHumidity();

  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Failed to read from AHT10 sensor!");
  } else {
    Serial.print("AHT10 Temperature: ");
    Serial.print(temperature);
    Serial.println(" *C");
    Serial.print("AHT10 Humidity: ");
    Serial.print(humidity);
    Serial.println(" %");
  }

  delay(2000);
}

This code initializes the BMP180, AHT10, and KY-015 DHT11 sensors, reads temperature, humidity, and pressure data from these sensors, and outputs the data to the serial port.