Tutorial: Controlando Ar Condicionado utilizando Arduino e led Infravermelho

 

Neste tutorial vamos decodificar mensagens enviadas pelo controle de equipamentos com infravermelho, no meu caso um ar condicionado, e com o Arduino e um emissor infravermelho vamos enviar essas mensagens para o ar condicionado.

Podemos com esse tutorial realizar a automação de equipamento com infravermelho, por exemplo controlar a temperatura de um ambiente conforme a data e o horário.  

Materiais Utilizados:

  • Arduino Uno;
  • Emissor (TIL32) e receptor (KSM603LM) infravermelho;
  • Resistor 70 ohms (recomendado 100 ohms); 
  • Equipamento com controle via infravermelho (Ar condicionado, climatizador, rádio).

Software e Biblioteca Utilizados:

Alterações na biblioteca IRremote

Depois de varias tentativas frustradas, obtive sucesso realizando algumas alterações na biblioteca IRremote

A primeira alteração na biblioteca foi modificar o arquivo IRremoteInt.h, procurar a linha #define RAWBUF 100 e alterar o valor para 200.

#define RAWBUF 200

A segunda alteração no arquivo IRremoteInt.h na linha #define _GAP 5000 alterar o valor do _GAP para 50000.

#define _GAP 50000

Na maioria dos casos apenas essas duas modificações já são suficientes para o funcionamento do sistema, porém em alguns casos é necessário mudar o pino PWM do emissor. Para isso deve-se alterar o arquivo IRremoteInt.h.

Alterar as linhas:

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
#else
//#define IR_USE_TIMER1 // tx = pin 9
#define IR_USE_TIMER2 // tx = pin 3

Para:

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc

#else
#define IR_USE_TIMER1 // tx = pin 9
//#define IR_USE_TIMER2 // tx = pin 3

* Se realizar essa modificação lembre que no circuito emissor o LED não será mais conectado no PIN 3 e sim no PIN 9.

Decodificando o protocolo (Circuito Receptor)

O primeiro passo do projeto é identificar as mensagens que o controle envia para o ar condicionado (qualquer equipamento controlado por infravermelho), para isso vamos utilizar o exemplo da biblioteca IRremote IRrecevDumpV2.

Esquemático e fotos do circuito receptor:

Com circuito pronto realizamos o upload do código IRrecevDumpV2 e pela Serial Monitor observamos informações de cada sinal enviado pelo controle (ligar, desligar, aumentar temperatura, etc ). Devemos salvar o vetor rawData apresentado no Serial Monitor para utiliza-lo no circuito emissor. No meu caso desejo ligar um ar condicionado, logo apertando o botão de ligar no controle e observando o serial monitor obtive a seguinte mensagem: 

Exemplo:

unsigned int  rawData[71] = {8950,4450, 600,550, 550,550, 600,500, 550,600, 550,550, 600,500, 550,600, 550,550, 600,500, 600,550, 550,1650, 600,1650, 600,1650, 550,1650, 600,1650, 600,1600, 600,1650, 550,600, 550,1650, 550,600, 550,550, 600,500, 550,600, 550,1650, 550,600, 550,1650, 550,600, 550,1650, 550,1700, 550,1700, 550,1650, 550,600, 550,41850, 8950,2200, 600};

 

Enviando dados para o ar condicionado (Circuito Emissor)

Vamos enviar o vetor recebido pelo controle para o ar condicionado, para isso vamos utilizar o código de exemplo IRsendRawDemo da biblioteca, alterando o vetor “irSignal[]” para o vetor encontrado no passo anterior.

unsigned int irSignal[] = {9000, 4500,... , 560} ;  //AnalysIR Batch Export (IRremote) - RAW

 

Substituir pelo vetor encontrado no passo anterior.

Exemplo:

