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

Wi-Fi Connected Air Quality Monitor with Arduino UNO and ESP32

View and Edit Project In Cirkit DesignerImage of Wi-Fi Connected Air Quality Monitor with Arduino UNO and ESP32

Circuit Documentation

Summary

The circuit in question is designed to integrate an Arduino UNO with an ESP32 microcontroller, an MQ-3 alcohol sensor breakout, and a Tower Pro SG90 servo motor. The Arduino UNO serves as the primary microcontroller, interfacing with the sensor and the servo motor. The ESP32 is used for wireless communication capabilities, potentially to send sensor data to a remote server. The MQ-3 sensor detects alcohol levels, and the servo motor is likely used for some form of physical response or indication. The circuit is powered through the Arduino UNO's 5V and GND pins, which also provide power to the servo motor and the MQ-3 sensor.

Component List

Arduino UNO

ESP32 (30 pin)

MQ-3 Breakout

Tower Pro SG90 servo

Wiring Details

Arduino UNO

ESP32 (30 pin)

MQ-3 Breakout

Tower Pro SG90 servo

Documented Code

Arduino UNO Code

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

}

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

}

File: sketch.ino

ESP32 Code

#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "YourSSID"; // Your WiFi SSID
const char* password = "YourPassword"; // Your WiFi Password
const char* serverName = "YourServerURL"; // Remote server URL

void setup() {
  Serial.begin(115200); // Serial communication for ESP32
  Serial2.begin(115200, SERIAL_8N1, 16, 17); // Serial communication to Arduino (adjust pins if needed)

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("Connected to WiFi.");
}

void loop() {
  if (Serial2.available() > 0) {
    int sensorValue = Serial2.parseInt(); // Read sensor data from Arduino
    Serial.print("Received Sensor Value: ");
    Serial.println(sensorValue);

    if (WiFi.status() == WL_CONNECTED) {
      HTTPClient http;
      String url = String(serverName) + "?status=SensorData&value=" + String(sensorValue);
      http.begin(url.c_str());

      int httpResponseCode = http.GET();

      // Print response
      if (httpResponseCode > 0) {
        String response = http.getString();
        Serial.println("HTTP Response code: " + String(httpResponseCode));
        Serial.println("Server Response: " + response);
      } else {
        Serial.println("Error on HTTP request: " + String(httpResponseCode));
      }

      http.end();
    } else {
      Serial.println("WiFi Disconnected");
    }

    delay(2000); // Delay to avoid overwhelming requests
  }
}

File: sketch.ino