ESP32C3 Weather Station with BMP180, AHT10, and DHT11 Sensors
View and Edit Project In Cirkit Designer
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
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
AHT10
- Description: A temperature and humidity sensor.
- Pins: Vcc, Gnd, SCL, SDA
BMP180
- Description: A barometric pressure sensor.
- Pins: 3.3, SDA, SCL, GND, VCC
KY-015 DHT11 Temperature-Humidity sensor module
- Description: A basic temperature and humidity sensor.
- Pins: VCC, GND, DOUT
Wiring Details
ESP32C3 Supermini
- GPIO05: Connected to KY-015 DHT11 Temperature-Humidity sensor module (DOUT)
- GPIO08: Connected to AHT10 (SDA) and BMP180 (SDA)
- GPIO09: Connected to AHT10 (SCL) and BMP180 (SCL)
- 3.3V: Connected to AHT10 (Vcc) and BMP180 (VCC)
- GND: Connected to AHT10 (Gnd), KY-015 DHT11 Temperature-Humidity sensor module (GND), and BMP180 (GND)
- +5V: Connected to KY-015 DHT11 Temperature-Humidity sensor module (VCC)
AHT10
- Vcc: Connected to ESP32C3 Supermini (3.3V)
- Gnd: Connected to ESP32C3 Supermini (GND)
- SCL: Connected to ESP32C3 Supermini (GPIO09)
- SDA: Connected to ESP32C3 Supermini (GPIO08)
BMP180
- VCC: Connected to ESP32C3 Supermini (3.3V)
- GND: Connected to ESP32C3 Supermini (GND)
- SCL: Connected to ESP32C3 Supermini (GPIO09)
- SDA: Connected to ESP32C3 Supermini (GPIO08)
KY-015 DHT11 Temperature-Humidity sensor module
- VCC: Connected to ESP32C3 Supermini (+5V)
- GND: Connected to ESP32C3 Supermini (GND)
- DOUT: Connected to ESP32C3 Supermini (GPIO05)
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.