Boa noite galera, estou pensando em fazer a automação das cortinas da minha casa. Alguém teria um link sobre o assunto ou alguma dica de como posso fazer isso?

Exibições: 8484

Responder esta

Respostas a este tópico

Robson Sato tem uma dica de automação de cortinas... saca la o canal dele no youtube >:¬)

Dei uma olhada no canal dele, mas ele fez a automação utilizando um carrinho de controle remoto, o que no meu caso não seria viável. Mas valeu pela dica.

nem +e pra fazer de carrinho, rsssssss

Era so pra pegar a ideia, da forma que foi feita nao seria necessario muitas modificaçao em uma cortina ja INSTALADA...

Abraços

Johnny tenho material bom para isto só que é com PIC e não com Arduino.

Montei aqui em casa um protótico, com a cortina da lavanderia de casa.

SDs

JA 

E vc poderia me disponibilizar esse material?

Ai vai.

Divirta-se, a minha funcionou legal...


Anexos

vou te mandar o programa pra você dar uma olhada!

Este programa funciona com persiana, porem esta com um problema no fim de curso 2, pois não faz o return pro inicio e para.

e o leitor ldr funciona por um tempo e depois para.

Obrigado Diego, mas o meu problema não é com a programação e sim como vou fazer para puxar e empurrar uma cortina. Vou usar cremalheira, um motor, ........ é isso que ainda não tenho muito ideia.


int botao1 = A3;
int botao2 = A4;
int botao3 = A5;
int sensor = A0;//Sensor com LDR
int fdc1 = A1;//fim de curso 1
int fdc2 = A2;//fim de curso 2
int valor1 = 0;//variavel para fim de curso 1
int valor2 = 0;//variavel para fim de curso 2
int state1 = 0;//variavel para botao 1
int state2 = 0;//variavel para botao 2
int state3 = 0;//variavel para botao 3
int a = 0;//variavel de controle
int b = 0;//variave2 de controle
int c = 0;//variave3 de controle

void setup(){
Serial.begin(9600);
pinMode(8,OUTPUT);//porta em que esta o motor de passos
pinMode(9,OUTPUT);//porta em que esta o motor de passos
pinMode(10,OUTPUT);//porta em que esta o motor de passos
pinMode(11,OUTPUT);//porta em que esta o motor de passos
}
void loop(){ // utilizei entradas analogicas para os botões e fins de curso, pois as portas digitais são muito sensiveis
valor1 = analogRead(fdc1);
valor2 = analogRead(fdc2);
state1 = analogRead(botao1);
state2 = analogRead(botao2);
state3 = analogRead(botao3);
delay(500);

if(state1 > 600 && state1 < 700){
Serial.println(111111);//para exibir quando for realizado a condição
a = 1;
abrir();
delay(500);
}
if(state2 > 600 && state2 < 700){
Serial.println(222222);//para exibir quando for realizado a condição
b = 1;
fechar();
delay(500);
}
if(state3 > 600 && state3 < 700){
Serial.println(333333);//para exibir quando for realizado a condição
c = 1;
automatico();
delay(500);
}
}
void abrir(){ //Executa para abrir a persiana
while(a){
digitalWrite(8, HIGH); //Logica mais simples para funcionamento do motor de passos sentido horario
delay(10);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
delay(10);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
Serial.println(1);//para visualizar o funcionamento na tela
valor1 = analogRead(fdc1);//fazer leitura para verificar condição
valor2 = analogRead(fdc2);//fazer leitura para mudar valor
state2 = analogRead(botao2);//fazer leitura para verificar condição
state3 = analogRead(botao3);//fazer leitura para verificar condição
if(state2 > 600 && state2 < 700)//Quando o botão é acionado ele fica com um valor de 650 na porta
{
a = 0;
b = 1;
c = 0;
fechar();
}
if(state3 > 600 && state3 < 700)//Quando o botão é acionado ele fica com um valor de 650 na porta
{
a = 0;
b = 0;
c = 1;
automatico();
}
if(valor1 > 600 && valor1 <700)//Quando o fim de curso é acionado ele fica com um valor de 650 na porta
{
state1 = 0;
state2 = 0;
state3 = 0;
return;
}
}
}
void fechar(){ //Executa para fechar a persiana
while(b){
digitalWrite(11, HIGH); //Logica mais simples para funcionamento do motor de passos sentido anti-horario
delay(10);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(10);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(10);
digitalWrite(8, LOW);
Serial.println(2);//para visualizar o funcionamento na tela
valor1 = analogRead(fdc1);//fazer leitura para mudar valor
valor2 = analogRead(fdc2);//fazer leitura para verificar condição
state1 = analogRead(botao1);//fazer leitura para verificar condição
state3 = analogRead(botao3);//fazer leitura para verificar condição
if (state1 > 600 && state1 < 700)//Quando o botão é acionado ele fica com um valor de 650 na porta
{
a = 1;
b = 0;
c = 0;
abrir();
}
if(state3 > 600 && state3 < 700)//Quando o botão é acionado ele fica com um valor de 650 na porta
{
a = 0;
b = 0;
c = 1;
automatico();
}
if(valor2 > 600 && valor2 < 700)//Quando o fim de curso é acionado ele fica com um valor de 650 na porta
{
state1 = 0;
state2 = 0;
state3 = 0;
return;
}
}
}
void automatico(){//Executa para ficar no modo automatico a persiana
while(c){
int val=analogRead(sensor);
Serial.println(val);
if(val < 300){ //se o sensor estiver com valor abaixo de 300
digitalWrite(11, HIGH); //Logica mais simples para funcionamento do motor de passos sentido anti-horario
delay(10);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(10);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(10);
digitalWrite(8, LOW);
Serial.println(3);//para visualizar o funcionamento na tela
int val=analogRead(sensor);
}
if(val > 700){ //se o sensor estiver com valor acima de 700
digitalWrite(8, HIGH); //Logica mais simples para funcionamento do motor de passos sentido horario
delay(10);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
delay(10);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(10);
digitalWrite(11, LOW);
Serial.println(4);//para visualizar o funcionamento na tela
int val=analogRead(sensor);
}
if(val <= 700 && val >= 300){//se o sensor não estiver com nenhuma das duas condições

delay(1000); //esperar 1 segundo para fazer verificação

}

valor1 = analogRead(fdc1); //fazer leitura para verificar condição
valor2 = analogRead(fdc2); //fazer leitura para verificar condição
state1 = analogRead(botao1);//fazer leitura para verificar condição
state2 = analogRead(botao2);//fazer leitura para verificar condição
if (state1 > 600 && state1 < 700)//Quando o botão é acionado ele fica com um valor de 650 na porta
{
a = 1;
b = 0;
c = 0;
abrir();
}
if(state2 > 600 && state2 < 700)//Quando o botão é acionado ele fica com um valor de 650 na porta
{
a = 0;
b = 1;
c = 0;
fechar();
}
if(valor1 > 600 && valor1 < 700) //Quando o fim de curso é acionado ele fica com um valor de 650 na porta
{
state1 = 0;
state2 = 0;
state3 = 0;
return;
}
if(valor2 > 600 && valor2 < 700) //Quando o fim de curso é acionado ele fica com um valor de 650 na porta
{
state1 = 0;
state2 = 0;
state3 = 0;
return;
}
}
}

o que eu acho melhor mesmo é um motor com uma rodana!

Mas vai pelo seu pensamento que funciona.

Diego,

coloquei uma roldana em cada ponta, e uma corda de algodão encerada bastante rígida (ao mesmo tempo flexível para correr pela roldana), um trilho e alguns ganchos. Amarrei como um circuito fechado (o) ao puxar de um lado o outro abre. Bem simples.

Você poderia me mandar algumas fotos do seu modelo.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço