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

Arduino UNO WiFi CO and Temperature Monitoring System with Bluetooth Connectivity

View and Edit Project In Cirkit DesignerImage of Arduino UNO WiFi CO and Temperature Monitoring System with Bluetooth Connectivity

Circuit Documentation

Summary

This circuit is designed to monitor environmental conditions using a DHT22 temperature and humidity sensor, an MQ-7 carbon monoxide (CO) sensor, and a Bluetooth HC-06 module for wireless communication. The Arduino UNO R4 WiFi microcontroller is used to read sensor data and transmit it via Bluetooth. The circuit also includes an LED to indicate alarm conditions based on CO levels.

Component List

  1. MQ-7 Breakout

    • Description: Carbon Monoxide (CO) sensor
    • Pins: VCC, GND, DO, AO
  2. Bluetooth HC-06

    • Description: Bluetooth module for wireless communication
    • Pins: VCC, GND, TXD, RXD
  3. Arduino UNO R4 WiFi

    • Description: Microcontroller board with WiFi capability
    • Pins: OFF, GND, VRTC, IIC0_SCL, IIC0_SDA, 3V3, GPIO 41, GPIO 0, GPIO 42, GPIO 43, GPIO 44, BOOT, IOREF, RESET, 5V, VIN, A0, A1, A2, A3, A4, A5, RSPCKA, CIPO, COPI, D0/RX, D1/TX, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, AREF, SDA, SCL
  4. DHT22

    • Description: Temperature and humidity sensor
    • Pins: GND, VCC, DAT

Wiring Details

MQ-7 Breakout

Bluetooth HC-06

Arduino UNO R4 WiFi

DHT22

Documented Code

Sketch Code

#include <DHT.h> // Add DHT library
#include <SoftwareSerial.h> // Add SoftwareSerial library

// Pin and sensor definitions
#define DHTPIN 2 // DHT22 sensor pin (D2)
#define DHTTYPE DHT22 // Use DHT22 sensor type

DHT dht(DHTPIN, DHTTYPE); // Create DHT sensor object

const int AOUTpin = A0; // Connect CO sensor AOUT pin to analog pin A0
const int DOUTpin = 8;  // Connect CO sensor DOUT pin to digital pin D8
const int ledPin = 13;  // Connect LED pin to digital pin D13

int limit;
int value;

// Define software serial pins for Bluetooth
const int BT_TX = 10; // Bluetooth TX pin
const int BT_RX = 11; // Bluetooth RX pin

SoftwareSerial bluetooth(BT_TX, BT_RX); // Create software serial object

void setup() {
  Serial.begin(9600); // Set the serial monitor communication speed
  bluetooth.begin(9600); // Set the Bluetooth communication speed
  dht.begin(); // Initialize DHT sensor
  pinMode(DOUTpin, INPUT); // Set DOUT pin as input mode
  pinMode(ledPin, OUTPUT); // Set LED pin as output mode
}

void loop() {
  // 1. Read CO sensor value
  value = analogRead(AOUTpin); // Read analog value from CO sensor
  limit = digitalRead(DOUTpin); // Read digital value from CO sensor

  // 2. Read temperature and humidity from DHT22
  float temperature = dht.readTemperature(); // Read temperature (Celsius)
  float temperatureF = (temperature * 9.0 / 5.0) + 32.0;
  float humidity = dht.readHumidity(); // Read humidity

  // 3. Output sensor data to Serial Monitor
  Serial.print("CO value: ");
  Serial.println(value); // Print CO sensor value

  Serial.print("Limit: ");
  Serial.println(limit); // Print digital limit value (LOW or HIGH)

  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" °F"); // Print temperature

  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.println(" %"); // Print humidity

  // 4. Output sensor data to Bluetooth
  bluetooth.print("CO value: ");
  bluetooth.println(value); // Print CO sensor value

  bluetooth.print("Limit: ");
  bluetooth.println(limit); // Print digital limit value (LOW or HIGH)

  bluetooth.print("Temperature: ");
  bluetooth.print(temperature);
  bluetooth.println(" °F"); // Print temperature

  bluetooth.print("Humidity: ");
  bluetooth.print(humidity);
  bluetooth.println(" %"); // Print humidity

  delay(1000); // Wait for 1 second

  // 5. Check CO sensor alarm
  if (limit == HIGH) {
    Serial.println("Alarm"); // Print alarm message if CO concentration exceeds the limit
    bluetooth.println("Alarm"); // Send alarm message via Bluetooth
    digitalWrite(ledPin, HIGH); // Turn on LED
  } else {
    Serial.println("OK"); // Print message if CO concentration does not exceed the limit
    bluetooth.println("OK"); // Send OK message via Bluetooth
    digitalWrite(ledPin, LOW); // Turn off LED
  }
}

Fire Detector Code

#include <DHT.h> // Add DHT library
#include <SoftwareSerial.h> // Add SoftwareSerial library

// Pin and sensor definitions
#define DHTPIN 2 // DHT22 sensor pin (D2)
#define DHTTYPE DHT22 // Use DHT22 sensor type

DHT dht(DHTPIN, DHTTYPE); // Create DHT sensor object

const int AOUTpin = A0; // Connect CO sensor AOUT pin to analog pin A0
const int DOUTpin = 8;  // Connect CO sensor DOUT pin to digital pin D8
const int ledPin = 13;  // Connect LED pin to digital pin D13

int limit;
int value;

// Define software serial pins for HC-06
const int BT_TX = 11; // Arduino TX to HC-06 RX
const int BT_RX = 10; // Arduino RX to HC-06 TX

SoftwareSerial bluetooth(BT_RX, BT_TX); // Create a SoftwareSerial object

void setup() {
  Serial.begin(9600); // Set the serial monitor communication speed
  bluetooth.begin(9600); // Set the Bluetooth communication speed
  dht.begin(); // Initialize DHT sensor
  pinMode(DOUTpin, INPUT); // Set DOUT pin as input mode
  pinMode(ledPin, OUTPUT); // Set LED pin as output mode
}

void loop() {
  // 1. Read CO sensor value
  value = analogRead(AOUTpin); // Read analog value from CO sensor
  limit = digitalRead(DOUTpin); // Read digital value from CO sensor

  // 2. Read temperature and humidity from DHT22
  float temperature = dht.readTemperature(); // Read temperature (Celsius)
  if (isnan(temperature)) {
    Serial.println("Failed to read temperature!");
    return; // Skip the rest of the loop if reading fails
  }
  float temperatureF = (temperature * 9.0 / 5.0) + 32.0;

  float humidity = dht.readHumidity(); // Read humidity
  if (isnan(humidity)) {
    Serial.println("Failed to read humidity!");
    return; // Skip the rest of the loop if reading fails
  }

  // 3. Output sensor data to Serial Monitor
  Serial.print("CO sensor analog value: ");
  Serial.println(value); // Print CO sensor value (analog reading)

  Serial.print("CO sensor limit (digital): ");
  Serial.println