Motorized Pulldown Curtain (Phone & Radio Controlled)





Introduction: Motorized Pulldown Curtain (Phone & Radio Controlled)

I pull my curtain up and down a couple of times a day. If I watch a movie I pull it down and then, I pull it up to get better lighting. I also pull it down when I go to sleep and I pull it up again when I wake up. I want this process to be automatic, if my curtain rises before I wake up, it will be easier for me to wake up when the clock goes off. Just like those night lights that lights up before you wake up this can do the same but with the sun as a source.

If you are like me and would like to have your home automated, you might also have considered buying motorized Curtains. But if you have, then you have also realized that they cost a considerable amount.

Therefore, I have decided to make my own motorized curtain. This project will be about modding an existing IKEA curtain, adding a motor to it and writing some code. Without further ado, let's begin!

Step 1: How It Should Work

These two pictures should give you an idea about how I wanted it to work. What they do not tell you is that the manual-control for up and down can be used at any time (even in the initial phase). And the external control sends "requests", you might not always be able to see the curtain, or you might have made it so the phone sends requests automatically.

For example you push on the phone that you want it to go up, it will move up if it is in the down position and it will do nothing if it is already up. This makes it so you won't need to think about witch button you push and you can also make it so it sends a request to move up at 8:30 in the morning for example.

In this case the external control is a NodeMCU controlled by a phone. But you could choose to use another Arduino with an SMS-shield instead if that would be a better solution for you.

The curtain will work with only a remote controller so if you do not need the "phone control" feature you could skip it, the code that I provide will still work.

Step 2: Tools & Supplies

For this project we will need some tools.


  • Drill-bit
  • Screwdriver
  • Computer
  • Soldering Iron
  • Crimp tool
  • Wire Strippers
  • Glue gun
  • Electrical tape

Step 3: Parts


  • 1: Pulldown Curtain (that fits the window, IKEA is one supplier of these).

  • 1: Motor(The one I use is a servo-motor, with the servo
    functionality removed. It is supplied with good plastic mounts, this makes it easy to mount it to the curtain).

  • 2: Relays (You could also use power transistors for this if you want).

  • 1: 5V power supply. (Do not buy a "fake" power supply of ebay
    [or any other seller], instead wait for a sale in one of your local stores).

  • 1: Arduino

  • 1: NodeMCU
  • 1: Reflective IR Sensor
  • 1: 433MHz Reciever(will be used to take commands from remote).

  • 1: Radio remote. (I recommend "Livolo Mini Remote Controller"
    only because it is the one I will be using in this project and I will provide code that support this remote).

  • 1: Project Box

  • 1: Switch (For manual control).

  • 2: Zip Ties (Used to hold the motor onto the L-shaped mounts)

Step 4: Code for the Curtain

You do not have to change anything in the code for the Arduino (RullgardinV3.3English) but if you want to be able to use your phone to control the curtain and set timers for when it should rise in the morning and roll down in the evening. Then you will need to change at least two things in the code for the NodeMCU board (ESP8266_CurtainCompanion) I have marked these two rows and one of them is the authentication token for your project in the Blynk app on your phone. The other one is the name and password of your Wi-Fi connection.

The code for this project is quite long, please download them if you want to take a look.

Step 5: Schematics

This is the schematics that the build is based upon. Use this when reproducing the project.

Step 6: Building the Curtain

Now it’s time to attach the motor to the curtain. We will do this by
removing the “plug” on the side of the curtain, the rope that one would pull the curtain up or down were attached to this “plug” before it was removed. If you have a 3D-Printer, print this part instead, it would make the construction easier.

It is possible to break down the plastic side into smaller parts, we will only need the biggest part (the part that has contact with the curtain).

As a mount we use L shaped plastic mounts, and hold them in place with zip ties. It should be noted that this was not my first attempt. I pulled the curtain down from the wall once before making this decision.

The zip ties does not grip the motor that hard it just holds it in place. This allows the motor to wiggle a bit and this helps with the problems I had, with creaking noise. When I had the motor firmly mounted it was not completely straight and it bent the metal rod in the curtain ever so slightly to make an irritating creaking noise.

Step 7: Testing the Motor

Servo motors are usually high torque motors and works well for the purpose we will use it for. These motors got an internal feedback controller inside of the housing that we do not really need. It is a good thing to open up the enclosure and remove the board, then we can solder the cables directly to the motor instead.

Step 8: Mounting the Curtain on the Wall

Insert the motor into the curtain and screw it back to the wall. As you can see it does stand out quite a lot on these pictures when compared to the white background. As fortunate as I am, it is impossible to see the motor when you are in the room and from the outside (if you do not move your head, so you face the window). If you have smaller
drapes then me or none at all you would want to make the motor prettier.

Step 9: Adding the Sensor to the Curtain

The sensor that I choose to use is a reflective infrared sensor, there is an infrared emitter next to a receiver. The receiver will measure how much information is lost. If the object is black the loss is great and if the item is white, there is almost no loss. We will use the digital output and trim the potentiometer so that it triggers nicely on the black electrical tape that we will put on the curtain at the top and bottom.

Step 10: Adding Fast Connectors to Sensor & Motor.

I wanted to have the sensor cable easily removable. For a fast connector I decided to use a USB-connector. They are widely available and are usually very cheap. USB-connectors is also made for 5volts and that is the voltage the sensor uses.

Step 11: Setting Up the Phone With Blynk

First of all download the Blynk app to your phone and make an account. I have provided a QR icon in the pictures that you can scan from the app, that way you do not have to setup the app more than edit your own authentication code into the code for the NodeMCU that you will program.

Step 12: ​Thoughts on Choosing Enclosure.

If you think that my choice of enclosure is weird than you might be right. I chose that box because it will look good in the environment that I am in. If you decide to build something like this then you might what to choose some other enclosure entirely. You might even want to have the enclosure up on the wall next to the motor. The second picture that I am showing here is an old version of this curtain. It does have another enclosure though, it might give you some ideas.

Step 13: Make the Necessary Holes for the Connectors.

The USB-connector is for the IR-sensor and the "black and red" cable is for the motor. The jack in the middle is for an external power source.

Step 14: Thoughts on Cable Management.

To fit all the electronics in the enclosure I decided to make my own cables. If cable management is if great importance to you, then you can always choose a bigger enclosure to help with the cable management. Or If you like to etch your own pcb's than that is a nice thing to do.

Step 15: Fit the Electronics in the Enclosure.

Trying to fit all the electronics in a small space is a nice feeling. You might ask why I use relays that takes up a lot of space when I could have used power-transistors instead. I did actually use power transistors before I went with relays, I did have a problem with too much of a voltage drop over the transistors and I did not want to use a boost converter to accumulate for the drop. The motor is somewhat sensitive to changes in voltage and does get much weaker if the voltage drops.

Step 16: Base-Station Done

This is how the base station came to look in the end. It is not necessary to have it easily removable in a permanent solution but it helps with cable management and just makes your life easier.

Step 17: ​Power Consumption

These pictures speaks for them self's. If you are interested in the power consumption of this device please take a look.

Step 18: It's Alive!

What is a project that is supposed to move, if you could not see it actually move? This is a 2.5 min clip showing the build of the curtain and the curtain moving, (with input from the radio control and from the phone).

Thanks for reading my instructable!



  • Epilog Challenge 9

    Epilog Challenge 9
  • Gluten Free Challenge

    Gluten Free Challenge
  • First Time Author Contest 2018

    First Time Author Contest 2018

We have a be nice policy.
Please be positive and constructive.




It is cool. In theory, how do you detect when the curtain reach the bottom or top of window?

I got 2 black pieces of tape, taped to the top and bottom of the curtain. The arduino keeps track of where it is, so it always knows in what state it's in (up/down) it will therefor always starts rolling in the right direction. It knows that it has successfully changed it's state when the light sensor sees the black tape, the arduino stops the motor and also makes changes in it's memory to correspond to the new position.

short: Keep track of position in memory, knows that it's done rolling up when the sensor triggers.

Thank you! :)

That is quite cool! And very clever! Well done!

Thank you, I tried to attack all the Steps! ;)