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: 59385

Responder esta

Respostas a este tópico

José,

Uma sugestão para seu código, no lugar do dellay(xxx), coloque o código abaixo, pois o dellay trava a execução do programa, e o código abaixo não, pois ele executa dentro do loop.

Faça a declaração antes do Setup

// T0 (Temporizador TON)
int base = 0;//Valor para contagem do temporizador
int T0_Q = 0;//Saida do temporizador ton = 0
long  TI0 = 0;//Saida do temporizador tempo ton = 0
void T0(int n, long M) {
int   T =0;
if (n){if (millis() - TI0 >= M){T = HIGH;}}else { T = LOW; TI0 = millis();  }
T0_Q = T;
}

Para usar outros temporizadores, basta trocar o numero 0 por 1,2,3.... conforme a quantidade de temporizadores que você precisar.

Eu tenho um programa rodando 80 temporizadores, sem travar o código ou o micro.

No programa você usa ele deste modo

T0(sua variável de disparo do temporizador == LOW   , 750<-tempo até ativar a saída do temporizador  );
  if(saída do temporizador->T0_Q   == HIGH  )  seu código de condição->{R0 = HIGH;} else{R0 = LOW;}

Exemplo:

  T0(R0 == LOW   , 750  );
  if(T0_Q   == HIGH  ){
R0 = HIGH;} else{R0 = LOW;}

Se R0 for LOW o temporizador inicia a contagem até 750ms então coloca T0_Q em HIGH, se T0_Q==HIGH coloca R0= HIGH, se R0 ==HIGH reset o T0, fazendo com que o temporizador gere pulso em R0 a cada 750ms.

Qualquer coisa só avisar.

Abraços...

Show, isso ajuda todos os projetos :D

Isso mesmo... Nesse caso é necessário, no meu fonte fiz exatamente isso, ja que quando aguardamos pra tocar o alarme temos que dar o tempo para o usuário desativa-lo, e isso só pode ser feito utilizando a função Millis().

Bem interessante ! O Sketch acessa os timers do processador ?

Vou estudar e fazer testes !

Muito obrigado pela dica.

Não tinha lido isso ainda :

http://arduino.cc/en/Reference/Delay#.Uw6CivldVsg


"Embora seja fácil criar um LED piscando com a função delay (), e muitos Sketchs usando pequenos atrasos para tarefas como mudar debouncing, o uso de delay () em um Sketch tem desvantagens significativas.

Nenhuma outra leitura de sensores, cálculos matemáticos, ou manipulação de pinos pode continuar durante a função de atraso, portanto traz um impasse para outra atividade.

Para abordagens alternativas para controlar o tempo,  veja a  função millis () .

Programadores mais experientes costumam evitar o uso de delay () para o sincronismo de eventos com mais de 10 dos milésimos de segundo a menos que o Sketch Arduino seja  muito simples.


No entanto, certas coisas vão continuar enquanto a função delay () está controlando o chip Atmega, porque a função de atraso não desabilita as  interrupções. A comunicação serial que aparece no pino RX , valores de PWM (analogWrite), estados de pinos são mantidos, e as interrupções irão funcionar como deveriam."

Bacana, assim que tiver um tempo vou dar uma olhada no fonte.


Tentei baizar como zip e não consegui, tem algum segredo nesse site?

O próximo passo é usar a função CASE para testar o código dos sensores e do controle remoto.

Se o código for validado, ele executa a rotina por exemplo ligar/desligar alarme ou disparar/desativar Sirene, etc.

Tá ficando bão demais ! (em mineirês) 

José, como você esta pensando em cadastrar os códigos dos sensores?

A principio deixei chumbado no fonte, mas o mais legal seria algum esquema de cadastrar novos dispositivos.

Na fase incial de testes , vamos inserir o código no fonte.

Posteriormente (depois de implementado o teclado e o LCD) criaremos a opção de cadastro de sensores e controles remotos.

Nos alarmes mais simples, tem um botão para cadastro do sensor sem fio e um botão para cadastro do controle remoto.

Penso em associar nomes aos sensores, para facilitar na identificação, durante o disparo dos mesmos..

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço