Ir ao conteúdo
  • Cadastre-se

Módulos RR3 e RT4 da Telecontrolli


chacalgbi

Posts recomendados

Olá Amigo, no caso essa função quando chamada, ela apenas Decodifica o sinal por um modulo de 433 ligado ao pic no pino RB0, e salva o numero unico na variavel DATA, ai no programa principal você faz um if, exemplo:


while (TRUE) {
decoder();
printf(lcd_putc,"\fC: %Lu\nRECV",DATA);

if(DATA==111295008){ // Aqui é o numero do controle , no caso você pode pegar ele com uma tela lcd ou rs232 apertando o botão do controle e verificando o que ele retorna, depois cadastra no pic ...

printf(lcd_putc,"\fC: %Lu\nMESA 01 Chamou",DATA);// um exemplo de utilização seria imprimir em um lcd qual mesa chamou ou mandar pra um pc pra ficar numa lista ...
delay_ms(1000);


}
}

Abraços, veja no meu outro topico sobre implementação de Decodificação por software, postei um video demonstrando o funcionamento.

Link para o comentário
Compartilhar em outros sites

MAtheus LPS, fiz as alterações que você disse, e deu certo, primeiro testei de PIC para PIC, e depois usei os módulos RT4 e o RR3.

http://imageshack.us/photo/my-images/405/testerd.jpg/

Agora vou comprar um Display LCD e tentar o código que o colega Israel Felipe passou, se der certo, vai ser muuuuuuito mais fácil, e zilhões de vezes mais barato...

Mas o projeto continua.... Vou fazer mais testes aqui, qualquer dúvida (com certeza vou ter, rsrs) posto aqui.

Link para o comentário
Compartilhar em outros sites

Olá Amigo, no caso essa função quando chamada, ela apenas Decodifica o sinal por um modulo de 433 ligado ao pic no pino RB0, e salva o numero unico na variavel DATA, ai no programa principal você faz um if, exemplo:

Código:

while (TRUE) {

decoder();

printf(lcd_putc,"\fC: %Lu\nRECV",DATA);

if(DATA==111295008){ // Aqui é o numero do controle , no caso você pode pegar ele com uma tela lcd ou rs232 apertando o botão do controle e verificando o que ele retorna, depois cadastra no pic ...

printf(lcd_putc,"\fC: %Lu\nMESA 01 Chamou",DATA);// um exemplo de utilização seria imprimir em um lcd qual mesa chamou ou mandar pra um pc pra ficar numa lista ...

delay_ms(1000);

}

}

Abraços, veja no meu outro topico sobre implementação de Decodificação por software, postei um video demonstrando o funcionamento.

Muito interessante essa ideia, porém é possivel fazer um sistema de LearnCode funcionar com esses RX comuns junto com o uso de pics ?

Como ficaria a ligação desse sistema ? Teria que pegar o sinal "bruto" que vem do RX e mandar direto no RB0 do PIC ? Não precisa usar decodificador ?

Muito legal essa ideia, eu já sabia que existia o LearnCode mas nunca consegui implementa-lo com os pics.

Link para o comentário
Compartilhar em outros sites

Olá Felipe_zEr0, sim, eu utilizo um modulo que paguei 8 reais, no ML, desses 433 normal, eu pego a saida Linear, ele tem 2 saidas, uma Digital ( que é instavel ) e uma linear, eu pego a Linear e jogo direto no RB0 do pic, e com este codigo é possivel decodificar o sinal, e cada botão de cada controle ficam independentes. Se você Olhar no meu Topico Implementar Decodificação Por software,tem um video que eu fiz, que mostra, que eu utilizo um modulo comum ... e não uso decodificador fisico, apenas Modulo -> PIC, direto ... Abraços.

Link para o comentário
Compartilhar em outros sites

Olá Felipe_zEr0, sim, eu utilizo um modulo que paguei 8 reais, no ML, desses 433 normal, eu pego a saida Linear, ele tem 2 saidas, uma Digital ( que é instavel ) e uma linear, eu pego a Linear e jogo direto no RB0 do pic, e com este codigo é possivel decodificar o sinal, e cada botão de cada controle ficam independentes. Se você Olhar no meu Topico Implementar Decodificação Por software,tem um video que eu fiz, que mostra, que eu utilizo um modulo comum ... e não uso decodificador fisico, apenas Modulo -> PIC, direto ... Abraços.

Israel, fiz os testes aqui, deu certo até um certo momento, como eu não tinha o LCD aqui, fiz um cabo pra ligar no computador, com o CI MAX232. Primeiro eu testei outras aplicações, tanto o TX como o RX funcionam perfeitamente, ai fiz o código que você me passou e testei o RR3 com o controle de minha moto aqui, só que não funcionou não....:(:(:(

Testei a aplicação de PIC para PIC, e os módulos rr3 e o rt4 estão funcionando.

Vou postar a figura dos meus testes aqui e a tela do programa que recebe da serial pra você ver como tá ficando. E o código tb.

PS.: Tem como colocar alguns LEDs para ligarem indicando que o módulo receptor recebeu o código do controle e outro pra indicar que a variável data recebeu o código? Como ficaria aqui no código? vou postar ele completo.

É que só meio leigo em C, ai queria uma ajuda ai... Vê o porque que o código do controle não tá aparecendo no programa.

" pego a saida Linear, ele tem 2 saidas, uma Digital ( que é instavel ) e uma linear, eu pego a Linear e jogo direto no RB0 do pic"

De acordo o que você respondeu pro colega acima, qual é o pino de saida LINEAR do RR3? Eu tô ligando no pino 14, isto é, o penúltimo.

Código:

#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Resistor/Capacitor Osc with CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include <LCD.C>
#define RFIn PIN_B0 //entrada do sinal de RF
#define NBIT 28 // numero de bits
INT32 DATA=0;
void main()
{
int1 decoder(void)
{
byte x=0;
int16 time_aux=0;
DATA=0;
while(!input_state(RFIn))
{
time_aux++;
delay_us(10);
}

if((time_aux>1149) || (time_aux<=1151))
{

for(x=0;x<NBIT;x++)
{
while(input_state(RFin));
delay_us(250);

if(input_state(RFIn))
{
return FALSE;
}

delay_us(500);
if(!input_state(RFIn))
{
data|=0x8000000;
data>>=1;
}else data>>=1;
delay_us(500);
if(!input_state(RFin))
{
return FALSE;
}
}
return TRUE;
}
else return FALSE;

}
lcd_init();
while (TRUE) {
printf("\fC: %Lu\nRECV",DATA);
delay_ms(1000);
}
}

post-801738-13884959679566_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Olá Amigo, seu codigo está totalmente errado, vou corrigir pra você, o decoder() é uma função, ela nao pode ficar dentro do main, nunca, ela tem que ficar fora do main e ser chamada pelo main ...


#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Resistor/Capacitor Osc with CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include <LCD.C>
#define RFIn PIN_B0 //entrada do sinal de RF
#define NBIT 28 // numero de bits
INT32 DATA=0;

int1 decoder(void)
{
byte x=0;
int16 time_aux=0;
DATA=0;
while(!input_state(RFIn))
{
time_aux++;
delay_us(10);
}

if((time_aux>1149) || (time_aux<=1151))
{

for(x=0;x<NBIT;x++)
{
while(input_state(RFin));
delay_us(250);

if(input_state(RFIn))
{
return FALSE;
}

delay_us(500);
if(!input_state(RFIn))
{
data|=0x8000000;
data>>=1;
}else data>>=1;
delay_us(500);
if(!input_state(RFin))
{
return FALSE;
}
}
return TRUE;
}
else return FALSE;

}

void main()
{

lcd_init();
while (TRUE) {
decoder();
printf("\fC: %Lu\nRECV",DATA);
delay_ms(3);

}
}

Provavelmente desta forma irá funcionar, agora, só mais um detalhe, muito provavelmente, controle de moto não usa learnCode ... geralmente Moto e Carro usam um padrão proprietario, tanto que você nao pode pegar um controle de portão e cadastrar na sua moto ... então eu acho que com controle de moto não irá funcionar ... Controle de Carro e Moto usam um protocolo mais sofisticado para evitar clonagem. Abraços

Edição ----------------------------------

Olá, Teste com esse codigo, talvez o controle seja learn code ... vai saber né ... mas agora o codigo está correto, e se receber alguma coisa do controle provavelmente nao vai mostrar somente 0 no rs232, abraços.

Link para o comentário
Compartilhar em outros sites

Olá Amigo, seu codigo está totalmente errado, vou corrigir pra você, o decoder() é uma função, ela nao pode ficar dentro do main, nunca, ela tem que ficar fora do main e ser chamada pelo main ...


#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Resistor/Capacitor Osc with CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include <LCD.C>
#define RFIn PIN_B0 //entrada do sinal de RF
#define NBIT 28 // numero de bits
INT32 DATA=0;

int1 decoder(void)
{
byte x=0;
int16 time_aux=0;
DATA=0;
while(!input_state(RFIn))
{
time_aux++;
delay_us(10);
}

if((time_aux>1149) || (time_aux<=1151))
{

for(x=0;x<NBIT;x++)
{
while(input_state(RFin));
delay_us(250);

if(input_state(RFIn))
{
return FALSE;
}

delay_us(500);
if(!input_state(RFIn))
{
data|=0x8000000;
data>>=1;
}else data>>=1;
delay_us(500);
if(!input_state(RFin))
{
return FALSE;
}
}
return TRUE;
}
else return FALSE;

}

void main()
{

lcd_init();
while (TRUE) {
decoder();
printf("\fC: %Lu\nRECV",DATA);
delay_ms(3);

}
}

Provavelmente desta forma irá funcionar, agora, só mais um detalhe, muito provavelmente, controle de moto não usa learnCode ... geralmente Moto e Carro usam um padrão proprietario, tanto que você nao pode pegar um controle de portão e cadastrar na sua moto ... então eu acho que com controle de moto não irá funcionar ... Controle de Carro e Moto usam um protocolo mais sofisticado para evitar clonagem. Abraços

Edição ----------------------------------

Olá, Teste com esse codigo, talvez o controle seja learn code ... vai saber né ... mas agora o codigo está correto, e se receber alguma coisa do controle provavelmente nao vai mostrar somente 0 no rs232, abraços.

Deu certo!!! :D:D:D:D:D:D

Os códigos estão aparecendo agora.... muito obrigado!

Preciso aprender mais de C, coisas mínimas e eu Erro!!!

Os códigos não estão aparecendo os mesmos, eu acho que é pelo que você disse mesmo, os controles são diferentes, amanhã eu vou comprar um controle e fazer os testes!!

O projeto continua, qualquer coisa eu posto aqui...

Link para o comentário
Compartilhar em outros sites

Olá amigo, recomendo comprar um controle de alarme residencial ECP, que esse eu tenho certeza que é LearnCode ... é o que eu uso, Falou =)

Quando você tiver um tempinho, você comenta esse código ai que me passou, eu quero entender ele, vê se aprendo mais....

E o pino do RR3 que você tá ligando no PIN_B0, é o pino 14 mesmo?

Obrigado.....

Link para o comentário
Compartilhar em outros sites

Olá amigo, recomendo comprar um controle de alarme residencial ECP, que esse eu tenho certeza que é LearnCode ... é o que eu uso, Falou =)

Amigo, comprei o controle e fiz os testes aqui, Aparecem vários números aqui no programa que tá comunicando com o PIC pela porta serial, usei o PC ao invés de Display LCD.

Pude perceber que:

Controle ECP - KEY

Código de controle - 67108864

Botão 1 - 112139520

Botão 2 - 111090944

Botão 3 - 113188096

O controle fica enviando esse "código de controle" de vez em quando. E os números que eu pude notar que formavam de forma homogênea são esses ai de cima, botão1, botão2 e o Botão3.

Então acho que a decodificação foi bem sucedida!! :D:D

Eu coloquei um LED pra testar:

if(DATA==112139520) // Botão 1

{

output_high(PIN_E0);

delay_ms(1000);

output_low(PIN_E0);

}

Como é mesmo o código pra ligar apertando e desligar apertado o mesmo botão de novo?

Agradeço a sua ajuda!!

Valeu Mesmo, de coração...

Outros usuários do forum, se precisarem de códigos, esquemas e fotos, postem aqui que eu dou um jeito de arrumar pra vocês....

Abraço

Link para o comentário
Compartilhar em outros sites

  • mês depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...