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

Arduino Uno and BME680 Sensor-Based Environmental Monitoring System

View and Edit Project In Cirkit DesignerImage of Arduino Uno and BME680 Sensor-Based Environmental Monitoring System

Circuit Documentation

Summary

This circuit involves an Arduino Uno R3 microcontroller interfaced with a BME680 environmental sensor. The Arduino Uno reads temperature, pressure, humidity, and gas resistance data from the BME680 sensor and prints the data to the Serial Monitor every 2 seconds.

Component List

Arduino Uno R3

BME680

Wiring Details

Arduino Uno R3

BME680

Code Documentation

Arduino Uno R3 Code

#include <Adafruit_BME680.h>
#include <bme68x.h>
#include <bme68x_defs.h>
/*
 * Arduino with BME680 Sensor using SoftWire library
 * This sketch initializes the BME680 sensor and reads temperature,
 * pressure, humidity, and gas resistance data. The data is printed
 * to the Serial Monitor every 2 seconds.
 */

#include <SoftWire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME680.h>

// Create an instance of the sensor
Adafruit_BME680 bme;
SoftWire myWire(A4, A5); // Define SoftWire with SDA on A4 and SCL on A5

void setup() {
  Serial.begin(115200);
  while (!Serial);
  
  myWire.begin(); // Initialize SoftWire
  bme.setI2C(&myWire); // Set SoftWire for BME680
  
  if (!bme.begin()) {
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }

  // Set up oversampling and filter initialization
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320*C for 150 ms
}

void loop() {
  // Perform a reading
  if (!bme.performReading()) {
    Serial.println("Failed to perform reading :(");
    return;
  }

  // Print sensor data
  Serial.print("Temperature = ");
  Serial.print(bme.temperature);
  Serial.println(" *C");

  Serial.print("Pressure = ");
  Serial.print(bme.pressure / 100.0);
  Serial.println(" hPa");

  Serial.print("Humidity = ");
  Serial.print(bme.humidity);
  Serial.println(" %");

  Serial.print("Gas = ");
  Serial.print(bme.gas_resistance / 1000.0);
  Serial.println(" KOhms");

  Serial.println();
  delay(2000);
}

BME680 Code

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

This documentation provides a comprehensive overview of the circuit, including a summary, detailed component list, wiring details, and the code used for the Arduino Uno R3 and BME680 sensor.