Summary

To obtain optimal light blockage from my apartments poorly designed micro venetian blinds, I have flipped the blinds around so the tilt rod and raise/lower strings are now on the window side and hard to use.

This results in the bedroom blinds being left closed most of the time, and as my kitchen gets sunlight through the bedroom door, it leads to a dreary disposition.

This sounded like a perfect opportunity to improve my working from home experience through the use of technology by adding a button driven mechanical process to open and close my blinds, and I’d get to play with Arduino and do some more programming.

Code
Wiring diagram
Finished product
Parts required
Decisions I had to make
Features
Todo

Code

Code is on github here

code

Wiring diagram

wiring diagram

Finished product

Breadboard with open and close buttons attached to the wall. Lego tower behind the blinds, with the stepper motor stuck to the top. Shaft coupler connecting to the tilt rot.

layout

Random angry birds lego tower I had in the cupboard that was basically the correct height. One day I may replace it

layout2

Parts required

If you don’t have any equipment yet, a $40 kit at jaycar containing an UNO Arduino-Compatible board, breadboard, usb cable, jumper wires etc might be a good start and may be cheaper than buying some of the parts individually

Decisions I had to make

Tilt or raise/lower

Turning the tilt mechanism using either a servo or a stepper motor seemed like the best approach as then I wouldn’t have to figure out how to interface with the raise and lower string which is the kind you have to pull on an angle.

controls

Where to attach to the tilt mechanism

I took down the blinds and experimented with housing a motor in the top rail connected to the horizontal metal rod that is responsible for the tilt, but there’s not much room up there (at either end), and I decided that a modification that could be removed easily to return the blinds to manual control was preferred. This meant that I was going to have to attach a motor to the tilt rod that a human normally turns.

housing

Servo or stepper motor

A stepper motor allowed me to program in a set number of rotations between open and closed.

Manual controls or automated

Keep it simple to start with, and use buttons to open and close on-demand instead of trying to get fancy with automatic function based on time of day, light levels, or voice control

Features

  • 2x buttons - open and close
  • Open state is blinds horizontal, close state is blinds vertical
  • Stepper does 6 full rotations (so tilt rod turns 6x) between open and closed state
  • Pretty quiet! (it turns pretty slowly, ~30 seconds to change states)
  • Stores open or closed state in EEPROM to resume operation after power outages
    NB. To limit the number of writes to the finite EEPROM I am only storing the 2 major states of open or closed. This mean that in the rare case that power is lost while the blind is somewhere between open and closed state then a manual turning of the rod to reset state would be required
  • While blinds are turning, press either button to cancel current operation. Press the appropriate button to either continue or return to previous state.
  • Using 5V from Arduino to power stepper directly as well - will change this at some point
  • Using the Arduino builtin pullup resistors for the buttons to simplify the wiring

Todo

  • Play more with a light sensor - living in the city means there is a lot of light bleed from nearby buildings and so I didn’t collect enough samples to decide on a light threshold for automatic opening and closing
  • Add a Real-time clock (RTC) module for automatic opening and closing based on time of day
  • Wifi for voice control via Alexa/Google home - I maybe should have bought an Uno with wifi instead of needing to add an ESP8266 board
  • Play with hardware instead of software button de-bouncing
  • Find something other than matchsticks to pad out the shaft coupler