AUTO MASK
Comfortable. Safe. Efficient.
HOW IT WORKS
FEATURES
EYE
SHIELD
Blocks infected saliva from entering eyes.
TOUCHLESS
CONTROL
Minimizes viral transfer from hands.
MUSCLE
SENSOR
Covers just in time to catch a cough or sneeze.
COMFORT
TO WEAR
Wear it just like a pair of glasses!
AIR
SENSOR
Protects you when there is bad air quality.
COMPACT
PORTABILITY
Slide Auto Mask in your bag to take everywhere!
about
Hey there! I'm Taliyah, the creator of Auto Mask. In the year 2020, due to the coronavirus pandemic and California forest fires, I realized NO ONE is comfortable wearing a mask.
There are many problems:
1. Difficulty breathing
2. Wearing incorrectly
3. Non-hygienic mask practice
4. Injuries due to prolonged mask wearing
5. Mask off at critical moments
6. Not wearing at all!
​
Auto Mask is here to show that creativity and innovation can still go on! Read on to learn what's behind the creation of Auto Mask!
Auto Mask Creation
March
Quarantine lockdown begins in California.
April
Taliyah thinks of the idea for Auto Mask.
January
The coronavirus pandemic starts in Wuhan, China.
May
Taliyah works on the first prototype for Auto Mask.
June
Auto Mask is tested in public.
July
Taliyah works on the second prototype for Auto Mask.
May 30
Auto Mask wins best hardware hack at TeenHacksHTX.
August
Forest fires spark all over California, causing hazardous smoke to fill the air.
September
The second version of Auto Mask is complete!
Version 1.0
+ Eye Protection
+ Touchless control
+ On/off switch
+ Muscle Sensor
Version 2.0
+ Eye Protection
+ Touchless control
+ On/off switch
+ Detachable Muscle Sensor
+ Increased Comfort
+ Air Quality Sensor
+ Foldable
+ Snap on masks
Auto Mask BOM
Read about the few non-3D printed components that complete Auto Mask! These electronic parts were specially chosen based on their use, size, and price!
Auto Mask Circuit
Look at the diagram below to see how all the electronic parts are connected! The battery and on/off switch are not shown.
Auto Mask Code
Scroll down to see the C++ code that is uploaded to the Arduino Nano so it can control Auto Mask!
#include <Servo.h>
Servo myservo1;
Servo myservo2;
#include <Wire.h>
#include "Adafruit_SGP30.h"
uint16_t VOC1 = 0;
uint16_t VOC2 = 0;
uint16_t VOC3 = 0;
uint16_t VOC4 = 0;
uint16_t VOC5 = 0;
uint16_t VOCAVE;
​
Adafruit_SGP30 sgp;
uint32_t getAbsoluteHumidity(float temperature, float humidity) {
const float absoluteHumidity = 216.7f * ((humidity / 100.0f) * 6.112f * exp((17.62f * temperature) / (243.12f + temperature)) / (273.15f + temperature));
const uint32_t absoluteHumidityScaled = static_cast<uint32_t>(1000.0f * absoluteHumidity);
return absoluteHumidityScaled;
}
​
bool onoff = 0;
uint8_t counter = 0;
​
//For Muscle
uint16_t sensorValue = 0;
uint16_t outputValue = 0;
const int musPin = A3;
​
//For Ultrasonic
int time;
uint16_t distance;
const int trigPin = 7;
const int echoPin = 8;
​
void setup() {
myservo1.attach(9);
myservo2.attach(10);
pinMode(musPin, INPUT);
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
Serial.begin(9600);
myservo1.write(180);
myservo2.write(90);
if (! sgp.begin()) {
while (1);
}
}
​
void loop() {
//Muscle Sensor
delay(50);
sensorValue = analogRead(musPin);
outputValue = map(sensorValue, 0, 1023, 0, 255);
Serial.println(sensorValue);
if (sensorValue > 400) {
if (onoff == 1) {
myservo1.write(180);
myservo2.write(90);
onoff = 0;
delay(1000);
}
}
​
//Ultrasonic
digitalWrite (trigPin, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin, LOW);
time = pulseIn (echoPin, HIGH);
distance = (time * 0.034) / 2;
if (distance < 7 && distance > 4) {
delay(500);
if (distance < 7 && distance > 4) {
if (onoff == 0) {
myservo1.write(90);
myservo2.write(180);
onoff = 1;
delay(500);
} else {
myservo1.write(180);
myservo2.write(90);
onoff = 0;
delay(500);
}
}
}
if (! sgp.IAQmeasure()) {
return;
}
counter++
if {counter == 5){
counter = 0;
VOC5 = VOC4;
VOC4 = VOC3;
VOC3 = VOC2;
VOC2 = VOC1;
VOC1 = sgp.TVOC;
VOCAVE = (VOC1 + VOC2 + VOC3 + VOC4 + VOC5) / 5;
}
if (VOCAVE > 50) {
if (onoff == 1) {
myservo1.write(180);
myservo2.write(90);
onoff = 0;
}
}
delay(500);
}