Alex Merchen
Published © GPL3+

Cooking Gas Detector

Create a simple device to monitor the gas levels in your kitchen while you cook.

IntermediateFull instructions provided2 hours22

Things used in this project

Hardware components

SparkFun LiPo Charger Basic - Micro-USB
SparkFun LiPo Charger Basic - Micro-USB
×1
ATTINY45
×1
Gravity: Analog CH4 Gas Sensor (MQ4) For Arduino
DFRobot Gravity: Analog CH4 Gas Sensor (MQ4) For Arduino
BUT WITHOUT THE PCB PART ATTACHED
×1
LED (generic)
LED (generic)
×1
Resistor 10k ohm
Resistor 10k ohm
×1
Resistor 100 ohm
Resistor 100 ohm
×1
Slide Switch
Slide Switch
×1
4xAA battery holder
4xAA battery holder
×1
AA Batteries
AA Batteries
×1

Software apps and online services

Arduino IDE
Arduino IDE
KiCad
KiCad
SOLIDWORKS
PCBWay

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)

Story

Read more

Custom parts and enclosures

Enclosure Bottom

Enclosure Cover

Schematics

Wiring Schematic

PCB Layout

Code

ATTINY45 Gas Detector Code

Arduino
#define X1 0
#define X2 1
#define X3 2
#define analogPin 3

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);

}

// the loop function runs over and over again forever
void loop() {
  int sensorValue = analogRead(analogPin);

  // Use if-else if statements to check the sensor value and call selectLED(x)
  if (sensorValue >= 0 && sensorValue <= 400) {
    // Range: 0-170
    selectLED(6);
  } else if (sensorValue > 400 && sensorValue <= 500) {
    // Range: 171-340
    selectLED(5);
  } else if (sensorValue > 500 && sensorValue <= 700) {
    // Range: 341-510
    selectLED(4);
  } else if (sensorValue > 700 && sensorValue <= 800) {
    // Range: 511-680
    selectLED(3);
  } else if (sensorValue > 800 && sensorValue <= 900) {
    // Range: 681-850
    selectLED(2);
  } else if (sensorValue > 900 && sensorValue <= 1023) {
    // Range: 851-1023
    selectLED(1);
  }

  delay(40);
  selectLED(7);
}

void selectLED(int x){
  switch (x) {
      case 1:
        pinMode(X1, OUTPUT);
        digitalWrite(X1, HIGH);   // turn the LED on (HIGH is the voltage level)
        pinMode(X2, OUTPUT);
        digitalWrite(X2, LOW);
        pinMode(X3, INPUT);
        break;
      case 2:
        pinMode(X1, OUTPUT);
        digitalWrite(X1, HIGH);
        pinMode(X2, INPUT);
        pinMode(X3, OUTPUT);
        digitalWrite(X3, LOW);
        break;
      case 3:
        pinMode(X2, OUTPUT);
        digitalWrite(X2, HIGH);   // turn the LED on (HIGH is the voltage level)
        pinMode(X1, OUTPUT);
        digitalWrite(X1, LOW);
        pinMode(X3, INPUT);
        break;
      case 4:
        pinMode(X2, OUTPUT);
        digitalWrite(X2, HIGH);
        pinMode(X1, INPUT);
        pinMode(X3, OUTPUT);
        digitalWrite(X3, LOW);
        break;
      case 5:
        pinMode(X3, OUTPUT);
        digitalWrite(X3, HIGH);   // turn the LED on (HIGH is the voltage level)
        pinMode(X1, OUTPUT);
        digitalWrite(X1, LOW);
        pinMode(X2, INPUT);
        break;
      case 6:
        pinMode(X3, OUTPUT);
        digitalWrite(X3, HIGH);
        pinMode(X1, INPUT);
        pinMode(X2, OUTPUT);
        digitalWrite(X2, LOW);
        break;
      case 7:
        pinMode(X1, INPUT);
        pinMode(X2, INPUT);
        pinMode(X3, INPUT);
        break;
      default:

        // statements

        break;
    }
} 

Credits

Alex Merchen
27 projects • 40 followers
I'm an EE with a Masters in ECE. I like building things.

Comments