I’m your fan

In counter-clockwise order, a fan, accelerometer, gas detector, and a PIR sensor.

To an artist, one’s respiratory health is one of the priorities. Spray paint, paint fume, melting plastic… even with a mask on, the fume still enters my lungs. Right now, being able to work on my projects from home, I had to make a compromise with my parents and trade my ventilation with an at-home studio. The room has no windows other than a door. However, to have a fan in the room, the foam particles will fly everywhere and stick to my sculptures or get into my eyes, which is not an ideal situation. But just leaving a door open doesn’t do much to ventilation either.

Therefore, I came up with a fan that interacts with my presence, action, and the gas level.

Video demonstration:


If people had a hard time understanding since I was struggling to talk, film, move an accelerometer, and light a candle all at the same time, basically the fan works in this way:

Fan gets activated:

  • when it detects no movement in the room and the doorknob was pulled
  • when the toxic gas level (flamable gas) is too high in the room, no matter of my presence in the room.

Fan is off when:

  • when it detects a movement in the room with a low gas level

Now it is time to get real.



The first demonstration is activating the fan with no movement and the door knob.

So this is my dusty, non ventilated studio. Since I am moving in the room, the fan is off.

Currently, there is a movement detected in the PIR sensor, so the fan is off.

So I opened the door, AKA activated the accelerometer.

The fan turns on and ventilates the room.



Now it’s time to test the flamable gas detecting interaction.

Now I am in the room again, and moved infront of the PIR sensor. The fan is off.

I give the toxic gas detector (flamable gas detector) a whiff of my spray foam,

The fan turns on, even though there is movement detected in the room.




int GasPin = A0;
int PIR = 7;
int motorPin = 8;
int Ypin = A1;

int yVal;
int oldY;
int dif;

void setup()
pinMode(GasPin, INPUT);
pinMode(PIR, INPUT); 
pinMode(Ypin, INPUT);
pinMode(motorPin, OUTPUT);
analogWrite(motorPin, 0);
void loop()
oldY= yVal;
yVal = analogRead(Ypin);
dif = abs(oldY - yVal);
// delay(250);

if (digitalRead(PIR) == LOW && dif>5){ 

Serial.println("PIR OFF");
analogWrite(motorPin, 255);
if(digitalRead(PIR) == HIGH){
Serial.println("PIR: ON");
analogWrite(motorPin, 0);
if(analogRead(GasPin) > 330){
Serial.println("PIR: ON");
analogWrite(motorPin, 255);



  • initially I had an LCD display, yet for some reason it was glitching not by itself, but also making the whole arduino glitch, and even my computer. The wiring was correct and everything, and that gave me a hardship of setting the range of gas level, because the serial monitor was already showing so many values from different sensors.
  • the both ground and vcc wire of my fan got detached. I didn’t have soldering equipments or anything so I took a knife and peeled some of the wire and used a piece of tape to hold them together.

For future:

  • Buy a bigger fan and actually use it.


Author: kyungsec@andrew.cmu.edu

Junior in Art, trying to minor in physical computing.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.