In a private house      06/14/2019

Smart home: blinds control. We control blinds on Arduino with sound, voice or button Controlled blinds

For centuries, people protected their homes from bright sunlight and immodest looks with the help of curtains, blinds, drapes and drapes. However, everything is changing, and traditional means have been replaced by blinds, which are more practical and functional. In today's review of the editors of the site, we will look at what horizontal blinds on windows are, their device, the principle of operation, and much more.

Read in the article

A little history

According to the official version, horizontal blinds were invented in 1760 by the Englishman John Webster, but they were patented in America 80 years later by his namesake John Hemton. However, the history of the design for protection from the bright sun began much earlier. The prototype of the first horizontal blinds can be considered a frame into which they were inserted at a certain angle wooden plates. From the inside it was possible to observe what was happening on the street, but from the outside it was practically impossible to see what was happening in the house. Over time, the design improved, and vertical, horizontal, roller and other blinds began to be produced, and from the most different materials.


The good sides of horizontal blinds and their disadvantages

Thanks to regular improvements in the design of blinds, this type of curtain, so to speak, is becoming increasingly popular. Regardless of the type, these products have their advantages over traditional curtains. The indisputable advantages of blinds include the following:

  • space saving;
  • light weight;
  • functionality – protection from bright sun and immodest glances;
  • the ability to control the direction of the light flux and adjust the lighting intensity;
  • ease of installation;
  • ease of management and maintenance;
  • affordable price.

Roller fabric curtains “Day/Night”

The cost of horizontal blinds for windows may vary depending on the slat material, size, manufacturer, control system and region of sale. Most companies producing light protection structures indicate the price of horizontal aluminum blinds per m².

Our company offers the integration of electric drives of various mechanisms with a control system " Smart House". These solutions allow you to remotely control blinds, curtains, roller shutters, awnings, gates, home theater screens and other devices that have an electric drive for opening and closing something.

This allows you to make life in a modern country house, cottage or apartment is not only more comfortable and convenient, but also safer.

Blinds, awnings and curtains can be closed or opened either individually or in groups, for example, only in one room or on the entire floor. In addition, it is possible to close blinds, curtains and awnings throughout the building. This makes life easier in big house or cottage.

To close all the curtains or blinds, you don’t need to run across floors from room to room. All curtains and blinds can be closed remotely by pressing a button on the touch control panel or a smart button on the wall with a “close all” function.

And the control and management of metal roller shutters on the windows allows you to block all the windows in the house with the press of one button. Living in such a house will be both calmer and safer.


Blinds, curtains, roller shutters, awnings, gates, cinema screens and other devices can be controlled manually from any control devices included in the Smart Home system. These are touch and push-button control panels, switches, radio remote controls, as well as iPad and iPhone.








For example, you can open the garage door before entering remotely using a radio remote control without leaving the car. You can lower the screen and turn on the home theater by pressing a button on the Smart Home touch panel.

Except manual control, various automatic functions closing and opening by sensors. You can control blinds, curtains and other devices using light, rain and IR sensors.

Roller shutters, blinds and curtains can open in the morning at sunrise, and close automatically in the evening at dusk.

Awnings will be controlled depending on weather conditions. The Smart Home control system, having analyzed the sensors, will close the awnings on the windows in case of rain.


In addition, we offer control of curtains, blinds and roller shutters using complex control algorithms that take into account the residents’ private life schedule.

As control system equipment, our company uses modern equipment such foreign manufacturers as AMX, Creston and Control4, as well as controllers of our own production: the main control controller Master Controller and the data input/output controller CP-32.


The controllers developed in our company successfully perform most control functions various devices with electric drive. Moreover, their price is significantly lower in comparison with foreign analogues.


Since 1995, Rolatex has been known in Siberia as a manufacturer of blinds. It all started with a small office selling horizontal blinds. Now we are a large company with our own production and 16 branches in eight cities of Russia. Since then, the range of products has become more diverse - roller blinds, blinds with photo printing, roller shutters, awnings and much more. The choice of blinds for plastic windows has increased. High quality materials, wide choose fabrics, fast and high-quality installation are just a small part of our advantages. Our company offers to purchase custom-made blinds at affordable price. The Rolatex company has the largest collection of fabrics for roller blinds in Siberia, and many of them were developed exclusively for us. That is why the client can choose the most suitable option for himself and be confident in good quality and excellent service.

Features of custom-made curtains and blinds at Rolatex

