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

Responder esta

Respostas a este tópico

testei um controle de alarme aqui e achei a conexão lenta, teve hora q tive q apertar uma 5 x...é assim mesmo!?

Não é não...pode ser bateria fraca..

O meu funciona na hora - é perfeito.

Veja se o seu usa o chip HT6P20B e esta configurado para a mesmo clock de 2KHz.

http://labdegaragem.com/forum/topics/projeto-alarme-sem-fio-arduino...

Qual é marca ? Tire uma foto se quiser.

O mais provável é bateria fraca mesmo...

é esse modelinho aqui

http://www.intelbras.com.br/Produtos/Seguranca-Eletronica/Alarmes/A...

abri ele e ta lá o chip encoder HT6P20B, na minha central capta o endereço dele certinho!

vou tentar troca a bateria...

Mais um grande passo !! Já estou  estou conseguindo a comunicação entre os dois Arduinos !

Fiquei feliz porque penei um bocado.

Tive que estudar a fundo a interface I2C do Arduino.

A princípio achei que teria que usar Arrays, pointers para transmitir os quatro bytes do código do controle remoto (ou do sensor sem fio) do Arduino Pro Mini para o Arduino 2009 - Central de Alarme.

Portanto fiquei essa ultima  semana estudando também sobre esse assunto. E achei meio enrolado, pois esta sendo novidade para mim, no caso do Sketch. A ultima vez que estudei Matrizes foi a mais de 20 anos atrás...

Quebrando o côco ontem, pensei - acho que não irei precisar de Arrays (matrizes). São somente quatro bytes. 

Pois a função Wire.write pode transmitir bytes ou arrays. 

Optei por enviar os quatro bytes, um de cada vez. Podem achar tosco, mas funcionou !

O Arduino Pro Mini (Mestre I2C ) esta ligado ao módulo receptor de RF através do pino digital 2.

A comunicação entre os dois Arduinos, foi feita pelos pinos Analog 4 (SDA)  e pino Analog 5 (SCL) . 

Usei resistores de 4,7K ohms para pullup nas duas linhas  (conectados ao +5V) .

Não se esqueçam de conectar o terra dos dois Arduinos.

O Arduino 2009 (Central do Alarme - no caso escravo I2C ) deixei conectado ao meu PC através da Serial para monitoramento. 

Essa são as partes parciais do código para transmissão I2C :

Mestre - Arduino Pro Mini ================

#include <Wire.h>

const int Porta_I2C = 27;   // Endereço da Porta I2C do Arduino (27 é o meu numero da sorte)

unsigned long buffer=0;  // buffer do código do controle remoto - 28 bits somente 

void setup() 

Wire.begin();             // Inicialização da Interface I2C

Monitor_RF() 

(suprimi rotinas) 

byte Codigo_1,Codigo_2,Codigo_3,Codigo_4 = 0; 

Codigo_1 = buffer ;
Codigo_2 = buffer>>8 ;
Codigo_3 = buffer>>16 ;
Codigo_4 = buffer>>24 ;


Wire.beginTransmission(Porta_I2C); // Começa a transmissão através da Porta I2C 27
Wire.write(Codigo_1); // envia primeiro Byte
Wire.write(Codigo_2); // envia segundo Byte
Wire.write(Codigo_3); // envia terceiro Byte
Wire.write(Codigo_4); // envia quarto Byte
Wire.endTransmission(); // Finaliza a transmissão

Escravo - Arduino Central de Alarme ===================

#include <Wire.h>

const int Porta_I2C = 27;   // Endereço da Porta I2C do Arduino (27 é o meu numero da sorte)

unsigned long buffer=0;  // buffer do código do controle remoto - 28 bits somente 

void setup() 


Wire.begin(Porta_I2C);                // Conecta a interface I2C com o endereço 27 
Wire.onReceive(Recebe_codigo); // Função para receber os dados do codigo

void Recebe_codigo (int Numero_bytes) // Recebe quatro bytes de Codigo
{
  Numero_bytes = 4; // 4 bytes para receber
  byte Codigo_1,Codigo_2,Codigo_3,Codigo_4 = 0; // Bytes do codigo recebido
  unsigned long bufferR = 0; // Buffer de recebimento

while(Wire.available() > 0)
{
  Codigo_1 = Wire.read(); // recebe o primeiro byte
  Codigo_2 = Wire.read(); // recebe o segundo byte
  Codigo_3 = Wire.read(); // recebe o terceiro byte
  Codigo_4 = Wire.read(); // recebe o quarto byte
}

bufferR = Codigo_4 ; // remontando o codigo recebido
bufferR = Codigo_3 + (bufferR 8); //   deslocamento dos bytes para a esquerda
bufferR = Codigo_2 + (bufferR 8);
bufferR = Codigo_1 + (bufferR 8);

Serial.println(bufferR,HEX);
Serial.println ();
}

Oque acontece se tiver algum mal contato ou curto no barramento I2c? Não a perda do sincronismo dos bytes?

Não haverá comunicação, isto é, nenhum byte será transferido.

Colegas, esse é Sketch do Alarme Arduino Pro Mini :

https://github.com/ArduinoFree/Alarme-Arduino-Open-Source/blob/mast...

Vejam a saida da serial do Arduino Pro Mini  - esses quatro bytes são enviados para o outro Arduino (Central do Alarme) através da interface I2C. Esse bytes serão verificados na Central .

Modulo de Descodificacao Pronto
Codigo enviado : 854BA15
Codigo1 = 15
Codigo2 = BA
Codigo3 = 54
Codigo4 = 8

Vejam as telas da captura da comunicação serial I2C , usando o Analisador Lógico Arduino:

http://labdegaragem.com/profiles/blogs/tutorial-analisador-l-gico-c...

Tela de captura I2C :

Analisando com a ferramenta I2C analyzer:

E mais essa - muito bom !

Muito bom...

Ta ficando bacanaa...

Vc ta usando o arduino mini pra receber os dados do rf e passar via i2c pro arduino alarme..?

Sim exatamente isso !  

Modulo Recepção de RF ===> Arduino Pro Mini == I2C ==> Arduino 2009

O motivo disso é para liberar o Arduino 2009 (Central de Alarme) para executar outras operações sem interferir na descodificação do sinal recebido do módulo RF.

Como já percebemos anteriormente, a rotina de descodificação é muito exigente em termos de precisão na  contagem dos pulsos. 

Enquanto descodificando o sinal, a rotina não pode sofrer nenhuma interrupção. 

Ao mesmo tempo que quando descodificando, as outras rotinas ficavam travadas. 

Espero que desse modo, dividindo as tarefas, possa montar uma Central de alarme com o Arduino ou com o Raspberry Pi com mais eficiencia.

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço