For a long time I wanted to motorize the curtains in my bedroom. I tried several ideas with cords, but all of them were not really practical. Then I tried it again with a timing belt and it works very good. The belt is driven by a motor, which I found in an old printer.
All parts are just shoved on to the curtain rod, so it is easy removeable without remains. The motor is controlled by an L293D and an arduino (I maybe replace it with an ESP 8266). Because the Motor draws quite some power, when powered by a 19V laptop charger, I had to combine both channels of the L293D. I also attached small magnets to the belt and reed contacts to the motor mount, so that the arduino is able to detect when the curtains are fully opened or closed. The opposing end holds a belt tightener made out of [previously lego] a turnbuckle. I originally planned to attach a weight with a string to the pulley slider, but the weight must be too heavy to generate enough force. [So I just pushed small sheets of cardboard between the wood and the curtain bracket until the tension was good]. The photo shows the original design without bodged cardboard.