Custom-made blinds for windows is a simple option for purchasing compact and easy-to-use dimming systems. The manufacturer installs a special mechanism that makes it possible to control the flow of light in the room. Our assortment includes very thick fabrics, thanks to which you can completely darken the room.

The ability to make custom-made blinds helps you choose shading systems for both your home and office. If classic options blinds are not suitable for you, we suggest you consider custom blinds. Automatic blinds have excellent sun protection properties, which makes it possible to provide optimal temperature indoors in summer.

If you want to order blinds for windows, please contact our company. This the best way darkening windows. Our blinds will last for many years, as we use the highest quality materials. The price of products in our company is quite low, which ensures their availability to a wide range of customers.

Optimal use of natural lighting in an apartment, home or office is necessary for people’s health, comfort, and energy savings. Therefore, the design of the Smart Home system involves the development of event-scenario control of blinds. Curtains, awnings, roller shutters and other types of window equipment can also be automated.

Typical automation solutions can take into account many external factors: weather conditions, external/internal lighting, temperature regime- to provide comfortable lighting scenarios. All of them serve to optimize the functioning of the climate system.

Benefits of blinds automation

1. Comfort. If you choose a convenient and pleasant automation mode for yourself, you will watch your blinds automatically close after sunset, or slowly open in the morning.

2. Convenience. You will save yourself from the daily tedious task of manually opening/closing blinds. Automatic mode will provide this function even without your intervention. They can also be controlled via smartphone, even while on vacation.

3. Energy saving. By adjusting the automation mode to the ambient light level, you will significantly reduce your energy costs. In winter, they will help keep you warm, thereby reducing heating costs.

4. Security. Automatic blinds increase safety while you are in or away from home.

5. Easy maintenance, wear resistance. Smooth movements of the blinds and the absence of sudden manual pulls ensure durability and wear resistance.

Automated blinds

The most popular wireless technology is used to create systems for home automation, allows you to quickly create a system that covers the entire house with the transfer of all device status parameters.

Choice of blinds

The market for blinds and shutters today offers several standard solutions, among which the most common are:

1. Power - 230V
The system is connected to the wireless controller directly. With its help, an electric motor is started, which allows you to move the blinds, stop them, and change the direction of movement.
This module is designed for all types of 230V blinds, roller shutters, motorized awnings. It is located behind the switch or next to the engine itself.

2. 24V power supply
Low-voltage blinds operate on 24V. Such systems have only 2 wires connected to the motor. They control the direction of movement by changing the polarity. The motors are connected to the controller. Control is carried out using an external switch. Remote control provided by connecting a relay switch.

We use Arduino to make an automatic system for opening and closing blinds with sound or button activation.

This Arduino blinds project will allow you to automate the opening and closing of blinds using just an Arduino and a stepper motor. With this project, you can save time on the process of opening or closing the blinds, and you can also impress others. For this tutorial we will need the following parts:

The design of this Arduino automatic blind system is quite simple and there are two ways to activate the curtains:

  • Using a sound sensor (microphone) to control it using hand claps;
  • Using buttons to open/close curtains.

Step 2. How does it work?

The operation of this system is very simple. Arduino accepts input signals from a sound sensor (microphone) or buttons. It then controls the stepper motor accordingly via a Darlington driver for the motor. Stepper motor attached to the curtain control handle and thus rotates and opens/closes the curtains.

Step 3. Connect and configure the stepper motor

The project should always be tested first before its final build. Let's start with the engine. The motor is connected to the 4 wires of the driver as shown in the pictures above. Depending on the direction of rotation, the driver must be connected accordingly.

The first button on the right will activate the motor to rotate in a specific direction (you can change this in the code below). Press the button 4 times and it will return to its original position as it will rotate 90 degrees with each press. The middle button blocks the circuit so that the first button cannot activate the motor.

The LED turns on when the engine is locked. The last button will return the motor to its original position no matter where it is when pressed.

int pin=(2,3,4,5,6,7,8,9); int steps = ( (HIGH,HIGH,LOW,LOW), (HIGH,LOW,LOW,HIGH), (LOW,LOW,HIGH,HIGH), (LOW,HIGH,HIGH,LOW), ) ; int numofroun=1; //Change accordingly to your needs int current=1; int type=3; int place=0; int lastLockState = LOW; long lastLockTime = 0; int LockState; int Lockreading; bool lock=true; int lastPauseState = LOW; long lastPauseTime = 0; int PauseState; int Pausereading; bool paused=false; bool pause=false; int lastReturnState = LOW; long lastReturnTime = 0; int ReturnState; int Returnreading; void setup() ( for (int num=0; num<5; num++) pinMode(pin,OUTPUT); for (int num=5; num<8; num++) pinMode(pin,INPUT); } void reset(){ for(int num=0;num<4;num++) digitalWrite(pin,LOW); } void stepper() { for (int num=0; num<4;num++) { digitalWrite(pin,steps);} if(type==0) {++place;} if(type==3) {--place;} delay(2); } void button1() { Lockreading = digitalRead(pin); if (Lockreading != lastLockState) { lastLockTime = millis(); } if ((millis() - lastLockTime) >50) ( if (Lockreading != LockState) ( LockState = Lockreading; if (LockState == HIGH) ( lock=false; if ((place!=1536*numofroun)&&(place!=1024*numofroun)&&(place! =512*numofroun)) (type=abs(type-3);) ) ) ) lastLockState = Lockreading; ) void button2() ( Pausereading = digitalRead(pin); if (Pausereading != lastPauseState) ( lastPauseTime = millis(); ) if ((millis() - lastPauseTime) > 50) ( if (Pausereading != PauseState) ( PauseState = Pausereading; if (PauseState == HIGH) ( Pauseled=!Pauseled; pause=!pause; if (Pauseled) (digitalWrite(pin,HIGH);) if (!Pauseled) (digitalWrite(pin,LOW);) ) ) ) lastPauseState = Pausereading; ) void button3() ( Returnreading = digitalRead(pin); if (Returnreading != lastReturnState) ( lastReturnTime = millis(); ) if ((millis() - lastReturnTime) > 50) ( if (Returnreading ! = ReturnState) ( ReturnState = Returnreading; if (ReturnState == HIGH) ( type=3; while (place>0) ( for (int num=0; num<4;num++) { digitalWrite(pin,steps);} --place; if (current==3) {current=0;} else ++current; delay(2); } reset(); } } } lastReturnState = Returnreading; } void loop() { if (lock==true) {button2();button3();} if (!pause) { if (lock==true) {button1();} if (lock==false) {stepper();} if ((place==2048)or(place==0)or(((place==1536*numofroun)or(place==1024*numofroun)or(place==512*numofroun))&&(type==3))) {lock=true;reset();} if (current==3) {current=0;} else ++current; } }

Step 4. Setting up the Arduino blinds circuit

After testing the stepper motor, you can use the above wiring diagram to make the final prototype. Once you're done you can simply change the input (button) to the sound sensor. Code below:

int pin=(2,3,4,5,6,7,8,9); int steps = ( (HIGH,HIGH,LOW,LOW), (HIGH,LOW,LOW,HIGH), (LOW,LOW,HIGH,HIGH), (LOW,HIGH,HIGH,LOW), ) ; float numofroun=4.5; //Change accordingly to your needs int current=1; int type=3; int place=0; int claps = 0; long detectionSpanInitial = 0; long detectionSpan = 0; long spancondition; bool spanconditioncheck=false; bool lock=true; int lastPauseState = LOW; long lastPauseTime = 0; int PauseState; int Pausereading; bool paused=false; bool pause=false; int lastReturnState = LOW; long lastReturnTime = 0; int ReturnState; int Returnreading; void setup() ( for (int num=0; num<5; num++) pinMode(pin,OUTPUT); for (int num=5; num<8; num++) pinMode(pin,INPUT); } void reset(){ for(int num=0;num<4;num++) digitalWrite(pin,LOW); } void stepper() { for (int num=0; num<4;num++) { digitalWrite(pin,steps);} if(type==0) {++place;} if(type==3) {--place;} delay(2); } void sound() { int sensorState = digitalRead(pin); if (sensorState == 0){ if (claps == 0){ detectionSpanInitial = detectionSpan = millis(); claps++; } else if (claps >0 && millis()-detectionSpan >= 50)( detectionSpan = millis(); claps++; ) ) if (millis()-detectionSpanInitial >= 400) ( if (claps == 2) ( lock=false; if ((place !=1024*numofroun)&&(place!=512*numofroun)) (type=abs(type-3);) spancondition=millis(); ) claps = 0; ) ) void button1() ( Pausereading = digitalRead(pin ); if (Pausereading != lastPauseState) ( lastPauseTime = millis(); ) if ((millis() - lastPauseTime) > 50) ( if (Pausereading != PauseState) ( PauseState = Pausereading; if (PauseState == HIGH) ( Pauseled=!Pauseled; pause=!pause; spancondition=millis(); if (Pauseled) (digitalWrite(pin,HIGH);) if (!Pauseled) (digitalWrite(pin,LOW);) ) ) ) lastPauseState = Pausereading; ) void button2() ( Returnreading = digitalRead(pin); if (Returnreading != lastReturnState) ( lastReturnTime = millis(); ) if ((millis() - lastReturnTime) > 50) ( if (Returnreading != ReturnState) ( ReturnState = Returnreading; if (ReturnState == HIGH) ( type=3; while (place>0) ( for (int num=0; num<4;num++) { digitalWrite(pin,steps);} --place; if (current==3) {current=0;} else ++current; delay(2); } reset(); spancondition=millis(); } } } lastReturnState = Returnreading; } void loop() { if (lock==true) {button1();button2();} if (!pause) { if ((lock==true)&&(millis()-spancondition>1000)) (sound();) if (lock==false) (stepper();spanconditioncheck=false; ) if ((place==2048*numofroun)or(place==0)or(((place== 1024*numofroun)or(place==512*numofroun))&&(type==3)))( lock=true; reset(); if (!spanconditioncheck)( spancondition=millis(); spanconditioncheck=true; ) ) if (current==3) (current=0;) else ++current; ) )

Step 5. Final steps

It is better to use foam to make a holder for the motor (1, 2) and the blind handle (3). Because In some homes, many people prefer not to drill into the walls; later, you can use double-sided tape to hold everything in place.

We also have a pause button in case your room gets too loud - then you can lock it so the curtains don't go crazy.

Note! You may have to adjust the potentiometer on the sound sensor to adjust the sensitivity.

Watch below a demo video of the final result of the project when controlled by clap:

Step 6. Alternative version using buttons

If you don't like sound controls, you can just use the buttons. In this case, you only need two buttons: activation and return to the starting position (since we no longer need a pause). Activation is the same as before, and the reset button will return the curtain back to its original position. The code for this version is below:

int pin=(2,3,4,5,6,7,8); int steps = ( (HIGH,HIGH,LOW,LOW), (HIGH,LOW,LOW,HIGH), (LOW,LOW,HIGH,HIGH), (LOW,HIGH,HIGH,LOW), ) ; int current=1; int type=3; int place=0; int lastLockState = LOW; long lastLockTime = 0; int LockState; int Lockreading; bool lock=true; int lastReturnState = LOW; long lastReturnTime = 0; int ReturnState; int Returnreading; void setup() ( for (int num=0; num<5; num++) pinMode(pin,OUTPUT); for (int num=5; num<7; num++) pinMode(pin,INPUT); } void reset(){ for(int num=0;num<4;num++) digitalWrite(pin,LOW); } void stepper() { for (int num=0; num<4;num++) { digitalWrite(pin,steps);} if(type==0) {++place;} if(type==3) {--place;} delay(2); } void button1() { Lockreading = digitalRead(pin); if (Lockreading != lastLockState) { lastLockTime = millis(); } if ((millis() - lastLockTime) >50) ( if (Lockreading != LockState) ( LockState = Lockreading; if (LockState == HIGH) ( lock=false; if ((place!=1024*4)&&(place!=512*4)) (type= abs(type-3);) ) ) ) lastLockState = Lockreading; ) void button2() ( Returnreading = digitalRead(pin); if (Returnreading != lastReturnState) ( lastReturnTime = millis(); ) if ((millis() - lastReturnTime) > 50) ( if (Returnreading != ReturnState) ( ReturnState = Returnreading; if (ReturnState == HIGH) ( type=3; digitalWrite(pin,HIGH); while (place>0) ( for (int num=0; num<4;num++) { digitalWrite(pin,steps);} --place; if (current==3) {current=0;} else ++current; delay(2); } digitalWrite(pin,LOW); reset(); } } } lastReturnState = Returnreading; } void loop() { if (lock==true) {button1();button2();} if (lock==false) {stepper();} if ((place==2048*4)or(place==0)or(((place==1024*4)or(place==512*4))and(type==3))){lock=true;reset();} if (current==3) {current=0;} else ++current; }

Demo of how it works below:

That's all. You can use your imagination and improve the project.