Arduino e transmissores ou receptores codelearning

Alguem tem algumas coisa a respeito de Arduino e transmissores ou receptores codelearning?

"virei" a internet e só acho com PIC !

Obrigado!

Ninguem?

=(

Nem voce Bubulindo!

:frowning:

Eu normalmente só falo do que sei... não faco ideia do que é codelearning... aliás, não fazia até pesquisar no google.

A ideia com que fiquei é que isto não é hardware específico, mas sim software que é programado no receptor para poderes mudar/adicionar/eliminar transmissores.

Assim sendo, o hardware poderá ser tão simples como um daqueles infra-vermelhos dos comandos de tv, ou algo mais complexo como um iButton ou algo assim.

Queres explicar um pouco mais o que pretendes para ver se eu descubro algo mais?

Code Learning seria a recepção do serial de um controle remoto e grava-lo na memoria o apaga-lo via um botao Learning contido no aparelho...
Os chips codificadores mais usados nos controles remotos de alarmes hoje
HT6P20 codigo fixo // pode ser copiado... :frowning: aqui o codigo para decodificar HT12E library - #26 by system - Networking, Protocols, and Devices - Arduino Forum

HCS??? codigo variavel// muda o codigo a cada transmissão//o codigo para decodficar é proprietário da Microchip e se você achar manda pra mim... :slight_smile:

fabiohbm007:
Code Learning seria a recepção do serial de um controle remoto e grava-lo na memoria o apaga-lo via um botao Learning contido no aparelho...
Os chips codificadores mais usados nos controles remotos de alarmes hoje
HT6P20 codigo fixo // pode ser copiado... :frowning: aqui o codigo para decodificar HT12E library - #26 by system - Networking, Protocols, and Devices - Arduino Forum

HCS??? codigo variavel// muda o codigo a cada transmissão//o codigo para decodficar é proprietário da Microchip e se você achar manda pra mim... :slight_smile:

Obrigado!
8)

bubulindo:
Queres explicar um pouco mais o que pretendes para ver se eu descubro algo mais?

Quero aproveitar varios transmissores de 433mhz tipo:

usados para abrir portao eletronico ou acionar alarmes domesticos, para interagir com o arduino!
e nao tinha amenor ideia de como era este code learning, mas o fabiohbm007 postou um codigo ai, vou dar uma olhada!
Obrigado!
:smiley:

Kotch ,

acho que é mais ou menos isto que você esta procurando...

[]´s

Bruno Leite

brunosl:
Kotch ,
acho que é mais ou menos isto que você esta procurando...
Bruno Leite

Obrigado, mas não é rfid, eu quero usar um transmissor destes que abre portao de garagem que sao codificados atraves de code learning e fazer o arduino receber esta radio frequencia decodificar o codigo e acionar um rele.

Obrigado!
8)

fabiohbm007:
Code Learning seria a recepção do serial de um controle remoto e grava-lo na memoria o apaga-lo via um botao Learning contido no aparelho...
Os chips codificadores mais usados nos controles remotos de alarmes hoje
HT6P20 codigo fixo // pode ser copiado... :frowning: aqui o codigo para decodificar HT12E library - #26 by system - Networking, Protocols, and Devices - Arduino Forum

HCS??? codigo variavel// muda o codigo a cada transmissão//o codigo para decodficar é proprietário da Microchip e se você achar manda pra mim... :slight_smile:

Voce ja fez alguma experiencia com este codigo, funciona?
8)

Ele não está otimizado, mas funciona... A saída DATA do receptor deve ser ligado ao Pino Digital 2 (interrupt 0), cada vez que ele recebe um codigo valido, ele imprime na serial.

Funcionamento do "CodeLearning":
Você tem um arduino que "liga uma lâmpada";
Há um botão chamado Learning ligado ao arduino;
Inicialmente não há nenhum controle remoto salvo na memoria;
Pressione o botao Learning e o arduino gravará na EEPROM o proximo codigo recebido.
Cada vez que o arduino receber um codigo, ele compara com o codigo salvo, se igual alterna o estado da lampada;
Se o botao Learning for pressionado por mais de 7 seg, o arduino apaga o codigo salvo

É usado para cadastrar/apagar controles remotos da memoria sem ter que reprogramar o microcontrolador.
No arduino é bobeira porque você já faz o programa com apenas o seu controle.

fabiohbm007:
Ele não está otimizado, mas funciona...

Vou aproveitar o feriado pra fazer uns teste, obrigado Fabio!

fabiohbm007:
Há um botão chamado Learning ligado ao arduino;
Inicialmente não há nenhum controle remoto salvo na memoria;
Pressione o botao Learning e o arduino gravará na EEPROM o proximo codigo recebido.
Cada vez que o arduino receber um codigo, ele compara com o codigo salvo, se igual alterna o estado da lampada;
Se o botao Learning for pressionado por mais de 7 seg, o arduino apaga o codigo salvo

Mas em qual pino vai este botao Learning no arduino

Kotch:
Mas em qual pino vai este botao Learning no arduino

