Skip to content
My Account

HomeKit

Two-Motor Window Covering Study for HomeKit

A study of a two-motor system for heavy roller blinds with 28BYJ-48 motors and DRV8825 drivers, which was tested and not used in practice.

  • HomeKit
  • 3 min read
No ratings yet, be the first.

Not finished

This project was a study and it was not finished. The two-motor system was tested but proved not to be practical, so there is no firmware. The working approach, with one motor, is in ESP8266 HomeKit Blinds.

One motor is enough for a small roller blind, but a heavier or longer blind needs more. This project looked into a system with two motors, one at each end of the tube, to move a roller blind for Apple Home.

A blue roller blind with a small motor at each end of the tube

Choosing a motor

The aim was the smallest motor and the simplest solution, one that a hobbyist at home can use. Three motors were looked at:

MotorResult
28BYJ-48 stepper motor, 12 VThe choice: small, and it needs a simple driver
NEMA 23 stepper motorToo large, and it needs a heavy power supply and a separate driver
DC motor with gearbox, 12 V, 28 RPMToo large, and it needs a heavy power supply and a separate way of driving it
A 28BYJ-48 stepper motor
A NEMA 23 stepper motor
A 12 V DC motor with a gearbox, marked 28 RPM

The 28BYJ-48 is driven by a DRV8825 stepper driver. See the DRV8825 guide for the module.

A DRV8825 stepper driver board

Two motors

With a motor at each end, both motors have to turn the tube the same way. Since they are mounted mirrored, one turns clockwise and the other counter-clockwise to roll the blind up or down. The diagrams show it: Motor Left and Motor Right have opposite arrows.

A roller blind with a motor on the left end and arrows that show its direction of rotation
A roller blind with a motor on the right end and arrows that show the opposite direction of rotation

Two ways to connect the motors are drawn:

  • A driver for each motor. Each 28BYJ-48 has its own DRV8825.
  • One driver for both motors. Both motors are connected to a single DRV8825.
Diagram of two 28BYJ-48 motors, each connected to its own DRV8825 driver
Diagram of two 28BYJ-48 motors, both connected to one DRV8825 driver

The firmware

A gist of the author holds firmware for this project, written for ESP-Open-RTOS. It drives one DRV8825 and makes a HomeKit window covering with a current position, a target position and a position state. It is a work in progress, like the repository.

PinUse
GPIO14Direction (DIR) of the DRV8825
GPIO4Step (STEP)
GPIO5Enable (ENABLE)
GPIO12Button up
GPIO13Button down
GPIO2The on-board led

The position is a number from 0, closed, to 100, open. While the covering moves, the firmware gives one step pulse per update and moves the position by 1. When it reaches the target, it stops and disables the driver.

ButtonPressWhat it does
UpSingle pressStops when the covering moves, and otherwise opens it
DownSingle pressStops when the covering moves, and otherwise closes it
DownLong press, 4 secondsResets the WiFi and HomeKit settings and restarts the module

The identify request flashes the led in three groups of two. The gist also has a constant for the number of seconds from closed to open, which is 15, but the timing that would use it is commented out, so the firmware is not finished.

What came out of it

The setup was tested, and in the end it could not be used in practice. A single motor per blind, as in ESP8266 HomeKit Blinds, is the way that works.

Good to know

  • The repository has no firmware, no release and no source code. It holds the README and the images.
  • The repository is under the MIT licence.

The project is in the ESP8266-HomeKit-Window-Covering-System repository on GitHub.

Advertisement
All HomeKit

More HomeKit

Keep building.

Switches, sensors, plugs and blinds: more accessories that you build yourself and add to the Home app.

All HomeKit