Hoje vou explicar como fazer a decodificação de um radio 433
esse mesmo que voce usa para ligar o alarme da sua casa ou abrir o seu portão eletrônico .
Por um acaso voce ja teve algum dia seu vizinho fechando o carro e abrindo o seu portão ?
Então chega de papo e vamos ao que interessa !
Voce vai precisar de :
1- Arduino
1-Receptor RF-433MHz
1-Protoboard
1-Emissor RF-433 ( Controle remoto de portão )
Alguns Jumpers
Vamos a ligação
Da esquerda para direita
Terminal 1- GND
Terminal 2 - Saida Digital
Terminal 3 - Saida Analogica
Terminal 4 - Vcc +5V
Terminal 5 - Vcc +5V
Terminal 6 e 7 - GND
Terminal 8 - Antena
Vamos as ligações
Terminal 1- GND
Terminal 2- Porta 2 do arduino
Terminal 3 - Sem ligação
Terminal 4- +5V
Terminal 8 - Um jumper para servir de antena
--
Vamos a programação
unsigned long _data, _data2=0;
unsigned long _dur,_dur1;
byte _pinIn = 2;
#define PPM_Pin 3
void setup()
{
Serial.begin(9600);
Serial.println("Pronto par decodificar");
pinMode(PPM_Pin, INPUT);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
attachInterrupt(PPM_Pin - 2, read_ppm, CHANGE);
TCCR1A = 0;
TCCR1B = 0;
TCCR1B |= (1 << CS11);
}
void loop()
{
Serial.println("Conteudo _data2 - " + String(_data2,HEX));
delay(500);
}
void read_ppm(){
static unsigned long counter;
counter = TCNT1;
TCNT1 = 0;
_dur = counter;
if(_dur > 20000 && _dur < 24000 && startbit==0)
{
digitalWrite(13,!digitalRead(13));
larpulso=_dur/23;
larpulso1=larpulso-100;
larpulso2=larpulso+100;
larpulso3=larpulso+larpulso-50;
larpulso4=larpulso+larpulso+50;
startbit=1;
_dur=0;
_data=0;
dataok=0;
ctr=0;
}
if(startbit == 1)
{
startbit++;
}else if (startbit==2 && dataok==0 && ctr < 28 && digitalRead(2) == HIGH)
{
++ctr;
_dur1 = counter;
if(_dur1 > larpulso1 && _dur1 < larpulso2)
{
_data = (_data << 1) ;
}
else if(_dur1 > larpulso3 && _dur1 < larpulso4)
{
_data = (_data << 1) + 1;
}
else
{
startbit=0;
}
}
if (ctr==28)
{
if (bitRead(_data,0)==1 && bitRead(_data,1)==0 && bitRead(_data,2)==1 && bitRead(_data,3)==0)
{
antcode=1;
} else {
ctr = 0;
}
if (antcode==1)
{
dataok=1;
_data2 = _data;
ctr=0;
startbit=0;
antcode=0;
}
}
}
Depois disso abra o monitor serial e aperte um botão em um controle .. irá aparecer o código hexadecimal que identifica o controle .
Impresionante amigo!!!...Para cuando el 2/2??...Mil gracias
ResponderExcluirPor favor el dos de dos gracias desde España!!!
ResponderExcluirO código funcionou perfeitamente...mas como enviar o HEXA decimal para abrir/fechar?
ResponderExcluirtenho um problema, quando meu transmissor esta ligado na fonte sem mandar nenhum sinal apenas ligado na fonte ele interfere em outro sistemas,como o alarme do carro não funciona não abre o portão o alarme da casa tbm não vai, desligando o modulo tudo volta a funcionar o que pode ser
ResponderExcluirQuanto o TX está ligado , ele fica transmitindo sinal aleatoriamente. O que interfere em outros sistemas que usam a mesma frequência , 433MHz , porque as centrais recebem todos os "códigos", elas apenas selecionam quais códigos são os dela e fazem o que são programadas
ExcluirAmigos acompanho esta discussão sobre o rf433, como fazer para que o transmissor rf433 não provoque interferência nos controles de carros proximo ?
ExcluirBoa noite colega.
ResponderExcluirTenho uma dúvida, o pino de dados do receptor é conectado no pino 2 ou 3 do arduino?
Já tentei de várias vezes e não funcionou.
Estou com essa dúvida pois no código esta #define PPM_Pin 3
ExcluirPino de entrada de dados é o pino 2
Excluir