o codigo do cara é "proof of concept", recebe sinal valido e manda pra serial eternamente... ele não implementou mais nada...
o botao learning, você vai criar uma função... pode ser qualquer pushbutton em qualquer pino livre.

fabiohbm007:
Há um botão chamado Learning ligado ao arduino;
Inicialmente não há nenhum controle remoto salvo na memoria;
Pressione o botao Learning e o arduino gravará na EEPROM o proximo codigo recebido.
Cada vez que o arduino receber um codigo, ele compara com o codigo salvo, se igual alterna o estado da lampada;
Se o botao Learning for pressionado por mais de 7 seg, o arduino apaga o codigo salvo

aqui eu narrei a execução do sketch no arduino que simula o CodeLearning, faltou uma partezinha...

Há um botão chamado Learning ligado ao arduino;
Inicialmente não há nenhum controle remoto salvo na memoria;
Pressione o botao Learning e o arduino gravará na EEPROM o proximo codigo recebido.
Cada vez que o arduino receber um codigo, ele compara com o codigo salvo, se igual alterna o estado da lampada;
Se o botao Learning for pressionado por mais de 7 seg, o arduino apaga o codigo salvo
Fica eternamente comparando os codigos salvos com os codigos recebidos, se sim alterna o estado da lampada a cada codigo valido recebido.

Ok, entendi. 8)

Pois fiquei olhando o código :astonished: e não achei o "bendito" botão :smiley:

Vou montar a "trapizonga"!

[]´s

ARDUINO DECODIFICADOR HT6P20B COM RESISTOR DE 2M2 NO OSC.
ESTE CODIGO NAO USA TIMER, INTERRUPÇÃO EXTERNA E NEM PINO DEFINIDO DE ENTRADA.

mas onde vai este resistor?

:frowning:

muito instavel, so funciona proximo do receptor!
interessante, da pra clonar o codigo de transmissores!
$)
8)

Colegas,

elaborei o código abaixo para trabalhar como transmissor, no lugar do controle remotor, para receptores code learning. Fica interessante conhecer como gerar um código code learning:

/*
Transmissor que emula controle para receptor Code Learning padrão HT6P20B.
O código funciona com a maioria dos receptores code learning existentes no mercado.
O comprimento de onda foi configurado como 476 microsegundos.
De acordo com o datasheet do HT6P20, deve-se enviar um pilot code de tamanho igual a 24 comprimentos de onde sendo os 23 primeiros em nivel LOW e
1 em nivel HIGH.
Depois disso se enviam os 22 bits de dados e 4 bits que configuram o end code.
Um bit 1 é feito com o sinal em LOW por duraçao de 2 comprimentos de onda e um sinal HIGH com duração de 1 comprimento de onda.
Um bit 0 é feito com sinal em LOW por duração de 1 comprimento de onda e um sinal HIGH com duração de 2 comprimentos de onda.

CRIADO POR: Renzo Patrick de Lima Ribeiro
DATA: 10/05/2012
ARDUINO: Duemilanove (com ATMega 328)
CONTATO: 67 8401-8006
E-MAIL: renzo@oi.net.br
Permitido o uso público, mas deve-se manter o nome do autor.
*/

int larpulso = 476; //define tempo de 1 comprimento de onda em microsegundos
unsigned long _data=0; // SET de 28 bits que identificará o controle. Pode ser alterado como queira, desde que os 4 últimos não mudem

void setup()

{
Serial.begin(9600);
pinMode(2, INPUT); // foi colocado um botão ligado ao terra nesse pino
pinMode(3,OUTPUT); // essa porta vai no pino de dados do transmissor RF 433MHz
digitalWrite(2,HIGH); //RESISTOR PULL-UP
digitalWrite(3,HIGH); //coloca a saída do transmissor alta
}

void loop()

{
if (digitalRead(2)==LOW) {
//botão do meu controle da garagem (fiz a leitura com o código para recepção do colega JACQUES DANIEL MORESCO): 1001000011011011011110010101
for (int k=0;k<2;k++){ // esse laço simplesmente repete o envio do código para certificar que será entregue
char codigo[29] = "1001000011011011011110010101";
// envia o pilot code
Serial.println("transmitindo...");
digitalWrite(3,LOW);
delayMicroseconds(larpulso*23);
digitalWrite(3,HIGH);
delayMicroseconds(larpulso); //fim do pilot code

for (int i=0;i<28;i++){
Serial.print(bitRead(_data,i),BIN);
if (codigo == '1') {

  • bitWrite(_data, i, 1);*
  • digitalWrite(3,LOW);*
    _ delayMicroseconds(larpulso*2);_
  • digitalWrite(3,HIGH);*
  • delayMicroseconds(larpulso);*
  • } else {*
  • bitWrite(_data, i, 0);*
  • digitalWrite(3,LOW);*
  • delayMicroseconds(larpulso);*
  • digitalWrite(3,HIGH);*
    _ delayMicroseconds(larpulso*2);_
  • }*
  • }*
  • }*
  • Serial.println ();*
  • Serial.println("dados transmitidos.");*
  • }*
    }

Vou testar, obrigado!