During our Sophomore grade level project (wearable device challenge) my team and I created a device using a smoke and heart sensor to detect hazardous air quality outdoors or to simply help someone stop their smoking habits
Our device uses two sensors, a heart pulse monitor, as well as an air quality / smoke sensor to collect data about the surrounding area the device user is in as well as the users heart rate. If the air quality sensor measures at a concentration of 1150+ parts per million (ppm), the first red LED will flash, signaling a harmful air quality. As for the heart rate monitor, if the user registers a heart rate of anywhere to 120 and above beats per minute (BPM), the second red LED will flash, signaling an abnormally high heart rate.
- The file main.ino is the program which handles the logic with the arduino board, both sensors, and the 4 LED lights we used.
- The file smokeDangerPoster.pdf is the poster we created to go along with this project. The poster includes the data we collected through the program and graphs to go with it. We collected individual data for each sensor to help with stable values we could later use to code the LED lights. The poster also includes several pictures of the development process of the device and descriptions of all the different attributes. The final prototype can be seen at the bottom of the poster.
git clone https://github.com/aahmad4/Breathe-Way
Keep in mind that the certain values PPM (Parts Per Million) and BPM (Beats Per Minute) are within retrospect of the data that the sensors collected, they are subject to change depending on the quality and lifespan of the sensor.
Knowing this, depending on the quality of your Heart Rate Sensor, I would change the BPM value here to match the data.
if (BPM > 120)
{
digitalWrite(10, LOW);
digitalWrite(8, HIGH);
}
else
{
digitalWrite(8, LOW);
digitalWrite(10, HIGH);
}
Likewise, I would change the PPM value here, once again depending on the quality of your Gas Sensor.
void loop()
{
gasValue = analogRead(gasPin);
Serial.println(gasValue);
if (gasValue < 500)
{
digitalWrite(4, HIGH);
digitalWrite(2, LOW);
}
else
{
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
}
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.