Roman blinds automation - cordless Select Blinds

Roman blinds automation - cordless Select Blinds

thingiverse

if you happen to get the Select Blinds cordless Roman blinds you should have the mechnisim featured in the photos. You can automate it by printing this gearbox that will snap into the mechnisim.I have been successful at driving it with plastic 9g servos after modifying it to be 360. I highly recommand using metal gears which I plan on doing as I already had lost two servos as part of the design proccess as their gears are too fregile.The EC11B Horizontal Rotary Encoder screws in place and aigns with the big-gear's notch.For the electronics I am using wemos d1 mini D6 &D7 for rotary encoder input. D1 for servo input. I tested it with esphome. rotary encoder allows it to calibrate top position by moving to the top until rotary encoder reports no movement.detecting bottom position is solly by distance. But if you want to me more accurate you can use this tension sensor that can be built using the same rotary encoderhttps://www.thingiverse.com/thing:6501856for power I am using a 24v line that is wired to the window. it is than stepped down to 6v (to get more torque from the servo). wemos d1 can take up to 6.5v on the 5v pin, but I did not want to risk it. an alternative would be to swap the servo drive with an bridge and drive it with as much current that the motor can takethis is what I was testing withsensor: - platform: rotary_encoder id: position_encoder name: "Rotary Encoder" publish_initial_value: true resolution: 4 pin_a: number: D6 inverted: false mode: input: true pullup: true pin_b: number: D7 inverted: false mode: input: true pullup: true - platform: "copy" source_id: position_encoder id: position_encoder_dt name: position encoder dt filters: - heartbeat: 700ms - lambda: |- static float last_value = 0; float change = 0; change = x - last_value; last_value = x; return change;script: - id: calibrate_top then: - servo.write: id: my_servo level: -1 - wait_until: condition: lambda: 'return abs(id(position_encoder_dt).state) > 7;' timeout: 3s - wait_until: condition: lambda: 'return abs(id(position_encoder_dt).state) < 4;' timeout: 60s - sensor.rotary_encoder.set_value: id: position_encoder value: 0 - servo.write: id: my_servo level: 0number: - platform: template id: low_position name: Low Position optimistic: true step: 1 min_value: -5000 max_value: -300 initial_value: -1300 restore_value: trueservo: - id: my_servo auto_detach_time: 85s output: pwm_output transition_length: 0s idle_level: 7.5% min_level: 1.8% max_level: 12%output: - platform: esp8266_pwm id: pwm_output pin: D1 frequency: 50 Hzbutton: - platform: template name: Calibrate Top id: calibrate_top_button on_press: then: script.execute: calibrate_top - platform: template name: Stop id: stop on_press: then: - servo.write: id: my_servo level: 0 - platform: template name: Open Blind id: open_blind on_press: then: - servo.write: id: my_servo level: -1 - delay: 150ms - wait_until: condition: sensor.in_range: id: position_encoder above: -50 timeout: 65s - wait_until: condition: sensor.in_range: id: position_encoder above: 15 timeout: 1s - servo.write: id: my_servo level: 0 - platform: template name: Close Blind id: close_blind on_press: then: - servo.write: id: my_servo level: 1 - delay: 150ms - wait_until: condition: lambda: 'return id(position_encoder).state < id(low_position).state + 50;' timeout: 55s - wait_until: condition: lambda: 'return id(position_encoder).state < id(low_position).state + 15;' timeout: 500ms - servo.write: id: my_servo level: 0 - platform: template name: one_sec_up id: one_sec_up on_press: then: - servo.write: id: my_servo level: -1 - delay: 1s - servo.write: id: my_servo level: 0 - platform: template name: one_sec_down id: one_sec_down on_press: then: - servo.write: id: my_servo level: 1 - delay: 1s - servo.write: id: my_servo level: 0 - platform: template name: four_sec_up_q id: four_sec_up_q on_press: then: - servo.write: id: my_servo level: -0.1 - delay: 4s - servo.detach: id: my_servo #level: 0 - platform: template name: four_sec_down_q id: four_sec_down_q on_press: then: - servo.write: id: my_servo level: 0.02 - delay: 4s - servo.detach: id: my_servo #level: 0

Download Model from thingiverse

With this file you will be able to print Roman blinds automation - cordless Select Blinds with your 3D printer. Click on the button and save the file on your computer to work, edit or customize your design. You can also find more 3D designs for printers on Roman blinds automation - cordless Select Blinds.