terça-feira, 2 de fevereiro de 2010

Projeto usando Controle Remoto Universal - Fase inicial


Ola a novamente a todos os leitores do Eletrônica-OOB.
Estou de volta com mais um super projeto... Infelizmente o projeto não esta totalmente completo acredito que ate o fim-de-semana o projeto mesmo estara pronto!!!Ele ta bem legal e muito util com integracao com a super fechadura....No momento o codigo e layout ja estao prontos agora soh falta fazer a placa, soldar os componentes e torcer para dar certo!!
Essa foi apenas a primeira parte que eu fiz para conseguir chegar no projeto final mas ja deixo ai o gostinho do projeto para vcs... junto com o codigo, explicacao da teoria, e explicacao do codigo...

Mas chega de baboseira e vamos ao que interessa...
Com vocês eu apresento o uso de microcontroladores (PIC 16F628A) junto com o famoso Infra-Vermelho (controle remoto)...
O que eu fiz foi pegar o controle universal de meu quarto, que a principio era apenas para a TV e para a Sky e adicionar algumas funcionalidades extra... A idéia final desse projeto é que ele possa realizar todo o controle de meu quarto (luzes, fechadura digital, entre outros)
Infelizmente ainda não esta aplicado as luzes do meu quarto mas uma vez que consegui acender alguns led’s da maneira que eu queria o resto é detalhe....
Abaixo deixo o vídeo para vcs verem o circuito funcionando...
E logo após isso falarei um pouco sobre o protocolo de comunicação de controle remoto e a lógica que utilizai para a leitura dos dados...




Existem alguns tipos de protocolo de comunicação de controles infra-vermelho... eu vi alguns protocolos e o que eu achei mais interessante e fácil de se trabalhar é o protocolo da Sony, chamada SIRC (Sony Infra Red Communication)...Como utilizei esse protocolo, me concentrarei em explicar apenas ele, se alguém tiver alguma duvida sobre algum outro protocolo eu posso ajudar...
No protocolo SIRC a informação é passada da seguinte maneira:

Primeiro é enviado um sinal com largura de pulso igual a 2,4ms, esse sinal é um valor que o controle manda para informar que esse é o inicio do código a se ser enviado, e que logo  após isso será mandado uma seqüência de zeros ou uns, seguindo a seguinte estrutura:
ts  xxxxxxx  xxxxx
ts = a 2,4ms (bit que informa inicio do código)
xxxxxxx = seqüência de 7 bits sendo 0 ou 1 informando qual tecla foi apertado (tecla de ligar, botão 5 ou 6 ou 7..., menu, TV-video, aumente volume, etc...)
xxxxx = seqüência de 5 bits sendo 0 ou 1 informando para qual aparelho esse código é (TV,vídeo cassete, DVD, home theater,etc)

Ou seja toda vez que vc aperta uma tecla em seu controle remoto, o mesmo fica enviado uma bit de controle, seguido de 12 bits  na qual informa qual foi a tecla apertada e quem deve executar a tarefa... uma vez que ao aperta uma tecla todos os seus aparelhos vão receber a informação, a diferença é que o aparelho vai ver os 5 bits que representam a qual aparelho esta sendo enviado e se não estiver escrito que é para ele, o aparelho vai simplesmente descartar essa “mensagem recebida”...(consultar no final do post a tabela que criei informando qual tecla envia qual comando)
Bom mas ai caímos na questão como ele representa 0 e como ele representa 1?
No primeiro gráfico abaixo da para ver bem como ele faz isso:



Depois de enviar o bit de inicio (TS) ele põe em nível lógico baixo durante 0,6ms e começa a enviar a informação com um intervalo entre cada bit (independente de ter sido 0 ou 1) de 0,6 ms... Ou seja, ZERO é enviado um pulso de largura igual 0,6ms em alta e 0,6 ms em baixa.
Já o UM é enviado um Pulso de 1,2ms em alta e 0,6ms em baixa.
Ufaaa acho que deu para entender né?
E o que são todos esses outros gráficos malucos?
Calma tudo vai ser explicado no seu devido tempo...
Agora paramos para pensar... Legal então quando eu aperto uma tecla no meu controle remoto ele liga piscando um LED infravermelho, enviado assim a informação que eu queria que ele enviasse? Basicamente sim, mas vamos com calma...
Primeiro o que é o infravermelho? O Infravermelho nada mais é do que uma “luz” que nosso olho não consegue enxergar e que esta presente em vários outros locais, como na luz provida do sol, de um objeto de que esteja quente, etc..
Entao imagina se a gente pegasse a nossa TV e colocasse perto de uma janela... o infravermelho contido na luz solar iria fazer o sensor da TV detectar um NL alto assim o controle remoto iria para de funcionar e com muita sorte a luz solar poderia até mudar de canal sozinho de vez em quanto :p...
O que os caras resolveram fazer para arrumar isso? Modular o Sinal enviado...  em um freqüência especifica (38Khz), ou seja agora o sensor da TV só vai ler o que for enviado para ele quando o sinal recebido estiver nessas condições, na qual consiste de uma modulação ASK usando como portadora um sinal quadrado com freqüência= 38Khz.
Modulação é algo bem complexo muito utilizado em telecomunicações, a intenção aqui é só dar uma idéia do que é, não entrando em aspectos complexos... Quem quiser se aprofundar mais tem uma pancada de livros tratando de várias modulações (AM-DSB, AM-SSB,FM, ASK,FSK,PAM,etc...)...
Ou seja, o que de fato o controle remoto envia, são vários pulsos quando quer representar nível lógico alto e não envia nada quando vai representar NL baixo como mostrado no gráfico acima chamado ASK, o que esta em preto é o que ele realmente envia para o receptor e é facil observar que a envoltória da onda enviada pelo controle remoto (em vermelho) era o que vc queria enviar, a única diferença que vc modulou a informação antes de enviá-la.
Para entender como esse processo pode ser feito é só vc imaginar o seguinte... imagine uma chave onde toda vez é apertada ele deixa passar uma onda quadrada de freqüência muito alto (imagem dois do gráfico) e quando essa chave não esta sendo apertada, nada é enviado...
No fim quem esta apertando essa chave é a informação que vc quer enviar, ou seja quando vc quer enviar o ts (2,4ms), o mesmo fica deixando a portadora (onda quadrada de 38khz) passar durante 2,4ms, portanto iram passar aproximadamente 91,2 pulsos onde cada pulso tem um período de 26us (f=38Khz)
Bom já deu de modulação né?
Agora como vcs podem ver na imagem acima, faltou explicar o ultimo gráfico... Esse ultimo gráfico representa exatamente o que o receptor ira receber... o Sinal depois de enviado via o controle remoto, modulado bonitinho em 38Khz, e assim que ele chega no receptor o mesmo através de um circuito demodulador, obtem a forma de onda recebida porem com a lógica trocada... Normalmente quando o receptor não esta recebendo nada, o mesmo fica em Nivel lógico alto, e assim que o mesmo recebe que começa a receber um dado vai para nível lógico baixo sendo assim a lógica trocada...
Como a intenção aqui não é se concentrar no envio, mas sim no recebimento, deixo aqui só uma dica para quem quer enviar :
Suponhamos que vc queira enviar o bit 1, já modulado....
Bit 1= 1,2ms em alta +0,6ms em baixa
1 pulso consiste em um tal=8us e T=26us
X pulsos para 1,2ms
X=45,6 =46pulsos...
Podendo ser enviado já modulado da seguinte maneira..
Movlw     46          
Movwf    loop   faz um loop de 46 vezes para enviar 46 pulsos
Loop_bit1:
Bsf   porta,2        ;ligado no led infravermelho
Nop                       ;sequencia de 8 nop para dar um tal de 8us
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Bcf   porta,2           ;desliga o infravermelho
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Nop
Decfsz   loop 
Goto     loop_bit1     ;
call    delay_06ms
;-------Para zero é o mesmo esquema a diferenca é que vc vai ter que realizar 23 loops apenas ...

Bom agora deixo vcs com mais um vídeo explicando linha a linha como o código funciona...
http://rapidshare.com/files/311107181/Infra-Vermelho.mp4

O codigo junto com o projeto inteiro do mplab pode ser baixado aqui...
http://rapidshare.com/files/344985354/Codigo_Base.rar

Espero que vcs gostem e agradeco comentarios...
Um Abraco
Tico 

