Ir ao conteúdo

Módulo HX1838 Infravermelho


chacalgbi

Posts recomendados

  • 7 meses depois...
Postado

Use o protocolo NEC,na decodificação.

Só tenho programado em ASM,até hoje não fiz uma versão C pois não tenho mais um Hardware para testar,como estou num projeto com ARM não vou garantir que faço um exemplo tão cedo,mas este fim de semana vou tentar.

Postado

Use o protocolo NEC,na decodificação.

Só tenho programado em ASM,até hoje não fiz uma versão C pois não tenho mais um Hardware para testar,como estou num projeto com ARM não vou garantir que faço um exemplo tão cedo,mas este fim de semana vou tentar.

Postado

Sobre o protocolo NEC:

http://www.sbprojects.com/knowledge/ir/nec.php

Chacalbi, você utiliza o CCS né. Ainda não encontrei uma biblioteca pronta para o protocolo NEC mas encontrei uma mais genérica. Tem que adaptar:

http://www.ccsinfo.com/forum/viewtopic.php?t=21290

No inicio do código tem muita coisa que você não precisa. Como o código é de 2004, provavelmente naquela época não tinha uma lib para LCD e ele fez na unha. Apenas preste atenção nas interrupções.

Falou

Postado

Sobre o protocolo NEC:

http://www.sbprojects.com/knowledge/ir/nec.php

Chacalbi, você utiliza o CCS né. Ainda não encontrei uma biblioteca pronta para o protocolo NEC mas encontrei uma mais genérica. Tem que adaptar:

http://www.ccsinfo.com/forum/viewtopic.php?t=21290

No inicio do código tem muita coisa que você não precisa. Como o código é de 2004, provavelmente naquela época não tinha uma lib para LCD e ele fez na unha. Apenas preste atenção nas interrupções.

Falou

Postado

É fácil decodificar as teclas do protocolo Nec, eu usei uma interrupção por descida de pulso e inicio o timer, quando o nível volta a subir, eu verifico o tempo, é bem simples . Mas .........

O que ficou complicado foi detectar quando uma tecla fica apertada mais do que 100 milisegundos, pois em vez de ficar repetindo a tecla, é gerada uma temporização doida, que complica uma barbaridade para detectar, ou seja, do tempo total que perdí para fazer o programa, 30% foi para detectar uma tecla qualquer, e os 70% foram só para detectar o padrão de repetição, o que causou um monte de modificação na parte que já estava funcionando...

Infelizmente, fiz em Basic para AVR's ....

Paulo

Postado

É fácil decodificar as teclas do protocolo Nec, eu usei uma interrupção por descida de pulso e inicio o timer, quando o nível volta a subir, eu verifico o tempo, é bem simples . Mas .........

O que ficou complicado foi detectar quando uma tecla fica apertada mais do que 100 milisegundos, pois em vez de ficar repetindo a tecla, é gerada uma temporização doida, que complica uma barbaridade para detectar, ou seja, do tempo total que perdí para fazer o programa, 30% foi para detectar uma tecla qualquer, e os 70% foram só para detectar o padrão de repetição, o que causou um monte de modificação na parte que já estava funcionando...

Infelizmente, fiz em Basic para AVR's ....

Paulo

Postado

Obrigado pessoal por terem dado a LUZ inicial.

VTRX: Eu achei esse código pronto mas parece ser de MikroC. Se você puder e quando puder eu tenho todo o hardware necessário para os testes aqui. E paciência de sobra... rsrs. Eu posso testar alguma coisa aqui.

MatheusLPS: Interessante esse código, vou tentar mexer nele aqui pra vê se algo funcionar. Só uma dúvida: Eu tenho uma placa de teste pronta pra PIC16F877A e nela tem um cristal de 4MHz, precisa alterá-lo? Ou será que esse tempo é crítico?

APHAWK: No código que Matheus passou acima, no forum da CCS o cara fala algo a respeito desses tempos. Mas vou verificar e tentar algo aqui.

Valeu!

Postado

Obrigado pessoal por terem dado a LUZ inicial.

VTRX: Eu achei esse código pronto mas parece ser de MikroC. Se você puder e quando puder eu tenho todo o hardware necessário para os testes aqui. E paciência de sobra... rsrs. Eu posso testar alguma coisa aqui.

MatheusLPS: Interessante esse código, vou tentar mexer nele aqui pra vê se algo funcionar. Só uma dúvida: Eu tenho uma placa de teste pronta pra PIC16F877A e nela tem um cristal de 4MHz, precisa alterá-lo? Ou será que esse tempo é crítico?

APHAWK: No código que Matheus passou acima, no forum da CCS o cara fala algo a respeito desses tempos. Mas vou verificar e tentar algo aqui.

Valeu!

Postado

Chacalgbi, os tempos são MUITO críticos.

Não me perguntem como, mas encontrei um pronto para CCS. Não tenho como testar.

O site está em Tailandês mas só tem o código.

http://www.electomorrow.com/index.php?topic=746.0

EDIT:

Pessoal, acho que estamos viajando na maionese. veja que o controle remote funciona sim com o protocolo NEC. Mas não precisamos demodular ele. Pelo foto postada, ele vem com o HX1838 que já é um demodulador.

Encontrei o datasheet do AX1838HS. Pela foto são idênticos:

http://dalincom.ru/datasheet/AX-1838HS.pdf

Assim, fica bem mais fácil de interpretar as teclas. Não precisamos preocupar com os 38khz mais. O HX1838 já entrega um sinal limpo. Só falta contar o tempo dos pulsos e pronto.

necmodulation.gif

Imagino que depois do demulador, o HX1838, não temos os pulsos curtos (38khz) mais. Temos apenas isso:

Se o período total = 2.25mS, então temos lógico 1

Se o período total = 1.12mS, então temos lógico 0

Mas veja que isso é do ponto de vista do protocolo NEC. Veja a página 4 do datasheet do pdf que passei acima. Lá mostra como o demulador entende isso aí.

Aí é interpretar isso depois do demulador:

nectrain.gif

E a tal da repetição com o aphawk comentou depois do demulador.

necsequence.gif

Tem tudo no site que postei lá em cima sobre o protocolo NEC. O interessante como já disse é entender como será a saída do demulador que é bem mais fácil de interpretar do que o NEC.

Falou

Postado

Chacalgbi, os tempos são MUITO críticos.

Não me perguntem como, mas encontrei um pronto para CCS. Não tenho como testar.

O site está em Tailandês mas só tem o código.

http://www.electomorrow.com/index.php?topic=746.0

EDIT:

Pessoal, acho que estamos viajando na maionese. veja que o controle remote funciona sim com o protocolo NEC. Mas não precisamos demodular ele. Pelo foto postada, ele vem com o HX1838 que já é um demodulador.

Encontrei o datasheet do AX1838HS. Pela foto são idênticos:

http://dalincom.ru/datasheet/AX-1838HS.pdf

Assim, fica bem mais fácil de interpretar as teclas. Não precisamos preocupar com os 38khz mais. O HX1838 já entrega um sinal limpo. Só falta contar o tempo dos pulsos e pronto.

necmodulation.gif

Imagino que depois do demulador, o HX1838, não temos os pulsos curtos (38khz) mais. Temos apenas isso:

Se o período total = 2.25mS, então temos lógico 1

Se o período total = 1.12mS, então temos lógico 0

Mas veja que isso é do ponto de vista do protocolo NEC. Veja a página 4 do datasheet do pdf que passei acima. Lá mostra como o demulador entende isso aí.

Aí é interpretar isso depois do demulador:

nectrain.gif

E a tal da repetição com o aphawk comentou depois do demulador.

necsequence.gif

Tem tudo no site que postei lá em cima sobre o protocolo NEC. O interessante como já disse é entender como será a saída do demulador que é bem mais fácil de interpretar do que o NEC.

Falou

Postado

MatheusLPS, eu testei o primeiro código que você passou. Funcionou depois que eu troquei o cristal para 20MHz. Eu notei algumas coisas interessantes:

Eu testei com 3 controles remotos. O 1° que é o original que vem como ele, você tem que apertar a mesma tecla duas vezes e somente na segunda é que aparece o código no display. E depois de algumas primidas nos botões o PIC trava e deixa de aparecer no display as informações. Ai eu testei com o controle do meu DVD, funcionou beleza aparece sempre que aperte a tecla, mesmo da 1° vez. Ai eu testei com o controle da TV e ficou igual ao 1° controle. E todos os 3 depois de um tempo param de funcionar.

Doido né?

Olha ai na imagem como fica o código do display:

i0kn.jpg

Vou testar o segundo código!

Detalhe, eu testei no PIC16F877A e o código foi escrito para o 18F452. Eu só modifiquei o cabeçalho pra compilar. Será que é isso?

Vou fazer o teste com esse outro ai que você passou.

Tentei compilar o segundo código que você passou e dá esse erro. você conhece esse comando Volatile?

tmrh.jpg

Postado

Não esqueça que o primeiro byte do protocolo NEC é um indentificador de dispositivo,por isso esse protocolo é tão usado,basta indentificar se o primeiro byte é do dispositivo que vai controlar.

No seu caso voce poderá 'filtar' para o circuito responder apneas ao seu controle.

Eu testei com 3 controles remotos. O 1° que é o original que vem como ele, você tem que apertar a mesma tecla duas vezes e somente na segunda é que aparece o código no display. E depois de algumas primidas nos botões o PIC trava e deixa de aparecer no display as informações. Ai eu testei com o controle do meu DVD, funcionou beleza aparece sempre que aperte a tecla, mesmo da 1° vez. Ai eu testei com o controle da TV e ficou igual ao 1° controle. E todos os 3 depois de um tempo param de funcionar.

Isso ocorre porque a temporização tem que estar precisa,tem que rever o código.

Postado
chacalgbi, aqui com a versão 5 do CCS, a última. Compilou normal. Tente atualizar a sua. Se não for possível, retire o valatile e teste.

Depois com tempo, tento montar uma lib para usar com esse demodulador seu.

Falou

Tava fazendo esse teste aqui.. rsrs

Compilou com a versão 5.010. Eu tava usando a versão 4.078

Já testei, funcionou legal!! :D:D:D:D:D:D

Muito obrigado!

Agora vou fazer vários testes aqui. Não feche o tópico! Tenho que testar em conjunto com programas que usam outras funções.

Uma dúvida. Se eu fizer um programa com esse Controle IR, nesse programa não pode haver delays não né? Ou a interrupção sai do delay?

Postado

Que bom que funcionou. Eu já estava brincando aqui com isso.

Vocês sabiam que o Proteus consegue simular um protocolo de controle remoto assim? Fiquei sabendo fuçando aqui.

Esse componente da esquerda na imagem abaixo:

uC8cCWz.png

Só saber configurar ele que sai de boa.

Outra coisa. É bom em um projeto desse onde a complexidade não é muita, que você aprenda de fato como funciona a coisa. Pelo menos na minha opnião como hobbysta, não tem graça só montar e ver funcionar. O legal é entender como a coisa toda funciona. Nem sempre é possível. Como por exemplo o stack TCP/IP. A teoria é tão profunda que prefiro somente usar e pronto. O mesmo serve para USB. Tenho uma noção e tal. Mas saber como o core funciona, já desisti faz tempo.

Off-topic: Hum.... Esse windows 8.1 ainda não me convenceu. Só instalei para usar as bibliotecas novas do DirectX11.1 para finalizar meu Ambilight.

Falou

Postado

Caramba Matheus, muito legal isso de simular um controle remoto !!!! Vai me ajudar pacas no projetinho que estou terminando aqui, valeu pela dica !

Sobre o que você falou do TCP/IP e do USB, eu também nem tentei entender, já tá difícil usar as funções que inventaram no Basic para isso, imagina querer entender todo o funcionamento por baixo dos layers..... é mesmo muito complicado.

Sobe o Windows 8...... nem quero comentar.... compramos um note com core i5, 4Gb de ram, e os cambau... tava uma carroça enorme.... aumentei para 8 Gb de RAM, continuou carroça..... tirei essa droga de Windows 8 e coloquei o 7 , ficou um aviãozinho, mas ainda é muito mais lento que o meu Mac .... pelo menos umas 3 vezes mais lento...

Incrível a superioridade do Mac OS/X , até o Windows que eu rodo no emulador fica pau a pau com o notebook kkkkkkk !

Paulo

Postado
Que bom que funcionou. Eu já estava brincando aqui com isso.

Vocês sabiam que o Proteus consegue simular um protocolo de controle remoto assim? Fiquei sabendo fuçando aqui.

Esse componente da esquerda na imagem abaixo:

uC8cCWz.png

Só saber configurar ele que sai de boa.

Outra coisa. É bom em um projeto desse onde a complexidade não é muita, que você aprenda de fato como funciona a coisa. Pelo menos na minha opnião como hobbysta, não tem graça só montar e ver funcionar. O legal é entender como a coisa toda funciona. Nem sempre é possível. Como por exemplo o stack TCP/IP. A teoria é tão profunda que prefiro somente usar e pronto. O mesmo serve para USB. Tenho uma noção e tal. Mas saber como o core funciona, já desisti faz tempo.

Off-topic: Hum.... Esse windows 8.1 ainda não me convenceu. Só instalei para usar as bibliotecas novas do DirectX11.1 para finalizar meu Ambilight.

Falou

Eu entendo, e é o que eu quero fazer mesmo. Entender. Tô estudando esse código agora. Tudo que eu aprendo é aqui pelo forum ou pela internet. Interior da Bahia é complicado, não tem uma única alma humana na minha cidade com quem eu possa sentar e trocar projetos, dúvidas e todo o resto.

O único engenheiro elétrico que eu achei uma vez aqui, fui tirar um monte de dúvida e acabou que eu é que tive que ensinar o pouquinho que sei sobre PICs...:mad::confused::mad: Lastimável!

Minha salvação é vocês aqui do forum!!

Postado
O único engenheiro elétrico que eu achei uma vez aqui, fui tirar um monte de dúvida e acabou que eu é que tive que ensinar o pouquinho que sei sobre PICs...:mad::confused::mad:

estou quase rasgando meu diploma e jogando no lixo , já é a terceira vez neste segundo semestre que vejo a absurda inaptidão dos nossos formandos..... Tem vez que eu penso antes de responder que sou engenheiro...... Isso é uma vergonha, ensino falido, escolas só visando lucro, e cada vez mais formando completos incompetentes...

Paulo

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!