Olá, amantes de robótica!
ACESSE ESSE OUTRO POST COM UM CÓDIGO SEM TRAVAMENTOS E ERROS DA RECEPÇÃO:
Como usar controle PPA (de alarme, portão eletrônico) com arduino (código sem erros e sem travamentos)
Futuramente, farei uma central de alarme e disponibilizarei o código e um tutorial aqui no site, mas, por agora, mostrarei como decodificar o controle remoto de 433Mhz e utilizar apenas um botão para ligar e desligar!
Qtd Itens:
1 - Arduino UNO ou qualquer outra versão;
1 - LED;
1 - Controle de alarme ou portão, PPA, Tx de 433MHz (o meu é da marca genno);
1 - Receptor RX 433Mhz;
3 - Jumpers (Fios);
1 - Fios de 17 cm para ser a antena do receptor.
Não sabe onde comprar as peças, confira esse post: onde comprar arduino e componentes
Basta fazer as mesmas conexões da imagem abaixo:
Atenção: para que o receptor receba o sinal normal à uma distancia de até aproximadamente 200 metros, é necessário que ele tenha antena, que é um fio de 17 cm, igual ao da foto abaixo.
Os dois pinos centrais do receptor são de dados (DATA), ou seja, tanto faz qual você usará no arduino.
Não sabe programar? Então acesse: Como programar em Arduíno, fazer robôs e projetos diversos
Se você é iniciante veja:Como enviar (upload) o programa pronto para a placa do arduino uno, mega entre outros
O código acima não é meu. Alterei para fazer comparações de códigos recebidos.
Pronto, qualquer duvida é só deixar nos comentários ou entrar em Contato
ACESSE ESSE OUTRO POST COM UM CÓDIGO SEM TRAVAMENTOS E ERROS DA RECEPÇÃO:
Como usar controle PPA (de alarme, portão eletrônico) com arduino (código sem erros e sem travamentos)
Futuramente, farei uma central de alarme e disponibilizarei o código e um tutorial aqui no site, mas, por agora, mostrarei como decodificar o controle remoto de 433Mhz e utilizar apenas um botão para ligar e desligar!
Veja o vídeo do controle e o receptor em funcionamento:
Vamos ao material que precisamos:
Qtd Itens:
1 - Arduino UNO ou qualquer outra versão;
1 - LED;
1 - Controle de alarme ou portão, PPA, Tx de 433MHz (o meu é da marca genno);
1 - Receptor RX 433Mhz;
3 - Jumpers (Fios);
1 - Fios de 17 cm para ser a antena do receptor.
Não sabe onde comprar as peças, confira esse post: onde comprar arduino e componentes
Vamos à montagem:
Basta fazer as mesmas conexões da imagem abaixo:
(clique na imagem pra ampliá-la)
Os dois pinos centrais do receptor são de dados (DATA), ou seja, tanto faz qual você usará no arduino.
Veja as fotos do projeto:
O mais importante, o código fonte:
Não sabe programar? Então acesse: Como programar em Arduíno, fazer robôs e projetos diversos
Se você é iniciante veja:Como enviar (upload) o programa pronto para a placa do arduino uno, mega entre outros
/*
>>>>> Criando Robô Com Arduino <<<<<
##### Robôs, Projetos e Tutoriais! #####
.:: Site principal: http://www.CriandoRoboComArduino.com/
.:: Site secundário: http://www.TestCriandoRoboComArduino.com/
========== IMPORTANTE ==========
O código está livre para usar, citar, alterar e compartilhar,
desde que mantenha o site como referência.
Obrigado.
--------------------------------------------------------------------------------------------------
Projeto: Como receber sinal do controle de alarme e portão PPA com o módulo Wireless RF 433Mhz
---------------------------------------------------------------------------------------------------
*/
/*
ARDUINO DECODIFICADOR HT6P20B COM RESISTOR DE 2M2 NO OSC.
ESTE CÓDIGO NÃO USA TIMER, INTERRUPÇÃO EXTERNA E NEM PINO DEFINIDO DE ENTRADA.
ELE MEDE O TEMPO DO PILOT PERIOD E COMPARA SE ESTÁ DENTRO DA FAIXA DEFINIDA,
SE TIVER ELE PASSA PARA CODE PERIOD E FAZ AS MEDIDÇÕES DE TEMPO EM NIVEL ALTO
SE TIVER DENTRO DA FAIXA ACRECENTA BIT 1 OU 0 NA VARIAVEL _DATA CASO NÃO ZERA AS VARIÁVEIS E RE-INICIA
APOS RECEBER TODOS OS BITS ELE PEGA OS 4 BITS DO ANTE CODE E TESTA PARA SABER SE O CÓDIGO FOI RECEBIDO
CORRETAMENTE, CASO RECEBIDO CERTO ELE COLOCA A VARIAVEL ANTCODE EM 1.
CRIADO POR: JACQUES DANIEL MORESCO
DATA: 28/02/2012 USANDO ARDUINO 0022.
FONES:54 3324 2251 54 9206 7168
E-MAIL: ibisul@ibisul.com.br
Permitido o uso público, mas deve-se manter o nome do autor.
**** Modificado por Criando Robo Com Arduino *****
*/
int x,startbit,ctr,dataok,t1,larpulso,larpulso1,larpulso2,larpulso3,larpulso4,bt1,bt2,antcode=0;
unsigned long _data=0; // DATA é o Código recebido do HT6p20 todos os 28 BITS onde, 22 do coodigo+2 dos botões+4 do anti-codigo;
unsigned long _dur,_dur1; // Duração do Pulso
byte _pin; // PINO receber o sinal RF digital 2
int liga_desliga = 1; //variável para saber se o led/alarme está ligado ou desligado
int resultado = 0; //resultado do módulo (%) da divisão, se restar ele é 1, se não restar é 0
void setup(){
_pin=2;
Serial.begin(9600);
pinMode(2, INPUT);// pino 2 DATA do receptor Rx 433mhz
pinMode(13,OUTPUT); //led
}
void loop(){
digitalWrite(3, digitalRead(2)); //Pisca o LED conforme o valor da entrada digital, testar interferencias.
if (startbit==0)
{// Testa o tempo piloto até o Bit de inicio;
_dur = pulseIn(_pin, LOW);
if(_dur > 8000 && _dur < 12000 && startbit==0)
{
larpulso=_dur/23;
larpulso1=larpulso-50;
larpulso2=larpulso+50;
larpulso3=larpulso+larpulso-50;
larpulso4=larpulso+larpulso+50;
startbit=1;
_dur=0;
_data=0;
dataok=0;
ctr=0;
}
}
// Se o Bit de inicio OK ENTÃO Inicia a medição do tempo em Nivel ALTO dos sinais, e testa se o tempo está na faixa.
if (startbit==1 && dataok==0 && ctr < 28)
{
++ctr;
_dur1 = pulseIn(_pin, HIGH);
if(_dur1 > larpulso1 && _dur1 < larpulso2) // Se a largura de pulso é entre 1/4000 e 1/3000 segundos
{
_data = (_data << 1) + 1; // anexar um * 1 * para a extremidade mais à direita do buffer
}
else if(_dur1 > larpulso3 && _dur1 < larpulso4) // Se a largura de pulso é entre 2/4000 e 2/3000 segundos
{
_data = (_data << 1); // anexar um * 0 * para a extremidade mais à direita do buffer
}
else
{
/* força finalização do laço */
startbit=0;
}
}
if (ctr==28){
if (bitRead(_data,0)==1)
{
if (bitRead(_data,1)==0)
{
if (bitRead(_data,2)==1)
{
if (bitRead(_data,3)==0)
{
antcode=1;
}
}
}
}
if (antcode==1)
{// Se foram recebidos todos os 28 Bits, o valor vai para a variavel _data e pode ser usada como exemplo abaixo.
dataok=1;
Serial.println(_data,DEC);//Alteração de binário (BIN) para decimal(DEC) para conseguir fazer a comparação
//Serial.println(_data,BIN); //Caso queira ver o código em binário e só retirar o comentário dessa linha
ctr=0;
startbit=0;
antcode=0;
delay(100);
//Comparação dos códigos
// Colocar código no botão ligar
if (_data==153611413){
resultado = liga_desliga % 2;//vê o resultado do módulo (resto da divisão)
if (resultado == 0) {//se da divisão não restar nada, ele ligará o led/alarme
digitalWrite(13, LOW);
}else{//se não, ele desliga
digitalWrite(13, HIGH);
}
liga_desliga++;
}
}//fim do decodificador
}//fim do if (ctr==28)}
}//fim do loop
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>>>>> Acesse os sites: <<<<<
.:: Robôs, Projetos e Tutoriais
http://www.CriandoRoboComArduino.com/
.:: Testes dos robôs, noticias sobre robótica e muito mais
http://www.TestCriandoRoboComArduino.com/
>>>>> Inscreva-se nos canais no Youtube: <<<<<
.:: Vídeos dos robôs, projetos e tutoriais
Criando Robô Com Arduino
https://www.youtube.com/CriandoRoboComArduin
.:: Mostrando os testes dos robôs e projetos
Test Criando Robô Com Arduino
https://www.youtube.com/TestCriandoRoboComAr
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
O código acima não é meu. Alterei para fazer comparações de códigos recebidos.
Pronto, qualquer duvida é só deixar nos comentários ou entrar em Contato
Boa tarde, Você tem alguma dica pra esse código, pois quando se aperta seguidas vezes ele trava, quando se adiciona mais botões trava mais rapido ainda.
ResponderExcluirBoa tarde Ciro, obrigado pelo comentário, irei verificar o código e corrigir esses problemas.
ExcluirAbraços
como gravar o controle
ResponderExcluirOlá, Denisson, o código do controle já vem gravado de fabrica, não tem como alterar esse código.
ExcluirTem como cria um novo Butão em uma protoboard e uma arduino pra testar ?
ExcluirOlá Dj Allex, tem sim, porem não se usa esse código e também tem que usar o emissor e o receptor do wirelles RF 433mhz.
Excluirirei fazer um post sobre isso daqui um tempo.
Ola cara não sei aonde estou errando estou usando esse seu código mais não aparece nada na serial monitor
ExcluirEstou tendo um probleminha em montar um código que arme e desarme um relé via rf433 mhz estou querendo testa um projeto no meu carro de ligar ele a distancia podes mim ajudar com os códigos
Allex, provavelmente você teve estar ligando os fios errados ou o receptor ou o controle podem estar queimados.
ExcluirNão Eles Funciona direitinho e acho que e a minha programação e que não esta la essa coisas toda, pode fazer uma programação pra mim estudar ligando e desligando uma lampa via rf ?
ExcluirEstou tendo um probleminha em montar um código que arme e desarme um relé via rf433 mhz estou querendo testa um projeto no meu carro de ligar ele a distancia podes mim ajudar com os códigos
ExcluirDj Allex, esse código esta pronto, é só vc colocar o rele na lampada e ligar na saída 13 do arduino, também de que alterar o código do controle na parte "//Comparação dos códigos ", certo?
ExcluirVou tentar qualquer cosia te peço ajuda de novo cara valeu
ExcluirE como eu disse tentei mais nada eu testo os mesmo componente com outro códigos e funciona
ExcluirCerto, clique em contato e me envia seu email, assim fica melhor para nossa comunicação. abraço
ExcluirO problema do Dj Allex foi resolvido com um outro código fonte, irei tentar fazer um material com essa solução. pois o controle dele não é de ppa.
Excluirtenho um codigo adicional se tiver interesse de troca para, incrementar a este seu que guarda as variaveis, _data na memoria Epron do arduino, fazendo assim toda a vez uma comparação, para que os usuarios possan cadastrar seus controles como forma de acesso etc... e ainda da opçao de leitura para caso queiram fazer um menu para cadastro de novos controles.
ResponderExcluirOlá, Elitec. Gostaria da sua contribuição.
ExcluirPor favor clique no link: Entre em contato e envie uma mensagem com o código, assim que possível iremos atualizar o post e colocaremos seu nome neste post!
Obrigado pela colaboração!
Elitec como posso entrar em contato contigo?
Excluiro amigo eu tenho interesse nesse codigo se vc tiver ele ainda filipepratesg12@gmail.com
ExcluirTambém tenho interesse no código Elitec. Poderia me enviar por email?
Excluirecastelhano@hotmail.com
Obrigado
Eu também tenho interesse no código Elitec, poderia me enviar por email?
Excluirecastelhano@hotmail.com
Obrigado
ola gostaria de saber se você tem um código para um controle diferente de ppa como por ex:rossi.
ResponderExcluirOlá, Ricardo.Se esse código não funcionou para esse controle, infelizmente não teremos.
ExcluirUm grande abraço
Realmente, depois de algumas pressionadas trava tudo.
ResponderExcluirAcesse o código sem erros: http://www.criandorobocomarduino.com/2015/02/como-usar-controle-ppa-de-alarme-portao.html
Excluirqual a tensão que sai do led ? precisaria que saise pelo menos 10V
ResponderExcluirOlá, Vitor.
ExcluirSai 5v, 10v não é possível.