20 comentários:

  1. olá tico, muito bom seu blog, existem poucos lugares onde consiguimos encontrar projetos tao bem explicados igual aki, parabens pela iniciativa.
    Eu baseado no seu projeto estou montando um parecido para o meu quarto, eu só nao consigui axar aqui no blog o código de cada tecla do controle remoto que vc falou q iria colocar, e tbm gostaria de pidir pra vc como q eu configuraria o controle remoto da sky para ser compativel com esse protocolo, eu tenho um controle desse mas nao tenho mta intimidade com ele. Desde já obrigado

    ResponderExcluir
  2. desculpa é qe eu estou fazendo um controle universal pra o meu tcc no curso
    e é obrigatorio a utilização do PIC no prjeto
    mais não entendi aonde vc implantou ele
    poderia mi explicar

    ResponderExcluir
  3. Cara, parabens pela iniciativa. Não é sempre que se encontra gente disposta a ajudar e passar informações.
    Continue assim.

    ResponderExcluir
  4. ola parabens pelo seu projeto muito interessante, estou utilizando a parte do seu Receptor e PIC mas nao encontrei o HFD3000 e usei outro genérico sera q funciona? outra coisa baixei 2 arquivos para gravação do Pic e vi que tem tamanho diferentes qual o certo?
    desculpe o incomodo e agradeço sua atenção.
    rodrigo.nazari@hotmail.com

    ResponderExcluir
  5. Dae, Parabens pelo projeto! Cara, entendo mt pouco de assembler e gostaria de saber, ao receber o sinal no TSOP, o codigo do pic, quando ele espera o sinal ir para 0 ele conta o tempo de todas as ondas moduladas ou tenho q implementar a modulação na leitura?? Estou tentando fazer em C um programa parecido para interpretar o sinal de controle remoto.
    Abraço!

    ResponderExcluir
  6. tem como colocar um controle remoto de cd pioneer junior

    ResponderExcluir
  7. Tico, baixei seu código e fiquei com algumas dúvidas.. você disse que o sinal do receptor é invertido porque então na primeira linha de le_controle você usa btfss e não btfsc, achei que enquanto o receptor estivesse inativo o programa deveria ficar no loop lendo constantemente a PORTB, outra coisa que notei foi que os códigos de suas teclas estão diferentes do que eu encontrei em outros sites, será que você poderia me tirar essas dúvidas? Parabéns pelo projeto, ficou muito bom. Pretendo utilizar um controle SIRC para controlar um carro em um projeto da faculdade, por isso gostaria muito da sua ajuda

    ResponderExcluir
  8. Tico, gostei muito do teu circuito e estou montando um para mim, mas eu tenho um controle universal RM-V210 e não estou conseguindo fazer funcionar, gostaria que você me desse um ajuda.
    muito obrigado.
    leandro.lbz@gmail.com

    ResponderExcluir
  9. Tico, como posso entrar em contato com vc além o blog.
    eletrodaniel@hotmail.com

    ResponderExcluir
  10. Nem li tudo ainda, só vi o video, mais já posso dizer.
    PARABENS!!!
    Ficou muito legal

    ResponderExcluir
  11. Parabéns, muito bom o material didático. Existe também uma explicação sobre o protocolo RC5 da Philips nos arquivos do grupo SanUSB (tinyurl.com/SanUSB). Todos os interessados em eletrônica podem participar do grupo. Um abraço,

    ResponderExcluir
  12. adorei seu projeto, que pena que ñ da para fazer porque ñ tenho o material adequado e sou muito novo para isso, mas daqui pro futuro fazerei esse projeto
    ou
    faça uma video aula com tudo explicado para que eu possa fazer na video aula tem que conter:
    *materiais*
    *modo de preparo*
    *tipos de espaço para fazer*
    *passo a passo como fazer sem esquecimento nenhum*
    em troca vou anunciar para minha escola o seu projeto e só se vc for uma pessoa gentil e inteligente, agradecerei se vc fizer a video aula como fazer isso.
    obrigado e le agradeço pelo projeto,
    pra mim foi um dos maiores projetos da eletronica inventados na minha vida toda

    ResponderExcluir
  13. Parabéns, eu também fiz um robozinho usando controle de DVD mais sofri muito medindo pulso a pulso do jeito que vc fez bem melhor agora estou em outro projeto de uma pista de kart com controle e já vou usar o seu valeu.
    Segue o link do robozinho.

    ResponderExcluir
  14. Parabens pelo projeto, estava procurando algo assim,achei
    Edilsonzl@hotmail.com

    ResponderExcluir
  15. como vc constroi e que equipamentos vc usa

    ResponderExcluir
  16. poderia disponibilizar os arquivos dos projetos amigo? porfavor. qrendo estuda-lo. grato

    ResponderExcluir
  17. Olá Estou Fazendo trabalho para meu curso de eletronica e resolvi fazer esse projeto para meu tcc gostaria se poderia da uma ajuda por favor.
    E tambem os links para downloads estao escluidos se poderia arrumar isso.
    E no projeto que vc fez e possivel colocar um LCD
    para identificar oq esta funcionando?

    ResponderExcluir
  18. Olá amigo, vc conhece algo sobre os protocolos do decodificador da sky? Tenho um receptor da marca HUMAX, e queria conseguir entender o protocolo para fazer um "extensor" do controle remoto, mas n encontrei nada. Vlw.

    ResponderExcluir
  19. olá amigo felicidades esta muito bom seu projecto , me podria mandar o codigo do projecto já que os enlaces estan caidos, meu correio é manuel_6790@hotmail.com

    ResponderExcluir
  20. Primeiramente parabéns pelo projeto, eu gostaria de montar esse projeto, mas o link que você disponibilizou não está funcionando

    ResponderExcluir