Roman Shade Control, getting the right LV switch

I’m trying to automate my shades. I use Insteon throughout my home.

That said, I’ve only thought of one workable solution. Namely, using an Arduino to read 3 inputs.

Input #1 = Insteon power line modem. Listen for certain messages and adjust shade to a given level based on the message received. Note: with this, I could listen for “bright/dim” messages and interpret them as raise/lower; however, I can’t match the speed of the bright/dim messages to the speed of the shade. So a user would hold down the bright/raise button and let go when they thought the shade was at the right level, but the shade would keep on going until it processed all of the “bright” messages.

Inputs #2 & #3 = A momentary-off-momentary rocker switch. When “up” is held, Arduino reads a voltage and moves the shade up until the voltage stops (e.g., when the switch is released). Repeat logic for “down”.

So multiple questions on this…

  1. Is that the right sort of switch I need to do this?
  2. What voltage / amperage should the switch be?
  3. How do I step down from 120V AC to some acceptable voltage for Arduino?

I haven’t used an Arduino yet, but from what I read, it seems that I’d need a 5VDC input. Any thoughts/comments are appreciated. Right now this is a thought experiment; but I’m gutting the room and need to know if I should make room in a gang box for the shade control. (Yes, I know it’ll have to be physically separated if the switch is LV)

  1. That’s one way of doing it; the other would be to simply have two (MUCH cheaper) momentary pushbuttons.

  2. Wouldn’t matter much - for toggling an Arduino input, the voltage would only be 5V, with negligible current. About anything you bought would probably last well into the next millenium (electrically, anyway).

  3. USE EXTREME CAUTION when doing anything with the power lines. That said, I’ll say it again:
    USE EXTREME CAUTION when doing anything with the power lines. Mr. Electricity will cheerfully kill you unless you’re paying attention all the time.

Now, for dropping the 120 (nominal, actually usually closer to 130) voltage to Arduino 5V input, you’ll need a voltage divider - specifically, 24:1 (120:5). Me, I’d hedge things a bit so that I made sure I stayed well under that 5V limit, and go with, say, 30:1. That would still give you a bit over 4 -1/4 volts - which would be plenty of margin. I’ve written a quick tutorial on voltage dividers that you can download at that should help you work out what values of resistors would work for you. If you’re going to work with DANGEROUS power line voltages, deliberately go about getting into the habit of doing something that ensures you’re working on de-energized equipment; my technique is to hold the power cable (down near the plug) between my teeth before I start :slight_smile:

USE EXTREME CAUTION when doing anything with the power lines.

HANG ON A MINUTE! Stepping down from mains power to a low-voltage device is not done with a voltage divider - YIKES!. :o Changes in load will affect the voltage output of the divider. And, that puts your precious Arduino and stuff too "close" to a dangerous force.

You need an AC adapter from any electronics, department or hardware store to power the Arduino. Something that puts out 6V (or 9V) DC at almost any mA rating will work. This power source will run the Arduino and maybe the relays or control circuits you need to switch the motors.

To answer your questions: 1) A rocker switch would work well for this application. 2) Anything will work because you are only switching a logic signal on an Arduino pin. 3) See above panic attack.

Not to complicate this issue (actually that's a lie), but you could use a rotary encoder instead of a rocker switch. You would only have to read the direction of movement of the encoder and adjust the shades until movement stops.

Also, when reading the data stream from the central controller, you can read in whatever bits you need and ignore others until you can read more data. That way their movement will stop very soon after input stops. You will miss rapid changes in command data, but for this application, I think it's not a big deal.

You'll need to understand the requirements of the motor(s) you use to move the shades. Usually motors are driven with a h-bridge circuit. Although your motors may include that if they are designed to control shades. Also, you should put limit switches in place to protect the mechanical parts from running past fully open or closed.


I don't exactly know how compatible Insteon is with the X10 system - but I think there's a relationship.

If so, you might want to take a look at:

It might provide a way to keep you from messing with 115VAC, and it's wireless.

[edit]Just read your posts better - you want input, so no help from this.[/edit]