#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#define MQ2_PIN 34
#define PIR_PIN 27
#define BUZZER 25
#define DHTPIN 4
#define DHTTYPE DHT22
Adafruit_MPU6050 mpu;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
pinMode(MQ2_PIN, INPUT);
pinMode(PIR_PIN, INPUT);
pinMode(BUZZER, OUTPUT);
dht.begin();
if (!mpu.begin()) {
Serial.println("MPU6050 not found");
while (1);
}
Serial.println("Driver Monitoring System Started");
}
void loop() {
// MQ2 Gas Sensor
int gas = analogRead(MQ2_PIN);
Serial.print("Gas: ");
Serial.println(gas);
if (gas > 2000) {
Serial.println("Alcohol Detected!");
digitalWrite(BUZZER, HIGH);
delay(1000);
digitalWrite(BUZZER, LOW);
}
// PIR Sensor
int motion = digitalRead(PIR_PIN);
if (motion == HIGH) {
Serial.println("Driver Present");
} else {
Serial.println("No Driver!");
digitalWrite(BUZZER, HIGH);
delay(1000);
digitalWrite(BUZZER, LOW);
}
// DHT22
float temp = dht.readTemperature();
Serial.print("Temp: ");
Serial.println(temp);
if (temp > 40) {
Serial.println("High Temperature!");
digitalWrite(BUZZER, HIGH);
delay(1000);
digitalWrite(BUZZER, LOW);
}
// MPU6050
sensors_event_t a, g, temp2;
mpu.getEvent(&a, &g, &temp2);
Serial.print("Accel X: ");
Serial.println(a.acceleration.x);
if (abs(a.acceleration.x) < 0.5) {
Serial.println("No Movement - Driver inactive");
digitalWrite(BUZZER, HIGH);
delay(1000);
digitalWrite(BUZZER, LOW);
}
delay(2000);
}