Introduction:
Mining is one of the most dangerous industries in the world. Workers face risks such as the release of toxic gases, landslides, and poor ventilation. Traditional helmets offer limited protection and do not provide real-time alerts. A smart safety helmet enhances miner safety by incorporating technology. Our helmet monitors harmful gases such as methane and carbon monoxide. It also includes a temperature sensor that detects underground fire risks. The helmet’s vibration alert system informs workers of dangerous conditions. The helmet features bright LEDs to be seen in low-light mining tunnels. A microcontroller processes sensor data and issues alerts immediately. A wireless module sends safety data to the control room for monitoring. The emergency alert button allows miners to request help immediately. The helmet is lightweight, making it comfortable during long underground shifts. Its battery design maximizes usage time with efficient energy consumption. The helmet design aims to reduce fatalities in the mining environment. This plan significantly improves miners’ confidence and safety standards.
Hardware Components
- Arduino UNO– Main microcontroller to process sensor inputs.
- MQ-7 Gas Sensor– Detects carbon monoxide levels.
- DHT11 Sensor– Monitors temperature and humidity underground.
- Vibration Motor– Provides physical alerts on dangerous readings.
- Buzzer– Gives loud audible alarms on threshold breaches.
- Push Button– Acts as an emergency alert signal for miners.
- HC-05 Bluetooth Module– Transmits data wirelessly to monitoring stations.
- 9V Battery & Connector– Powers the complete safety helmet circuit.
🔌 Wiring Connections Overview:
- MQ-7 sensor VCC to Arduino 5V, GND to GND, and DO to digital pin D2.
- DHT11 sensor VCC to 5V, GND to GND, and data pin to D3.
- Vibration motor positive to Arduino D4 through a transistor circuit, negative to GND.
- LED positive to D5 via a 220Ω resistor, negative to GND.
- Buzzer positive to D6, negative to GND.
- Push button between D7 and GND with a 10kΩ pull-up resistor.
- HC-05 TX to Arduino RX and RX to Arduino TX (with voltage divider if needed).
- Battery connector supplies 9V to Arduino Vin and GND.
Code:
#include <Wire.h>
#include <MPU6050.h>
#include <DHT.h>
#define MQ2_PIN A0 // MQ-2 gas sensor connected to analog pin A0
#define DHT_PIN 2 // DHT11 connected to digital pin 2
#define DHT_TYPE DHT11 // Define DHT11 sensor
#define BUZZER_PIN 8 // Buzzer connected to digital pin 8
MPU6050 mpu;
DHT dht(DHT_PIN, DHT_TYPE);
void setup() {
Serial.begin(9600);
dht.begin();
Wire.begin();
mpu.initialize();
pinMode(BUZZER_PIN, OUTPUT);
// Check MPU6050 connection
if (mpu.testConnection()) {
Serial.println(“MPU6050 connected successfully.”);
} else {
Serial.println(“MPU6050 connection failed!”);
while (1); // stop if MPU not found
}
Serial.println(“Mining Worker Safety Helmet system initialized.”);
}
void loop() {
// Read gas sensor
int gasValue = analogRead(MQ2_PIN);
Serial.print(“Gas value: “);
Serial.println(gasValue);
// Read DHT11 sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
Serial.print(“Temperature: “);
Serial.print(temperature);
Serial.print(” °C, Humidity: “);
Serial.print(humidity);
Serial.println(” %”);
// Read MPU6050 accelerometer
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
float totalAccel = sqrt((float)ax * ax + (float)ay * ay + (float)az * az) / 16384.0; // convert raw to g
Serial.print(“Total Acceleration (g): “);
Serial.println(totalAccel);
// Safety conditions:
bool gasDanger = gasValue > 300; // Adjust threshold after calibration
bool tempDanger = temperature > 50; // Dangerous high temperature
bool impactDanger = totalAccel > 2.5; // Sudden movement or impact detected
// Alert conditions
if (gasDanger || tempDanger || impactDanger) {
digitalWrite(BUZZER_PIN, HIGH);
Serial.println(“ALERT: Dangerous condition detected!”);
} else {
digitalWrite(BUZZER_PIN, LOW);
}
// Optional: transmit sensor data over serial (for RF or Bluetooth module)
Serial.print(“DATA: “);
Serial.print(temperature);
Serial.print(“,”);
Serial.print(humidity);
Serial.print(“,”);
Serial.print(gasValue);
Serial.print(“,”);
Serial.println(totalAccel);
delay(1000); // update every 1 second
}
