inflatable window curtain that inflates/deflates based on light

hello Arduino Community! Super new Arduino user here. I am a graduate architecture student working on my thesis project which involves the designin and fabricaton of an environmentally responsive ‘curtain’ of sorts. This curtain is made up of many inflatable components. Each component has the potential to inflate or deflate thanks to a light sensor (each component has a light sensor and a fan attached to it )that triggers the arduino to tell the fan to blow in the positive when hit with light and reverse direction (suck air out) when sensing dark.

I have come across some helpful threads including this one, and I am in the midst of taking apart fans and attaching them to 12 volt batteries just to see the power, rpm. However I am still struggling with understanding a few things. I am unexperienced with code and electrical engineering in general (i am collaborating with 2 engineers that are helping me with that)but I want to gain as much of an understanding of the process as possible.

Right now I am struggling with figuring out exactly the right light sensor which will be attached to an inflatable component. (If anyone reading this has any light sensor suggestions that would be great! I have a list going, but the important aspect is that these wont be directly attached to the arduino board. They have to exist inside these inflatable components. (see sketch attached) This light sensor will most likely have only 2 inputs and not work on a scale. IE it will trigger the arduino to tell the fan to turn in the positive direction when dark (filling the component with air) and turn the motor in reverse when the sensor senses light. (sucking out the air from the component)

Another issue I am working through is how to hook up multiple pc fans to 1 arduino board. I understand I need an external 12 v dc power supply but do I need a relay board in order to handle a lot of fans? I suppose I might have up to 20 fans. Each 12 v dc fan will act on its own, they dont act in grouups. They each respond to their own individual sensors read of light or dark.

Finally, I would like to reverse the motor on my fans. If anyone has any tips beyond this thread that would be incredible!
I have found a helfpul link here about reversing motors but if anyone has any specific tips about my project wow that would be much appreciated!

ps see the attached image/pdf for hopefully a more helpful explanation of project goals/issues!


Leslie Mignin

Light sensors (can also be photo sensors or a photocell) are fairly simple, and semi-cheap. You can look at all the normal electronics websites to find some. For example Sparkfun had these:

Both are fairly easy to understand. I don't think you would need a sensor for each individual blind piece though, just one sensor for an entire column maybe. Really, that's up to you, since it's your design, but why spend the extra money on extra sensors if it's really not needed. Blinds will generally have the same brightness on them at the top as at the bottom.

As far as the sensors being inside, either of those would work. I don't really understand the idea a ton except it's effectively filling a "bag" with air, and then sucking it out. XD I'd do the more simple approach of having a stepper motor turn regular blinds up or down based on daylight, but that's me, simple in nature.

O-o I feel like I'm rambling. Anyway, Pretty much all photo/light sensors work in a similar way. They either give or take resistance based on the amount of light they have. If it's lower then a certain amount then it would be triggered as off, and above that certain point would be on.

XD I feel like my post was kind of rambly and pointless... but, the point is, that's what they are, and a place you can get them, and a brief (and probably horrible) explanation of how they work. Sorry if it was a horrible post. (brain isn't working well today...)


thanks for your response! Yeah so I guess im using this curtain ‘analogy’ just to simplify the example but really the whole thing is an experiment to demonstrate the possibilities of collapsing materials, environment and technology into architecture. One could also picture this system as a ‘canopy’ of sorts hanging over a large outdoor space, which would close up or open up based on the light hitting it in certain areas.

In regards to your suggestions for a sensor, I really would like a sensor for each component. That way the inflation/deflation is more specific. My question still is though how these small sensors relay the information back to the arduino and then back to the fan. They seem to be pieces that directly connect to an arduino board am I right? Could they sit independently/away from the board? Not sure if that makes sense. But in my diagram I show the sensors directly connected/next to the inflated pieces.


fanlightsensorinflation.pdf (543 KB)

point of attention:

you can read the value of a LDR with the analogRead() getting a value between 0 and 1023 (probably the range is less).

