Guidance on pull down blind opening robot

Hi everyone,

I am completely new to robotics, but I am a software developer by trade, I came across this forum while searching for help on how to complete my project, but I still require some advice, as I can’t seem to find a project that has incorporated everything that I want to do.

I have some roman shade blinds like below, which are controlled by a string that is pulled down, then looped round a fixture in the wall to hold the blinds up in place at the top of the window.

I would like to build a small robot contained in the box which will sit on the windowsill, and pull the string down to open the window, kind of like a winch.

Here come the challenges.

I would like to control the robot from my smartphone, by using a slider UI component, so I can open the blinds from 0% of the way to 50% to 100% etc. Eventually I would like a light sensor, which would open and close them automatically, but that is for the future!

I’d like some advice on a few things.

  1. Which motor would be the best to use for this task? I would need one strong enough to pull the string down and winch it around a spindle of sorts. The string requires no more than 2kg of force to pull down. I would also need the motor to “lock” in a way so that when I have the blind open, it is not using power to hold it in that position. Also if the motor can be near silent that would be a bonus, although once it’s enclosed in a container, any noise should be muffled.

  2. What would be easiest in terms of connectivity? Bluetooth module, Wi-Fi module?
    I would not want the blind to rely on my computer being turned on to relay to commands to and from my phone. So ideally I’d like it to be a direct connection to my phone.

  3. Would it be possible to connect this to the mains power, so that I would not need to rely on batteries?

  4. Could the above be done with solely an Arduino? Or would be it be best to just use a Raspberry Pi? Or combine the two?

I’m sure that I’ve probably missed some key questions to ask, but I’m kind of tired right now!

Sorry for all these questions, but there is so much information on the net, and after several days of searching, I feel like I need a push in the right direction.

I’m not looking for a step by step per say, just an idea of which equipment I should buy for the task, then I’d want to put it all together myself. I don’t want to buy the wrong stuff and waste lots of money.

Many thanks for reading and your future replies! :slight_smile:

  1. Actually I think I would use a different mechanical process even though Motors are available which could move 2KG (which is a LOT of weight for such a blind!). I would use a counterweight with a pulley. The counterweight can easily be adapted to any given weight and therefore the strain on the Motor is near Zero. I would use a stepper Motor because it is easy to control exactly where the blind is (10%, 40% 83.2%, whatever). A stepper Motor automatically "locks" (a Little bit) and considering the counterweight, that would be enough. I would also add a sort of light beam detector at the bottom of the shade. Nothing fancy. When the Arduino first Comes on, lower the shade until the beam is broken. That way, you know where the shade is even though the Arduino is suffering from Amnesia due to a power loss. From there, do whatever Initial positioning you want.

  2. Bluetooth requires you to have the phone near the device. If it is Wi-Fi, depending on your Internet Connection, you may be able to raise/lower the blind from work, while on vacation in the Bahamas, etc.

  3. Yes. For example, a "wall-wart" with a USB Output may be enough (depending on how much power the Motor Needs!). An old Laptop power supply is more than sufficient.

  4. On an Arduino Forum, do you expect any other answer than "The Arduino can handle this alone"? It can.

Hi JaBa,

Thanks for your help!

  1. Ok, I can see the benefit of using a counter weight combined with the stepper motor, good idea!

So just to confirm what I think I need to do, I'd need a pulley at the bottom of the window and a a pulley at the top. I'd extend the string, make it go all the way down round the bottom pulley then back up round the top pulley with a ~2kg weight on the end?

  1. I don't have a static IP address or Dyn-DNS, so to have it be internet connected wouldn't work for me. It would always need to be local :frowning:

  2. Great, although I've seen in many places, to have 1 power supply for the Arduino and 1 power supply for the motor? So they can be combined in some way?

  3. Haha, I was just questioning myself, as having a full OS on the Raspberry does bring some benefits?

Thanks again!

This is a simple project with minimal computing requirements. A Pi is overkill unless you want it to play music videos while the blind moves.
Any Arduino will work, one adequate power supply is fine, go with a stepper motor and a calibrating switch as a known position (such as at 50%, every time it passes the physical switch, it then relearns how many steps to the other positions.)

Look into the current blind and see what friction system is in place for retention. You may lighten your motor demand if you free that up.

As for connection, if you only aspire to have this one blind be controlled by your phone when you are within 10meters or so, then an Arduino with a Bluetooth module (HC-05) will serve you well.
But this is quite limiting as bluetooth pairing is one to one. If you have a second blind setup, it gets cumbersome enough that, since you're within 10meters, you're better off just walking over to the damn thing and pulling the string yourself.

I would say a wifi setup is much more expandable, more reliable, and simpler. But it would use an ESP8266 board such as a D1 Mini instead of an Arduino (but you can program it just like an Arduino). A local wifi connection is fine. Run the ESP8266 as a webserver and it can serve you an html interface as your "app" on your phone with buttons, sliders, status, whatever you want. No limit to how many blinds.devices you can setup. And the range is as far as your home wifi reaches. And the 'control panel' can be accessed by any device with a browser.
Keeping the webserver model can be expanded to an external ip with a few router setting tweaks, if you want to access from outside your home wifi.

But at that point I'd switch over to an MQTT system.

That's basically been my journey of learning.

Great, thanks so much for your reply! This has really helped me.

One of the challenges was that I don't want to do any major modifications, since I am in rented accommodation.

Will definitely use WiFi instead of Windows.

What kind of calibrating switch would be best?
A light sensor of sorts?

I did EXACTLY this last week for another punter. Arduino on LAN, controlling 4 bidirectional blind motors.

His blinds had no feedback, but cutoff switches at each end, which we could reverse off when going the other way.
A couple of tricks allow us to ‘recalibrate’ when the blinds went to 0 or 100%
Easy to add small opto flags as real position sensors if needed.

Simple web / telnet-serial interface to control one or more motors simultaneously. Also provided a hardware button option to run any combination of motors open/closed/+5%/-5% per press.

Used relays to control the motors, as they were simpler in this application.