Ir ao conteúdo

Como descobrir o código de comandos, para ser usado num programa de um PIC


seth.11159

Posts recomendados

Postado

Boa noite, estou interessado em fazer uma placa receptora usando um PIC capaz de controlar uma carga através de um relé, e sendo controlado com um comando daqueles de portões de 433MHz. Já estive a ler alguns tópicos presentes neste fórum, encontrei um programa para fazer isso mas não sei como descobrir o código do meu comando, :( como faço para o descobrir?

Segue a baixo uma foto de uma placa, igual à que eu quero fazer...

A imagem não carregou por isso aqui vai o link da foto:

63.jpg

post-1010652-13884964197853_thumb.jpg

Postado

Eu penei pra consegui fazer isso, mas o caso é o seguinte, não uso essa placa ai não, eu uso o módulo e o PIC, ele decodifica o sinal e manda pra porta serial, eu recebo no computador e descubro qual é o código de cada botão daquele determinado controle, antes de você me pedir o código ou tentar fazer, primeiro arruma uma comunicação entre o computador e o PIC, via serial. Eu fiz com o CI MAX232.

Depois ligue a saída analógica do receptor 433,92MHz no RB1 do PIC16F877A.

O código tá lá em casa, depois te passo.

Postado

Esse é o código que decodifica o código do controle


#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Cristal
#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)
#define RFIn PIN_B0 //entrada do sinal de RF
#define NBIT 28 // numero de bits

#define conta PIN_B4
#define limpeza PIN_B5
#define garcon PIN_B6
#define beep PIN_B7

#define G PIN_B3 // Modificação feita 06/10/2011 (era A1)


INT32 DATA=0;
int32 seg=3000;
int efe=75;
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;

}

dentro do Void Main e do While você poe algo do tipo


void main()
{
intro();
while (TRUE) {
decoder();
printf("%Lu",DATA);
delay_ms(3);


if(DATA==110652416)
{
Comando 1
}
if(DATA==112749568)
{
Comando 2
}
if(DATA==111700992)
{
Comando 3
}

Para descobrir esses numeros "110652416" vai precisar ligar o circuito do PIC num programa do PC que lê a porta serial e ligar o botão do controle pra enviar esses dados para o PC, e você descobrir o código.

Esquema:

MaxPicPc.gif

Lembrando que o receptor RF deve está ligado na interrupção do PIC: RB0

Lembre-se de usar a porta analógica do receptor e não a serial, pelo menos comigo ela é mais estável, quem quiser, faça testes também com a digital.

  • 3 semanas 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...