IN your code you should define two threshold point, one for start blowing and one for start sucking. If you use one point for both
the application might “vibrate” around that point and that is irritating at best, but also not so good for the fans

in code: (not tested)

#define SUCK 0
#define BLOW 1

int state = 0;

void setup()
  Serial.begin(115200); // for debugging messages
  Serial.println("Start curtainizer 0.1");

void loop()
  int light = analogRead(A0);  // assume 0 = dark and 1023 is bright  

  if (light > 400) state = BLOW;  // the numbers 300 and 400 are to be elaborated
  if (light < 300) state = SUCK;

  // feedback
  Serial.print("L: ");
  Serial.print("Mode: ");

  if (state == BLOW) FanForwards(); // to be elaborated
  else FanBackwards();  // to be elaborated

Hope this helps a bit

Thank you that is SUPER helpful! In regards to my question above, is there an LDR you recommend in particular that can attach away from the arduino board? If so how is this connected back to the board. Sorry Im such a huge newbie. Im assuming these LDRs arent transmitting the info wireless...thus there needs to be a connection at some point.....Thanks for helping out an amateur here!

is there an LDR you recommend in particular

NO particular LDR in mind, the way you connect it is described in -;topic=66778.0 -

If so how is this connected back to the board.

TO connect an LDR correctly it must be part of a voltage divider +5V ---- [ LDR ] -----* ------[Resistor] ----- GND Connect analog port of Arduino to * in the middle The valueof resistor must be in the same order as the LDR when in the dark. (a 10 K will work probably too)

Thanks for helping out an amateur here!

I cant wait to see the curtain work, (post a youtube when ready ?) you just added a new dimension - inflate - to what to do with Arduino :)

I can imagine that such inflatable curtains help to keep out heat during the day and let in fresh air during the night.

Have you consider setting up a type of canbus network, that way each fan can have a can ID and information can be directed to it based on the operation of the sensor, this way you can control each fan at the same time with diffrent commands, you will have to use the MCP2515 transducer and build it into your fan to give it canbus communication, but if you are going to set up a big area of fan/blowers then this might be a nice way of controling them and also you will be able tyo set up a HTTP link with diagram control.

I like your idea, but I can see a couple of problems: 1) I can see 40 inflatable elements in your pdf. so you need 40 inputs for the light sensors and 80 (40 forward and 40 reverse)) outputs for the fans. An arduino does NOT have all those pins, so you must resort to some sort of multiplexing or use multiple arduino boards. 2) you need a way to know when the element is fully deflated so the fan can stop, otherwise it will be constantly on. Probably you could just stop the fans after a set time. 3) it will be probably not enough to just read the sensor and start the fan.. imagine a windy and cloudy day, with clouds passing in front of the sun very quickly, or imagine it is night and a car pass by with headlights on. your fans would be very busy starting and stopping and reversing all the time. So you need some kind of "smoothing" of the signal, maybe a moving average

As for your questions, LDR are very easy to use and you can find plenty of code for that in the forum. for the fan control you will need something called "H BRIDGE" to be able to reverse the motor, but if you are planning to use the sort of fans that are commonly used in computers cooling, be aware that a lot of them just work in one direction (i.e. if you reverse the current they simply do not move) so be sure to test one before you get them all.

Another thought is... when you stop the fan the air in the inflated bag will come out and deflate the bag anyway, so do you really need to reverse the motor? or could you use some sort of weak elastic structure pushing the bag flat when not inflated? if you could avoid the reversing, it will make things easier and you will only need a MOSFET to switch on and off the fan hope this helps

Would your project be so much more energy efficient to just use darkened material and make them air tight and let the sun's energy heat the air inside and raise the curtain upward?


Paul_KD7HB: Would your project be so much more energy efficient to just use darkened material and make them air tight and let the sun's energy heat the air inside and raise the curtain upward?


This would be a very nice concept but my concern is just how fast will it operate on such a system ? and also wount the clouds prevent it from heating properly aswel ?