Pessoal , estou lançando esse novo projeto open source, isto é, quem quiser ajudar será bem vindo.

Todos terão acesso á todo projeto, portanto cada um poderá montar o seu.

Depois de desvendar o funcionamento de controle remoto sem fio no Lab de Garagem, agora já é possível começar o projeto.

http://labdegaragem.com/forum/topics/desvendando-controle-remoto-rf

Esse diagrama em blocos que eu fiz é uma idéia inicial. Quando sugerir alguma coisa, especifique de qual bloco esta tratando, para facilitar a compreensão de todos.

Módulo de recepção RF :

A frequência que usarei é a de 433,92 MHz - a mais comum. Mas nada impede de usar outra frequência, desde que o receptor, os sensores e o controle remoto sejam da mesma frequência.

O sistema de codificação que usarei é o do chip Encoder HT6P20B. 

Data sheet :http://www.holtek.com.tw/pdf/consumer/6p20v170.pdf

Selecionei esse, pois existem inúmeros sensores e controles remotos que usam esse chip.

Vejam no tutorial mencionado acima, para entender como ele funciona.

Módulo RTC :

Usando o chip DS1307 - muito comum. Será usado para registro de log, isto é, todas a operações realizadas pelo Arduino serão registradas com horário. Exemplo: Alarme ativado, alarme disparado, sensor ativado, etc. Esses arquivos de log serão gravados no Módulo SD CARD.

Painel - Botões :

Painel de controle do Alarme, podendo ter botões, como aprender sensor, aprender controle remoto, etc. Se necessário, poderá ter um teclado numérico para digitação de senha e ou  de configurações.

Módulo Sirene:

Seria interessante inovar na sirene, como usar sons personalizados. 

No início poderá ser usada uma sirene comum.

Módulo Display LCD:

Para mostrar status do alarme, horário, configuração e disparos, etc

Interface WEB / GSM:

O objetivo é enviar email ou então mensagem SMS, avisando o proprietário que o alarme foi disparado. Informando qual sensor e qual horário foi acionado.

Seria muito bom também se o proprietário pudesse remotamente ativar ou desativar o alarme  e verificar o status do mesmo. 

Fonte / Bateria:

Fonte de alimentação do Alarme e da Sirene. Uma bateria de backup é essencial.

O projeto esta lançado. Aos poucos acrescentarei mais informações.

Agradeço antecipadamente a todos que desejarem fazer contribuições para o projeto.

Sempre quis gerenciar um projeto OPEN SOURCE, e esta vai ser uma nova oportunidade.

Open Source (Código Aberto):

http://pt.wikipedia.org/wiki/C%C3%B3digo_aberto

Gustavo Murta (BH) .

Exibições: 59392

Responder esta

Respostas a este tópico

josé, se eu quiser futuramente acionar uma fechadura eletronica sem fio e tmb colocar uma sirene sem fio, é certo que eu vou precisar do transmissor RF?

Sim, nesse caso você estará transmitindo o sinal de RF.

Mas já existem fechaduras e sirenes sem fio?

pelo q vi na net sim

josé, comprei um modulo rf e o sensor sem fio que vc mesmo postou aqui

pronto pra colocar em prática

Anexos

Erick tenho feito progressos, já consigo identificar o código recebido pelo módulo de RF e selecionar a operação de liga, desliga e ou disparo do alarme. A minha dificuldade agora é conseguir desligar o alarme, após o disparo indevido. Aguarde. Em breve estarei disponibilizando todo  o programa.

Esta sendo um desafio . Veja as rotinas abaixo:

// Verifica o Codigo do dispositivo sem Fio

switch(addr)
{
case 0x123456:                                                     // Codigo do Controle Remoto

if ((bitRead(buffer, 4)==1) && (bitRead(buffer, 5)==0)) // Botao 1 do Controle Remoto acionado
{
Liga_Alarme();
}
if ((bitRead(buffer, 4)==0) && (bitRead(buffer, 5)==1)) // Botao 2 do Controle Remoto acionado
{
Desliga_Alarme();
}
break;

case 0x123457:                                                     // Codigo do Sensor Sem Fio

if ((bitRead(buffer, 4)==1) && (bitRead(buffer, 5)==0)) // Botao 1 do Sensor sem fio acionado
{
if (Alarme_ativado == true) Dispara_Alarme();
}
if ((bitRead(buffer, 4)==0) && (bitRead(buffer, 5)==1)) // Botao 2 do Sensor sem Fio acionado
{
Serial.println(" Bateria fraca no Sensor sem Fio");
}
break;

default:
break;
}

muito bom josé.

acabei de testar o sensor com o RF e funcionou perfeito com o codigo do tucato... muito bom

mais tarde vou avançar no projeto

Mas qual o teu problema José?

Guilherme, as rotinas de disparo de alarme usavam a função delay. 

Por isso elas não permitiam que a rotina de decodificação do controle remoto/sensores funcionasse.

Por exemplo, se o alarme for disparado, eu não consigo desligar o alarme, enquanto toda rotina terminar.

Portanto, estou tentando implemetar rotinas usando os timers do Arduino.

Tenho feito medições de tempo, tentado algumas rotinas.

Mas ainda não conclui uma solução efetiva.

tmb tava agarrado nisso em meu projeto, tentei usar threads mais não obtive sucesso!

Se ajudar

Conto 10 segundos dentro do loop

var int segundos_anterior = 0 // variável criada no inicio.
var int segundos = 0// carrego segundos do timer
if(segundos_anterior != segundos)
{
timerbutton1++;
Serial.print("Segundos =:");
Serial.println(segundos);
if(timerbutton1 >= 10)
{

tempo_sleep_ativo_sala1 = !tempo_sleep_ativo_sala1;

Serial.print("Faz alguma coisa");

timerbutton1 = 0;

}

segundos_anterior = segundos;
}

}

Paulo, 

depois de várias tentativas frustadas usando a função Millis, hoje pela manhã, pensei na possibilidade de fazer o delay de tempo, usando várias rotinas de descodificação ( por exemplo 10 x Monitor_RF() = 200 ms ).

Mas ainda não testei-a.

Entendi... Pra ver se ajuda, as minhas conclusões quando testei a função millis foram as seguintes:

A função Millis após ativada não há como zera-la, ou seja, se executar a função Millis ma vez no fonte ela ficará contando o tempo "infinitamente" enquanto o atmega for alimentado.

Exemplo: Se executar a função millis() a primeira vez atribuindo o valor uma variável seu resultado será 0, se após 1 segundo executar novamente a função millis() seu resultado será 1000, executando 10 segundos o resultado sera 10000.

Assim pra usar essa função vc precisa de um esquema de backup de tempo por exemplo:

Quando o alarme for acionado vc pega o resultado da função millis, vamos supor que é 50000.

Em seguida vc precisa de uma variável de controle, que será o tempo em que o alarme vai aguardar até efetivamente ligar a sirene, assim vc precisa saber a diferença entre o backup e o tempo atual, ou seja:

If (millis()-backup == tempo){

    Ativa_alarme();

}

Espero que tenha ajudado... Abraaços

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço