Pessoal tenho feito algumas brincadeiras com o Arduino e gostei, achei bem interessante. Entendo muito pouco disso mas sou um entusiasta quando se fala de tecnologia. Pois bem estou construindo uma casa e esta tudo a meio caminho andado. Todo o cabeamento estruturado já foi feito. Vou fazer praticamente 100% de automação nela que quero fazer com Arduino, abaixo o que quero fazer:

Leitor biométrico e cartão em 2 portas

Persianadas

Aparelho de TV´s com matriz hdmi

Som ambiente multirrom

Monitoramento com cameras

Todas a lâmpada da casa controladas somente algumas com dimer

Algumas tomada automaticadas

Central de alarme

Sensor de gás, fumaça, temperatura

Climatização

Estou iniciando os testes começando com a iluminação, meu projeto luminitécnico fica pronto em 2 semanas.

O que mais me preocupa é inteface para controlar tudo isso. Estou estudando o Eclipse para fazer o aplicativodo em Android para criar os senários, mas tenho muita dificuldade nisso. Por exemplo um botão com no nome assistir tv no celular ou tablet que ao clicar nele ligue a TV apague a luz e feche a persiana, etc.

Tudo isso também com a possibilidade de fazer via wi fi ou pela internet.

Alguém teria algumas dicas? Eu poderia postar aqui, conforme o andamento do projeto todo o passo-a-passo da automação inclusive do app em Android para que isso fique acessível para todos.

Caso alguém possa colaborar seria ótimo.

Exibições: 8300

Responder esta

Respostas a este tópico

Paulo o código abaixo é do controle remoto da Samsung, não consegui fazer funcionar o sendSamsung entao utilizei o sendRaw, o que estou buscando é uma forma de diminuir este cógido que ficou gigante com menos da metade das teclas estourou a capacidade do arduino uno

#include <SPI.h>
#include <String.h>
#include <Ethernet.h>
#include <IRremote.h>


byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 };
byte ip[] = { 192, 168, 1, 119 };
EthernetServer server(8090);

String readString = String(30);

IRsend irsend;


unsigned int S_pwrxx[68]={4550,4400,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,550,550,550,550,550,550,550,550,550,550,550,550,600,1600,600,500,600,1650,600,1600,600,1650,600,1600,600,1650,600,1600,600};
unsigned int S_scrxx [68]={4500,4400,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,550,1650,600,1650,550,1650,600,1650,600,1600,600,1650,600};
unsigned int S_vupxx[68]={4550,4400,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1650,550,1650,600,500,600,500,600,500,550,550,550,550,550,1700,500,1700,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,1650,600,1600,600};
unsigned int S_vdown[68]={4500,4400,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,550,550,550,550,550,550,550,550,550,550,1650,600,1650,550,550,550,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,600,500,600,1600,600,1650,600,1600,600,1650,600};
unsigned int S_chupx[68]={4450,4450,550,1650,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,1600,600,500,600,500,600,1650,600,500,600,500,600,500,600,1650,550,550,550,1650,600,1650,550,550,550,1650,600,1650,600,1600,600};
unsigned int S_chdow[68]={4550,4400,600,1600,600,1650,600,1650,550,550,550,550,550,550,550,550,550,550,550,1650,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,1650,600,500,600,1600,600,1650,600,1600,600};
unsigned int S_mutex[68]={4500,4400,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1650,550,1650,600,1650,550,550,550,550,550,550,550,550,550,550,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,1650,600};
unsigned int S_enter[68]={4500,4400,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,600,500,600,1600,600,1650,600,500,600,1600,600,1650,600,1600,600,500,600,1650,600,500,600,500,600,1650,550};
unsigned int S_retur[68]={4450,4450,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,500,600,1650,550,1650,600,500,600,1650,550,550,600,1600,600,1650,600,1600,600,500,600,500,600,1650,600,500,600,1600,600};
unsigned int S_exitx[68]={4550,4400,600,1600,600,1650,600,1600,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,500,600,1650,600,1600,600,500,600,1650,600,500,600,500,600,500,600,1650,550,550,550,550,550,1650,600,500,600,1650,550,1650,600};
unsigned int S_3dxxx[68]={4500,4400,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1650,600,1600,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,1650,600,1600,600,1650,600,1600,600,500,600,500,600,1650,600,500,600,500,600,500,600,500,600,500,600,1600,600,1650,600,500,600};

void setup(){
Ethernet.begin(mac, ip); // Inicia o Ethernet
Serial.begin(9600); // Inicia a comunicação Serial
}

void loop(){
EthernetClient client = server.available();// Criar uma conexão de cliente
if (client) {
String linha = "";
boolean currentLineIsBlank = true;
while (client.connected()){
if (client.available()){
char c = client.read();
linha.concat(c);// =================
if (readString.length() < 30)// ler caractere por caractere vindo do HTTP
{
readString += (c);// armazena os caracteres para string
}



if(readString.indexOf("S_pwrxx")>=0) { irsend.sendRaw(S_pwrxx, 68, 32); delay(40);}
if(readString.indexOf("S_scrxx")>=0) {irsend.sendRaw(S_scrxx , 68, 32);delay(40);}
if(readString.indexOf("S_vupxx")>=0) { irsend.sendRaw(S_vupxx, 68, 32);delay(40);}
if(readString.indexOf("S_vdown")>=0) { irsend.sendRaw(S_vdown, 68, 32);delay(40);}
if(readString.indexOf("S_chupx")>=0) { irsend.sendRaw(S_chupx, 68, 32);delay(40);}
if(readString.indexOf("S_chdow")>=0) { irsend.sendRaw(S_chdow, 68, 32);delay(40);}
if(readString.indexOf("S_mutex")>=0) { irsend.sendRaw(S_mutex, 68, 32);delay(40);}
if(readString.indexOf("S_enter")>=0) { irsend.sendRaw(S_enter, 68, 32);delay(40);}
if(readString.indexOf("S_retur")>=0) { irsend.sendRaw(S_retur, 68, 32);delay(40);}
if(readString.indexOf("S_exitx")>=0) { irsend.sendRaw(S_exitx, 68, 32);delay(40);}
if(readString.indexOf("S_3dxxx")>=0) { irsend.sendRaw(S_3dxxx, 68, 32);delay(40);}



readString="";

{



client.stop(); // parar cliente
}
}
}
}
}

Bom dia Pessoal

Eu tenho o código abaixo para ligar dois reles com interruptor de pulso o problema é que ele aciona o rele2 somente se o rele1 estiver acionado e para deligar o rele2 eu tenho primeiro que desligar o 1. Alguém poderia me ajudar a resolver este problema. Eu quero ligar e desligar os reles independentemente se o outro estiver ligado.


int rele = 9; //porta a ser utilizada para o acionamento do rele
int botao = 10; //porta utilizada para o botão
int lebotao; //armazena informações sobre a leitura do botão
int statusrele = 0; //armazena o estado do relé (ligado/desligado)

int rele2 = 8; //porta a ser utilizada para o acionamento do rele
int botao2 = 11; //porta utilizada para o botão
int lebotao2; //armazena informações sobre a leitura do botão
int statusrele2 = 0; //armazena o estado do relé (ligado/desligado)



void setup()
{
pinMode(rele, OUTPUT); //Define o pino do rele como saida
pinMode(botao, INPUT); //Define o pino do botão como entrada

pinMode(rele2, OUTPUT); //Define o pino do rele como saida
pinMode(botao2, INPUT); //Define o pino do botão como entrada
}

void loop() // inicio do programa
{
lebotao = digitalRead(botao); // armazena a leitura do botao armazena a informação na variavel lebotao
if (lebotao != 1)
{
while(digitalRead(botao) != 1)
{
delay(200);
}
statusrele = !statusrele;
digitalWrite(rele, statusrele);
}


lebotao2 = digitalRead(botao2); // armazena a leitura do botao armazena a informação na variavel lebotao
if (lebotao2 != 1)
{
while(digitalRead(botao2) != 1)
{
delay(200);
}
statusrele2 = !statusrele2;
digitalWrite(rele2, statusrele2);
}
}

Olha não estou no momento com Arduino para testar seu Código mais dê uma olhada neste Sketch com apenas um acionamento ai você pode criar mais um, mais a ideia seria essa abaixo:

------------------------------

int porta0=0;

int PortaEntrada7 = 7;
int POrtaSaida8 = 8;

void setup(){

  Serial.begin(9600); //Inicializando Serial com velocidade 9600.
  pinMode (PortaEntrada7,INPUT);
  pinMode(POrtaSaida8,OUTPUT);
 
}

void loop(){


  int SensorValue = digitalRead(PortaEntrada7);// ler informação da porta 7 ou seja do BOTÂO
   

 
    if (SensorValue == 1){

    porta0 = !porta0;  // inverte o estado do botao e segura o ultimo estado
    digitalWrite(POrtaSaida8, porta0); // faz atribuição a porta 8 de acordo com o estado da porta (1 ou 0 HIGHT ou LOW)
   }
   delay(500);
 }

um exemplo de apenas um acionamento você pode fazer adequar ao seu código

Kleubson, foi perfeito de certo, estou adequando ao meu Sketch. Acredito que agora vou encontrar uma outra dificuldade...vou fazer os testes

grato

Quem bom, qualquer dificuldade estamos por aqui para compartilhamos conhecimentos .

Bom dia Pessoal

Tenho algumas duvidas...na automação da minha casa vou usar cerca de 30-40 reles mais censores e afins. Eu pergunto. No caso do rele são 3 cabos ligados ao arduino 5v, GND e a porta.  No caso de usar 30 a 40 reles qual a melhor forma de conectar o 5v e o GND? Qual seria a melhor solução para isso visto que o arduino nao possui tantas saídas 5v e GND?

Outro ponto seria o seguinte gostaria de dividir minha automação em 3 placas de arduino mega. Digamos que seria 1 para alarme 1 para iluminacao e outra para sensores. Uma delas somente teria o ethernet shield, Como seria a comunicação entre elas para que os comandos enviados apenas para a placa com o ethernet shield?

grato

Vc deve fazer as placas converssarem pela comunicacao serial ou seja pelo rx tx uma envia sinal e outra recebe e executa
Obs: vc deve ligar o rx de uma no tx da outra e vice versa
Rx eh o q recebe e tx o q transmite
Quanto aos reles seria melhor vc montar uma outra placa e colocar um regulador de tensao para ligar reles e sensores (como o lm 7805 com saida 5 v) e liga-lo numa bateria para alimentar tanto os sensores como os reles e arduinos ( visto q tera alarme o uso da bateria eh recomendado) seria interessante avaliar o uso de reles de estado solido

José Miguel

Eu pensei em comprar os reles em estado sólido mas nas estou conseguindo encontrar achei no mercado livre uma vez uma placa com 8 reles em estado sólido mas não encontrei. Se você souber onde encontrar eu agradeceria. Para o alarme vou usar bateria.

Procura as video aulas do renato aloi no youtube que tem uma sobre isso vc mesmo monta um rele desse

Olá pessoal minha automação está avançando, logo começo a postar "meus feitos aqui". Tenho duas duvidas no momento.

1) Estou montando a parte de iluminação com interruptor de pulso - parecido com os de campainha. Clicou uma vez ele acende a luz, clicou outra vez apaga. Como eu poderia fazer quanto clicar, exemplo, duas vez e ele fazer outro comando, como apagar todas a luzes, ou manter pressionado 3 segundos para abrir persiana ou fazer qualquer outra coisa.

2) minha outra duvida é a seguinte, no arduino mega, pelo menos no meu, tem algumas porta que estão definidas com HIGH, exemplo se eu ligar um rele na porta 22 e 23 ele fica ligado sem comando algum já as portas 24 e 25 não até a porta 50 tem mais algumas portas que estão definida com HIGH, isso é normal ou meu arduino esta com problemas?

Estou precisando de umas dicas de como automatizar cortinas e persiana, caso alguém tenha alguma ficaria grato.

abraço a todos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço