February 26, 2025
Description
I wanted to control the tilt of my 2" venetian blinds through Home Assistant using ESPHome. My first setup was using a 28BYJ-48 stepper motor which worked but is was barely strong enough for the job. I had to use gear reduction to power these large blinds. A Nema 17 motor would have more torque for the job but are harder to fit in the head rail. In the future I plan on designing a Nema 17 motor version. The head rails of my blinds are about 47mm wide x 50mm tall. They use a 6.4mm square rod for tilting the blinds.
I have included the ESPHome code that I used to create a slider in Home Assistant to control the blinds, though I will be managing the blinds mostly though automations.
This servo holder will fit most of the high torque servos you find on Amazon with basic dimensions of 40mm x 20mm. This is the servo I used: https://www.amazon.com/dp/B076CNKQX4
There are two versions of the Servo Holder part, one with a slot for the wire and one without. I chose to slot the bottom of the servo casing and angle the wire out the bottom of the servo. I just didn't want the wire protruding up, but rather towards the back. You can chose your method and use the appropriate holder.
You will need to trim down half of the servo mounting bracket (about 3mm) on one side of the servo for it to fit in the head rail. Don't try to use 3D printed splines on the servo, the forces are just to great and it will eventually strip the splines. I used the metal servo arm that came with the servo, but I did have to trim down it's length so it would not hit inside the head rail. I cut off about 6mm. The “Blind Shaft to Servo Adapter” fits the servo arms inner screw hole. You will need two 3mm x 0.5mm x 8-10mm metric machine screws to mount the adapter to the servo arm.
My code is running on a ESP8266, but you can mod it for an ESP32, just change the output platform type value.
I was able to run the servo directly off the 5v on the ESP8266 using a 2amp USB power adapter. If you use D0 for the servo output, you can solder a 3 pin header to the ESP8266 on 5V, GND, & D0, then swap the + and - on the servo connector and plug it directly into the board. No other pins are required, simply power the ESP and servo off the USB programming port.
I used this ESP: https://www.amazon.com/gp/product/B096S314RY
I ran the servo wire through the existing square hole for the old tilt mechanism in head rail frame. I then mounted the ESP with double sided tape outside the head-rail over the square hole. Then hot glued the Cover over the board. Run the USB cord down the corner of the window frame. I didn't put the ESP inside the head rail because I didn't want to block the WiFi signal. But, it would be fine to completely hide it in the head rail if you can get a good signal…
One more thing, you will have to cut a little off one end of the square tilt rod for everything to fit. You will also remove all of the existing tilting mechanisms of course.
License:
Creative Commons — Attribution — Noncommercial — Share Alike
8