my inspiration
I'm a curious person who needs to know how things work, as I work as an environmental specialist I deal with environmental measuring systems so I wondered how the VOCs system works inside....
First of all, let's talk about VOCs (Volatile Organic Compounds) are a large group of chemicals that are found in many products we use to build and maintain our homes. Once these chemicals are in our homes, they are released or “off-gas” into the indoor air we breathe. They may or may not be able to be smelled, and smelling is not a good indicator of health risk.
AS Breathing VOCs can irritate the eyes, nose, and throat, can cause difficulty breathing and nausea and can damage the central nervous system and other organs. Some VOCs can cause cancer.
Common examples of VOCs that may be present in our daily lives are benzene, ethylene glycol, formaldehyde, methylene chloride, tetrachloroethylene, toluene, xylene, and 1,3-butadiene, LPG, Smoke, Alcohol, Propane, Hydrogen, Methane, and Carbon Monoxide.
MY IDEA is to make a device to sense the VOCs level in the air, warning me if the VOCs level is higher than the healthy level of parameters of the VOCs in the Environmental Affairs Agency.
Software
Fusion 360 (Design)
GRABCAD
MAIN TOOL
1- CREATE (drawing the Skitch & EXTRUDE)
2- MODIFY (MOVE & COPE)
3-ASSEMBLE (JOIN & COMPONENT)
As I Learned from the pervious weeks, i start with making a component from ASSEMBLE
Starting drawing a rectangle from CREATE
Starting drawing a T-Slot Female, By drawing Two rectangle from CREATE holding a circle in between from CREATE TOO.
Then we start to Extrude to give the material thickness From EXTRUDE we choose Join 3 mm that is the thickness of plywood
To give the plywood appearance we choose from MODIFY physical material the appearance of wood
To upload the components inside we download it from GRABCAD As step then upload it in FUSION then insert it into the design.
Then we start to plan how to fix it on the plywood sheet so we choose from CREATE -project , then we choose the positions of the nails then From EXTRUDE we cut this holes.
Then we start to fix the breadboard AS the previous
the same for every step but here we draw multi holes by a circular pattern
In the end, to cut the final design we save it as DXF, from CREATE we choose to save DXF for laser cutting then, we choose each component and save it.
LaserWorkV6
(LaserCut)
Morn LaserCutter (Laser Cut)
Plywood sheet 0.3*30*50 cm
To import the Design
From File we choose import then we choose our design as DXF.
Then we set the speed to 30, Power 50.
then Download the File then run it on the machine.
INPUTs
VOCs Sensor QM135
Detect the level Of VOCs
ON/OFF Switch
Turn the Circuit ON & OFF
OUTPUTs (ACTION)
RGB LED
Give (Blue & Green & Red) light
Resistor 330/220 Ohm
Protect the RGB from High Voltage
Buzzer
Make a BUZZZZ (Sound)
Essentials
USB Cable
To connect Arduino with Laptop
Arduino UNO
To Upload the Code to the Circuit
DC Adaptor 5 Volt
Source of Electricity
Wires
To connect the circuit
BreadBoard
To connect the circuit to Arduino
Action: sound, flashlight
Green light (normal VOCs level)
Red light (high level of VOCs) and BUZZ Sound
Blue light (moderate VOCs level)
Sensing: VOC (Volatile Organic conc) Sensor
User Input: air
the connection between the MQ 135 with arduino
Circuit on TINKERCAD
Software
Arduino IDE
I connect the
+ve wire of RGB LED (RED = PIN 4"unhealthy",GREEN = PIN 5"healthy",BLUE = PIN 6"moderat")
-ve wire of RGB LED to PIN GND on a GND of Breadboard, (Each LED PIN attach to resistor 220 ohm)
+ve wire of Buzzer to PIN 7 & -ve wire of Buzzer to PIN GND on a GND of Breadboard,
Terminal of Button to PIN 3 &the other terminal of Button to PIN GND on a GND of Breadboard,
GND of Breadboard to a GND of Arduino.
I connect the MQ 135 sensor, VCC connects to the 5v pin& GND is connected to a GND of Arduino & DO connect To digital PIN 2 & Analog PIN A0.
DC Adaptor 5 Volt
Source of Electricity
(Buzzer & RGB & MQ135 didn't need more than 5 Volt Electricity SO it is perfect to it)
I needed Simple Code to make the Lights turn to a different color and the buzzer go on according to the readings of VOCs sensor so:
// HERE IS THE EXPLANATION OF EACH PIN
int sensorValue;
int digitalValue;
int RED = 4; // unhealthy LEVEL
int GREEN = 5; // healthy LEVEL
int BLUE = 6; // moderate LEVEL
int BUTTON = 3; // ON/OFF SWITCH
int BUZZER = 7; // SOUND OF unhealthy LEVEL
void setup() {
// HERE IS DECLARING OF INPUT & OUTPUT
Serial.begin(9600); // sets the serial port to 9600
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
pinMode(2, INPUT);
}
void loop() {
BUTTON = digitalRead(3);
//Serial.println(BUTTON);
//if (digitalRead(3) == LOW) {
sensorValue = analogRead(A0); // read analog input pin 0
digitalValue = digitalRead(2);
Serial.println(sensorValue, DEC); // prints the value read
Serial.println(digitalValue, DEC);
Serial.print("Analog= ");
if (digitalRead(3) == LOW) {// when I turn the switch on // HERE IS THE LOOP START WITH CHECKING IF THE BUTTON IS WORKING OR NOT
if (sensorValue > 0 && sensorValue < 150) {// healthy level
digitalWrite(BUZZER, LOW);
digitalWrite(GREEN, HIGH);
delay(100);
digitalWrite(GREEN, LOW);
delay(100);
} else if (sensorValue > 151 && sensorValue < 170) { // moderate level
digitalWrite(BUZZER, LOW);
digitalWrite(BLUE, HIGH);
delay(100);
digitalWrite(BLUE, LOW);
} else if (sensorValue > 171 && sensorValue < 400) { // unhealthy level
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
digitalWrite(RED, HIGH);
delay(100);
digitalWrite(RED, LOW);
}
delay(100); //Just here to slow down the output.
} else if (BUTTON == HIGH) {// when I turn the switch OFF EVERY THING IS OFF
digitalWrite(BUZZER, LOW);
}
//}
}
stimulation on real with alcohol
stimulation on real with lighter
NOT YET
the device wasn't working even though each code piece was tested and was functional, but then instructors reviewed and we walked line by line till we found a condition was written twice (duplicated) as shown the digital read (3) is repeated 2 times, so that was confusing the components and we removed the duplicated line then everything worked
here is the wrong Code
if (digitalRead(3) == LOW) {
sensorValue = analogRead(A0); // read analog input pin 0
digitalValue = digitalRead(2);
Serial.println(sensorValue, DEC); // prints the value read
Serial.println(digitalValue, DEC);
Serial.print("Analog= ");
if (digitalRead(3) == LOW) {
if (sensorValue > 0 && sensorValue < 150) {
digitalWrite(BUZZER, LOW);
digitalWrite(GREEN, HIGH);
delay(100);
digitalWrite(GREEN, LOW);
delay(100);
} else if (sensorValue > 151 && sensorValue < 170) {
digitalWrite(BUZZER, LOW);
digitalWrite(BLUE, HIGH);
delay(100);
digitalWrite(BLUE, LOW);
} else if (sensorValue > 171 && sensorValue < 400) {
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
digitalWrite(RED, HIGH);
delay(100);
digitalWrite(RED, LOW);
}
delay(100); //Just here to slow down the output.
} else if (BUTTON == HIGH) {
digitalWrite(BUZZER, LOW);
}
//}
}
After Solving the Problem
//if (digitalRead(3) == LOW) {
sensorValue = analogRead(A0); // read analog input pin 0
digitalValue = digitalRead(2);
Serial.println(sensorValue, DEC); // prints the value read
Serial.println(digitalValue, DEC);
Serial.print("Analog= ");
if (digitalRead(3) == LOW) {
if (sensorValue > 0 && sensorValue < 150) {
digitalWrite(BUZZER, LOW);
digitalWrite(GREEN, HIGH);
delay(100);
digitalWrite(GREEN, LOW);
delay(100);
} else if (sensorValue > 151 && sensorValue < 170) {
digitalWrite(BUZZER, LOW);
digitalWrite(BLUE, HIGH);
delay(100);
digitalWrite(BLUE, LOW);
} else if (sensorValue > 171 && sensorValue < 400) {
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
digitalWrite(RED, HIGH);
delay(100);
digitalWrite(RED, LOW);
}
delay(100); //Just here to slow down the output.
} else if (BUTTON == HIGH) {
digitalWrite(BUZZER, LOW);
}
//}
}
I Got another challenge connecting RGB with resistors and Jumpers but jumpers keep Disconnecting Easily, so I decided to solder the resistors with RGB to make them all one part
unfixed RGB with resistors
RGB solder with resistors
reading of the value of the VOCs Level on the Screen.
sending sms to phone by Bluetooth.