unsigned int irSignal[] = { 8950,4450, 600,550, 550,550, 600,500, 550,600, 550,550, 600,500, 550,600, 550,550, 600,500, 600,550, 550,1650, 600,1650, 600,1650, 550,1650, 600,1650, 600,1600, 600,1650, 550,600, 550,1650, 550,600, 550,550, 600,500, 550,600, 550,1650, 550,600, 550,1650, 550,600, 550,1650, 550,1700, 550,1700, 550,1650, 550,600, 550,41850, 8950,2200, 600};

Esquemático e fotos do circuito emissor:

 

Para verificar se o LED infravermelho está emitindo sinal, observe focando com uma câmera digital (pode ser a do celular) o LED emissor. Quando o LED enviar algum dado, será emitido uma luz que pode ser visualizado com a câmera.

Aplicações

  • Utilizando módulo RTC pode-se controlar a temperatura conforme a data/horario;
  • Com módulo bluetooth criar uma aplicação mobile e controlar equipamentos com infravermelho;
  • Criar controle universal. 

Exibições: 18004

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Zio em 13 fevereiro 2017 às 10:20

Obrigada Douglas!

Vou verificar as condições de interferência e procurar o código para captura da frequência correta, já que o fabricante do meu equipamento não fornece este tipo de informação.

Se conseguir, retorno, obrigada!

Comentário de Douglas Lohmann em 13 fevereiro 2017 às 10:11

Acredito que as interferências estão atrapalhando a captura do sinal, então você pode tentar isolar o receptor (colocar em local sem iluminação, distante de equipamentos elétricos...). Quanto a frequência é importante que você utilize a mesma do seu aparelho, caso contrario não ira funcionar. Se não me engano existe algum código dessa biblioteca que consegue identificar a frequência ou você pode obter essa informação na especificação técnica do seu equipamento.

Abraço

Comentário de Zio em 13 fevereiro 2017 às 10:04

rhaicmer, realmente, fiz o teste com uma TV Samsung, e funcionou! Porém, o que me preocupa um pouco não é nem o fato de não enviar o código para o ar condicionado, porque sei que algumas marcas realmente tem esse problema, o que me preocupa é que uma vez consegui fazer captura dos códigos RAW, porém agora a sketch de captura não funciona mais, nem escreve nada em minha porta serial...

Comentário de Zio em 13 fevereiro 2017 às 9:59

Douglas, se eu fizer algum tipo de isolação no emissor do infravermelho, pode ajudar? Quanto a sketch de captura do RAW, será que há alguma interferência muito relevante? A frequência de transmissão setada em 38kHz pode estar afetando em alguma coisa também?

Obrigada!

Comentário de rhaicmer braulio da costa em 13 fevereiro 2017 às 9:56

Zio, o que pode estar acontecendo é que você não tem hardwere para ler o código do ar-condicionado. Tenta ver os códigos de outro equipamento que não seja ar condicionado. Ouvi dizer que os códigos do ar condicionado é diferente e muitas vezes o receptor IR não é capaz de decodificá-lo.

Comentário de Douglas Lohmann em 13 fevereiro 2017 às 9:25

Olá Zio, realmente acontece alguns problemas estranhos nessas comunicações.

Você pode estar recebendo algum ruído (lampadas fluorescentes), outro fator que também é bem chato é que algumas vezes ao mexer no Arduino os fios acabam gerando ruido (devido ao contato dos fios com os terminais do Arduino).

Abraço

Comentário de Zio em 13 fevereiro 2017 às 9:07

Bom dia,

Estou a um bom tempo tentando realizar esse tutorial sem sucesso. Da primeira vez que realizei o código de captura, consegui captar os códigos RAW do meu controle remoto, porém, agora não consigo mas realizar nenhum tipo de captura, minha porta serial fica vazia, e se eu realizo algum movimento com a placa do Arduino, ele escreve códigos RAW e decodificações hexadecimais totalmente aleatórias em minha porta serial. Na tentativa de envio, estou utilizando os códigos que consegui capturar quando a skech de captura funcionou, porém, meu ar condicionado não responde a nenhum desses códigos.

Já testei com mais de um LED infravermelho, com configurações e códigos diferente, porém, nenhum funcionou.

Alguém saberia me ajudar com isso?

Muito obrigada!

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço