CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Classifique este tópicoPéssimoRuimMedianoBomÓtimo
Ir para página Anterior  1 2
Autor
Mensagem

leotronica

Level 13
13191191 xp

Registrado em:
02/01/2005



Equipe:
Mecatron

Mensagens:
291

leotronica

Responder com citações
Mensagem Seg Mar 31, 2014 9:39 pm
Acionando ar-condicionado
Francois,

      Fiz o que você me disse mas mesmo assim não funcionou. Não entendo porque diabos o ar condicionado é assim, e vejo pela net que isso é geral, quase ninguém consegue comandar o ar condicionado, eu já fiz testes e consigo controlar praticamente tudo usando o código raw porém ar condicionado está difícil. 
       Testei também usando dois arduinos, um com o programa para enviar o código RAW e outro com o programa para receber e me mostrar via serial o código recebido e está tudo ok o mesmo código enviado é o mesmo recebido, os arduinos não estão cortando nenhum dado enviado ou recebido. 

      Gostaria de saber quais os modelos de ar condicionados testados no Albatross pois o meu é um Gree modelo do controle YB1FA e com a foto do mesmo abaixo.

      Mais uma coisa, alguém conseguiu descobrir que tipo de protocolo o controle de ar condicionado usa? O arduino informa que é NEC porém não achei nada concreto na net sobre esse tipo de controle.


http://www.refrigeracaoec...o-yb1fa-839.jpg

Francois

Level 2
2644800 xp

Registrado em:
08/04/2013



Equipe:
Submarino URC

Mensagens:
67

Francois

Responder com citações
Mensagem Seg Abr 07, 2014 8:13 pm
Acionando ar-condicionado
Leotronica,

Ao alterar estas constantes na biblioteca você deveria ter recebido o comando inteiro, por isso acho estranho não ter conseguido controlar o aparelho. Pode ser que o comando precise ser enviado algumas vezes (com alguns aparelhos é preciso fazer esta repetição) ou que ele já esteja sendo repetido dentro do buffer recebido (não acho que seja o caso). Tente enviar três vezes os mesmos dados, mude apenas o delay (em microssegundos) entre cada envio. Além disso, você fixou o LED infravermelho em frente ao receptor do aparelho? Alguns aparelhos têm um ângulo de recepção menor do que os demais.

O Albatross foi testado com ar-condicionados Midea e o buffer tinha mais de 200 dados, por isso estranhei o comprimento do seu buffer. Pode ser que o comando que você está sendo recebido seja do tipo NEC, mas acho mais confiável usar os dados brutos. Se já não tentou enviar por NEC, não custa tentar.

Uma alternativa mais drástica e menos recomendada é de ler direto da fonte. Você poderia abrir o controle e ler os sinais correspondentes (o que vai para o emissor e o GND) e/ou abrir o aparelho e fazer as conexões semelhantes no receptor infravermelho. Este processo não é recomendado, pois é preciso ter cuidado para não danificar nem o controle nem o ar.

O mais indicado a se fazer é ler o sinal do controle com um osciloscópio. Se não tiver um, você pode tentar fazer um com interrupções, ou seja, lendo uma porta quando o tempo estourar. É basicamente o que faz a biblioteca IRremote, mas sem alguns filtros (a biblioteca corta o sinal recebido quando a pausa foi maior do que o limite estabelecido).

Mantenha-nos atualizados dos resultados.

leotronica

Level 13
13191191 xp

Registrado em:
02/01/2005



Equipe:
Mecatron

Mensagens:
291

leotronica

Responder com citações
Mensagem Seg Abr 07, 2014 8:53 pm
Acionando ar-condicionado
Olá, gostaria de deixar meus comentários abaixo.

 
Comentário:
Além disso, você fixou o LED infravermelho em frente ao receptor do aparelho? Alguns aparelhos têm um ângulo de recepção menor do que os demais.
Eu gravei o código na placa arduino e encostei o emissor infravermelho na placa receptora do ar condicionado um colado com o outro para evitar esse tipo de problema.
Comentário:
Pode ser que o comando que você está sendo recebido seja do tipo NEC, mas acho mais confiável usar os dados brutos. Se já não tentou enviar por NEC, não custa tentar.
Realmente o arduino me mostra sendo comando NEC só que ele não tem o mesmo comprimento de um comando NEC normal pois quando eu copio o codigo de um controle normal tipo de TV ele me mostra o comando tipo "2FD48B7" porém no ar condicionado eu recebo "9811120A" o que realmente não é um dado confiavel por isso eu uso sempre o codigo RAW.
Comentário:
Uma alternativa mais drástica e menos recomendada é de ler direto da fonte. Você poderia abrir o controle e ler os sinais correspondentes (o que vai para o emissor e o GND) e/ou abrir o aparelho e fazer as conexões semelhantes no receptor infravermelho. Este processo não é recomendado, pois é preciso ter cuidado para não danificar nem o controle nem o ar.
Estou pensando drasticamente em fazer isso, por enquanto no controle do ar para eliminar algum ruido externo.
Comentário:
O mais indicado a se fazer é ler o sinal do controle com um osciloscópio. Se não tiver um, você pode tentar fazer um com interrupções, ou seja, lendo uma porta quando o tempo estourar. É basicamente o que faz a biblioteca IRremote, mas sem alguns filtros (a biblioteca corta o sinal recebido quando a pausa foi maior do que o limite estabelecido).
Eu recentemente encontrei um programa na internet que usa a interrupção para gerar os valores de tempo e pude descobrir que na verdade o que eu estou recebendo é um raw com 279 valores e não com 74 com tinha visto anteriormente, o que estou achando é que pode existir mais sinais a serem coletado só que a memoria SRAM do arduino pode não estar suportando e infelizmente não tenho uma placa Arduino MEGA para testar se realmente é isso e comprar um chip atmega2560 é praticamente o preço de uma placa MEGA. Com respeito ao buffer raw com 279 valores eu fiz um teste usando outro atmega como receptor para verificar se um está transmitindo os 279 valores e se o outro está recebendo os 279 valores e ambos estão ok sem corte de sinais nem perda de dados. O que eu venho notado é que ao que parece os pulsos enviados para o ar condicionado tem que ter um tamanho exato de pulso em nível baixo e nível alto mas isso eu não tenho certeza pois você me disse que o ar condicionado MIdea Split funcionou usando o trem de pulsos RAW. O grande problema é que eu pelo menos não acho nada na internet relacionado ao protocolo NEC para ar condicionados, visto que ele se comporta de uma maneira diferente do protocolo NEC comum, pois no caso dos ar condicionados o controle "soma" todas as funções pré programadas e envia tudo de uma vez quando se pressiona uma tecla o que acaba deixando o trem de pulsos muito longo e deixando nosso amiguinho arduino sem entender direito os dados recebidos. Assim, não sei se você ou outro membro tem acesso a placa Albatross ou a arduino MEGA mas se sim, você poderia fazer alguns testes com outros controles de ar condicionado? Vocês só testaram no Midea? Qual o modelo de controle desse Midea? Aff ar condicionado dos infernos Evil or Very Mad Evil or Very Mad
3
rauppluizfr

Level 0
276400 xp

Registrado em:
16/12/2013





Mensagens:
5
3
rauppluizfr

Responder com citações
Mensagem Ter Abr 08, 2014 8:36 am
Acionando ar-condicionado
O meu ar-condicionado é da consul e somente consegui aciona-lo usando o codigo RAW e aumentando o trem de pulsos do buffer na biblioteca. Talvez no final da semana eu teste em um outro aparelho.

Mas na época que estava na labuta para fazer o negócio funcionar, a biblioteca insiste em dizer que o codigo é NEC, precebi q é um problema recorrente, e que o pessoal ou resolvia aumentando o buffer (meu caso) ou mexendo na "sensibilidade" da biblioteca (não lembro o parâmetro agora e não estou em casa).

Como observação, o codigo raw deve estar todo armazenado na memória do arduino, se tentar ler do SD, gravar na PROGEM o negócio não funciona ,pq o acesso é lento e o trem de pulsos nao deve ser enviado com as tolerâncias necessárias e lembrando que os pinos utilizados pela biblioteca para enviar o IR é diferente no arduino UNO (pino 3) e no MEGA (pino 9), questão de timers/interrupcoes. Ja veirificou se não é problema se software? Certa vez descobri um problema no meu codigo ao colocar um led comum na saída e ver que ele não piscava ao enviar os comandos.

leotronica

Level 13
13191191 xp

Registrado em:
02/01/2005



Equipe:
Mecatron

Mensagens:
291

leotronica

Responder com citações
Mensagem Ter Abr 08, 2014 10:17 am
Acionando ar-condicionado
Comentário:
Mas na época que estava na labuta para fazer o negócio funcionar, a biblioteca insiste em dizer que o código é NEC, precebi q é um problema recorrente, e que o pessoal ou resolvia aumentando o buffer (meu caso) ou mexendo na "sensibilidade" da biblioteca (não lembro o parâmetro agora e não estou em casa).
Gostaria muito de saber que parâmetro é esse que você mexeu pois já modifiquei vários parâmetros sem sucesso até então.
Comentário:
Como observação, o codigo raw deve estar todo armazenado na memória do arduino, se tentar ler do SD, gravar na PROGEM o negócio não funciona ,pq o acesso é lento e o trem de pulsos não deve ser enviado com as tolerâncias necessárias
Também já tinha testado dessa forma e realmente se não mandar para a memoria do arduino o envio dos comandos RAW fica lento e bagunçado.
Comentário:
Ja veirificou se não é problema se software? Certa vez descobri um problema no meu codigo ao colocar um led comum na saída e ver que ele não piscava ao enviar os comandos.
Já sim, sempre que eu monto e envio o sinal de infravermelho eu verifico antes se o led está enviando o comando, para isso eu utilizo a câmera do meu celular que como todos devem saber consegue enxergar a luz emitida pelo led. rauppluizfr você poderia postar a sua biblioteca irremote para eu comparar com a minha? Gostaria de saber também o modelo do seu controle de ar condicionado. Outra coisa qual o tamanho do buffer de RAW do seu AR?

Francois

Level 2
2644800 xp

Registrado em:
08/04/2013



Equipe:
Submarino URC

Mensagens:
67

Francois

Responder com citações
Mensagem Ter Abr 08, 2014 7:41 pm
Acionando ar-condicionado
Leotronica,

O controle do ar-condicionado Midea é o R06/BGE (http://midea.hu/wp-content/uploads/2013/10/Midea-R06.jpg).


Comentário:
Eu recentemente encontrei um programa na internet que usa a interrupção para gerar os valores de tempo e pude descobrir que na verdade o que eu estou recebendo é um raw com 279 valores e não com 74 com tinha visto anteriormente
Esta quantidade de valores faz mais sentido. Agora é preciso descobrir por que a biblioteca está ignorando o 75o valor e adiante. Este programa que você usou informa o tempo entre cada pulso? Pode ser que do 74o ao 75o exista um pulso muito comprido que a biblioteca assume como fim do sinal. Contudo, isto deveria ter sido identificado quando você alterou a constante _GAP. Se você tiver o vetor de duração dos pulsos poderemos entender melhor o que está acontecendo. De qualquer maneira, para ler o sinal inteiro você teria de alterar a constante RAWBUF para 300.
Comentário:
o que estou achando é que pode existir mais sinais a serem coletado só que a memoria SRAM do arduino pode não estar suportando e infelizmente não tenho uma placa Arduino MEGA para testar se realmente é isso e comprar um chip atmega2560 é praticamente o preço de uma placa MEGA
Se você estiver executando somente o programa do IR, acredito que não ocupe toda a memória SRAM do ATmega. Para verificar a memória disponível você pode utilizar a função AvailableMemory() da biblioteca Memory (https://github.com/RoboCore/Memory).
Comentário:
Com respeito ao buffer raw com 279 valores eu fiz um teste usando outro atmega como receptor para verificar se um está transmitindo os 279 valores e se o outro está recebendo os 279 valores e ambos estão ok sem corte de sinais nem perda de dados.
Que valores você transmitiu? Os mesmo recebidos pelo programa que encontrou na internet ou valores randômicos? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Rauppluizfr,
Comentário:
Mas na época que estava na labuta para fazer o negócio funcionar, a biblioteca insiste em dizer que o codigo é NEC, precebi q é um problema recorrente, e que o pessoal ou resolvia aumentando o buffer (meu caso) ou mexendo na "sensibilidade" da biblioteca (não lembro o parâmetro agora e não estou em casa).
Aumentar o buffer (RAWBUF) costuma melhorar a leitura, mas notamos também que alguns valores são confundidos como fim de sinal, por isso pode-se incrementar a constante _GAP. Quanto à "sensibilidade", sei que tem uma constante (MARK_EXCESS) para ajustar a duração dos pulsos. O que você tiver de informação que possa nos ajudar é muito bem-vinda.

leotronica

Level 13
13191191 xp

Registrado em:
02/01/2005



Equipe:
Mecatron

Mensagens:
291

leotronica

Responder com citações
Mensagem Ter Abr 08, 2014 8:03 pm
Acionando ar-condicionado
Comentário:
Este programa que você usou informa o tempo entre cada pulso? Pode ser que do 74o ao 75o exista um pulso muito comprido que a biblioteca assume como fim do sinal. Contudo, isto deveria ter sido identificado quando você alterou a constante _GAP. Se você tiver o vetor de duração dos pulsos poderemos entender melhor o que está acontecendo. De qualquer maneira, para ler o sinal inteiro você teria de alterar a constante RAWBUF para 300.
Sim, o programa utiliza interrupção para obter os pulsos da mesma maneira que a biblioteca irremote faz, só que ele não corta o ultimo sinal como você disse que a biblioteca irremote faz. O meu RAWBUF está configurado para 350 acima disso meu arduino para de responder. O meu MARK_EXCESS continua com o valor em 100 e _GAP em 7000.
Comentário:
Que valores você transmitiu? Os mesmo recebidos pelo programa que encontrou na internet ou valores randômicos?
Transmitir exatamente os valores que o arduino coletou do meu controle de ar condicionado. Código: Vou partir para a ignorância vou desmontar o meu controle e ligar direto no arduino para ver se ele coleta exatamente esses valores. Mas qualquer outra sugestão é bem vinda.

santocyber

Level 0
84243 xp

Registrado em:
17/01/2014





Mensagens:
3

santocyber

Responder com citações
Mensagem Sex Abr 11, 2014 1:19 pm
Acionando ar-condicionado
Ola galera!

Estou com o albatross master com um arduino mega 2560 ligado na rede e o TouchOSC fluindo qnd clico no botão “/RoboCore/IR/record”

O LED verde começa a piscar em azul, e depois da timeout no serial monitor!

Estou testando com os controles do meu ar condicionado e da TV Philips, ambos dão timeout.

Ja tentei aumentar o RAWBUF (300 e 400 )e colocar pra 7000 o _GAP no arquivo IRremoteint.h


helpppppiiiii!!!please!

 Rolling Eyes

santocyber

Level 0
84243 xp

Registrado em:
17/01/2014





Mensagens:
3

santocyber

Responder com citações
Mensagem Sab Abr 12, 2014 1:39 am
Acionando ar-condicionado
Ola bom dia,

Na linha 98 do albatross_master, setei essa variavel, 

const int pinIRreceiver = 11;

No pino 11 coloquei um outro IR Receiver, consegui gravar o sinal do controle da TV, mas o sinal do controle do ar condicionado nao esta fluindo.



Ja modifiquei de muitas maneiras os valores :


#define USECPERTICK 50  // microseconds per clock interrupt tick
#define RAWBUF 300 // Length of raw duration buffer (originally 100)

// Marks tend to be 100us too long, and spaces 100us too short
// when received due to sensor lag.
#define MARK_EXCESS 100


Usei o IRrecvDump e o controle do ar condicionado mostra esses valores:

7FB09DA
Unknown encoding: 7FB09DA (32 bits)
Raw (194): -7300 650 -1550 600 -1600 600 -1600 600 -1600 600 -1600 550 -1650 600 -1550 650 -1550 650 -500 600 -550 600 -500 600 -550 600 -500 600 -550 550 -550 600 -550 600 -1600 550 -1650 600 -1550 650 -1550 600 -1600 600 -1600 600 -1600 600 -1600 600 -500 650 -500 600 -500 650 -500 550 -600 600 -500 550 -600 600 -500 600 -1600 550 -1650 600 -1600 500 -1700 500 -1700 600 -1600 600 -1550 650 -1550 650 -500 550 -550 650 -500 550 -550 650 -500 550 -600 600 -500 550 -600 600 -1600 600 -500 550 -600 600 -1600 600 -1550 650 -1550 650 -500 600 -1600 500 -600 600 -1600 600 -1600 600 -550 500 -600 600 -550 500 -1700 500 -600 600 -550 550 -1650 500 -650 550 -550 500 -1700 500 -600 600 -1600 600 -1600 600 -1600 550 -600 550 -1600 600 -1600 600 -550 500 -1700 500 -600 600 -550 500 -600 600 -1600 600 -550 600 -1600 600 -500 600 -1600 550 -600 600 -500 550 -1650 550 -600 600 -1550 650 -500 600 -1600 600 -500 600 -1600 600 -1600 550 


CFD42A5E
Unknown encoding: CFD42A5E (32 bits)
Raw (194): -7350 550 -1650 550 -1650 550 -1650 550 -1650 500 -1650 600 -1600 550 -1650 550 -1700 550 -550 550 -600 500 -600 550 -600 500 -600 550 -600 550 -600 500 -600 550 -1650 500 -1700 550 -1600 550 -1650 550 -1650 550 -1650 550 -1650 550 -1650 550 -600 500 -600 550 -550 550 -600 550 -600 500 -650 500 -600 500 -600 550 -1650 550 -600 550 -1650 550 -1600 550 -1650 550 -1650 550 -1650 550 -1650 550 -600 550 -1600 600 -550 550 -600 500 -600 550 -600 550 -550 550 -600 550 -1600 600 -550 550 -600 550 -1600 550 -1650 550 -1650 550 -650 450 -1700 550 -600 500 -1650 550 -1650 550 -600 500 -600 550 -600 550 -1650 550 -550 550 -1650 550 -600 550 -550 550 -600 550 -1600 600 -550 550 -1650 550 -1650 550 -550 550 -1650 550 -1650 550 -1650 550 -600 500 -1700 500 -600 550 -600 500 -650 500 -1650 550 -600 500 -1700 500 -650 500 -1650 550 -600 500 -650 500 -1650 550 -600 500 -1650 550 -600 500 -1700 500 -600 550 -1650 550 -1650 550 

CE98AF5D
Unknown encoding: CE98AF5D (32 bits)
Raw (194): -7300 600 -1600 550 -1650 600 -1600 600 -1600 600 -1550 650 -1550 600 -1600 600 -1600 600 -550 600 -500 600 -600 500 -550 650 -500 600 -550 550 -550 600 -550 500 -1700 550 -1650 600 -1550 650 -1550 550 -1650 600 -1600 600 -1600 600 -1600 550 -550 600 -550 550 -550 650 -500 600 -500 550 -600 600 -550 550 -550 550 -600 600 -500 600 -1600 600 -1600 600 -1600 600 -1600 600 -1600 600 -1550 650 -1550 600 -1600 600 -550 600 -550 600 -500 600 -500 600 -550 600 -550 550 -1650 600 -500 600 -550 600 -1550 600 -1600 600 -1600 600 -550 600 -1600 600 -500 600 -1600 600 -1600 550 -550 650 -500 600 -550 550 -1650 550 -550 600 -550 600 -1550 600 -550 600 -550 550 -1600 650 -500 600 -1600 600 -1600 550 -1650 600 -500 600 -1600 600 -1600 600 -550 600 -1550 650 -500 600 -550 550 -550 600 -1600 600 -500 650 -1550 600 -550 600 -1600 600 -500 650 -500 600 -1600 600 -550 600 -1550 600 -550 600 -1600 550 -550 650 -1550 600 -1600 600 

Como fazer para ele enviar o comando pro ar

 Idea  Idea  Idea  Idea 


Gratidão

leotronica

Level 13
13191191 xp

Registrado em:
02/01/2005



Equipe:
Mecatron

Mensagens:
291

leotronica

Responder com citações
Mensagem Sab Abr 12, 2014 10:15 pm
Acionando ar-condicionado
É pessoal realmente esta complicado controlar ar condicionado com a biblioteca irremote, mesmo usando os códigos RAW. Estou garimpando atras de uma solução mas nada de novo até o momento. Por favor se alguém ai tiver um osciloscópio e um controle de ar por favor poste o resultado dos testes se possível beleza?
3
markame

Level 0
243554 xp

Registrado em:
25/07/2013





Mensagens:
3
3
markame

Responder com citações
Mensagem Qua Jul 30, 2014 2:18 pm
Acionando ar-condicionado
Boa tarde eu posso ajudar consigo clonar qualquer controle  com um código que tenho mas é uma via de ida e volta eu to querendo guardar os códigos copiados na memoria do Arduíno  ! e aew quem sabe como fazer !
3
wbh16

Level 0
0 xp

Registrado em:
01/03/2015





Mensagens:
1
3
wbh16

Responder com citações
Mensagem Dom Mar 01, 2015 9:47 pm
Acionando ar-condicionado
Tenho um ar condicionado Consul bem estar 12000btus e passei o final de semana todo tentando decifrar estes códigos, até achar a solução com a ajuda deste forum.
No arquivo IRremote.h da biblioteca alterei:
        define RAWBUF 100   para   define RAWBUF 300

E em IRremoteint.h alterei:
        #define _GAP 5000   para   #define _GAP 50000

Capturei novamente os códigos raw depois de enviar novamente os códigos ao arduino com as alterações, ficando assim:


/*   
  --------------------------------------------------------------------------------------------------  
  Projeto: Como fazer um controle remoto de TV com arduino    
  ---------------------------------------------------------------------------------------------------  
 */    
  #include <IRremote.h> // Biblioteca para controlar o led infravermelho   
  IRsend irsend; //variável para poder enviar o código a TV   
  //variáveis constantes para o controle remoto   
  const int maisvolume = 9;     
  const int menosvolume = 10;   
  const int maiscanal = 11;   
  const int menoscanal = 12;   
  const int led = 13;    
  const int ledIR = 3;   
  //inicia o botão com o status 0    
  int buttonState = 0;

//Decoded NEC: C1602042 (32 bits) - Lig/Desl com temperatura de 22°
  unsigned int raw_ar_22[229] = {9150,4450,650,1650,600,1650,650,550,600,550,600,550,600,550,550,550,600,1650,650,550,600,1600,650,1650,600,600,600,500,600,550,600,550,600,550,600,550,600,550,600,1650,600,550,600,550,600,550,600,550,600,550,600,550,600,1650,600,550,600,550,600,550,600,550,600,1650,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,600,600,550,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,7950,650,500,650,500,650,500,650,550,600,550,600,550,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,600,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,600,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,600,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,600,600,550,600,1650,600,1650,600,600,600,500,600,550,600,1650,650,550,600};
  
//Decoded NEC: C160204A (32 bits) - Lig/Desl com temperatura de 23°
  unsigned int raw_ar_23[229] = {9150,4450,650,1600,700,1600,650,450,700,500,650,450,700,450,650,500,650,1650,650,500,650,1600,650,1600,700,450,700,450,700,450,650,500,650,500,650,500,650,500,650,1600,650,500,700,450,650,500,650,500,650,500,650,500,650,1600,650,500,650,500,650,1650,650,500,650,1600,650,500,650,500,650,500,650,500,650,500,650,500,650,450,700,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,7950,800,350,700,450,650,500,650,500,650,500,650,500,650,500,650,450,700,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,550,650,500,650,1600,650,1600,650,500,650,1650,650,500,650,1600,650,500,650};

//Decoded NEC: C1602046 (32 bits) - Lig/Desl com temperatura de 24°
  unsigned int raw_ar_24[229] = {9150,4450,650,1650,600,1650,650,500,650,500,650,500,650,500,600,550,600,1650,650,500,650,1650,600,1650,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,1650,600,550,650,500,600,550,600,550,600,550,600,550,600,1650,600,550,600,550,600,550,600,1700,600,1600,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,7950,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,500,650,500,600,550,600,550,600,600,550,600,550,550,600,550,600,550,600,550,600,550,600,550,600,550,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,500,600,600,550,600,550,600,600,550,600,1650,650,1650,600,550,600,500,650,1650,600,1650,650,500,650};

//Decoded NEC: C1602041 (32 bits) - Lig/Desl com temperatura de 26°
  unsigned int raw_ar_26[229] = {9200,4450,650,1650,650,1600,650,500,650,500,650,500,650,500,650,500,650,1600,650,500,650,1650,650,1600,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,1650,600,550,600,500,650,500,650,500,650,500,650,500,650,1650,600,550,600,550,600,550,600,500,650,500,650,1650,600,550,600,550,600,550,600,550,600,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,8000,650,500,650,500,650,450,700,450,650,500,650,500,650,550,600,550,600,550,600,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,500,650,500,650,500,650,500,650,550,650,500,650,1650,600,1650,600,550,650,500,600,550,600,550,600,1650,650};
  
  void setup() {   
  pinMode(led, OUTPUT); // saida led     
  pinMode(ledIR ,OUTPUT); // saída do infravermelho   
  Serial.begin(9600);   
  //configurando a entrada dos botoes   
  pinMode(maisvolume, INPUT);
  digitalWrite(maisvolume, HIGH);// liga o resistor de elevação (pullup)  
  pinMode(menosvolume, INPUT);
  digitalWrite(menosvolume, HIGH);// liga o resistor de elevação (pullup)  
  pinMode(maiscanal, INPUT);
  digitalWrite(maiscanal, HIGH);// liga o resistor de elevação (pullup)
  pinMode(menoscanal, INPUT);
  digitalWrite(menoscanal, HIGH);// liga o resistor de elevação (pullup)
  }   
  void loop(){   
  //se o botão maisvolume for pressionado ele ira enviar o código para aumentar o volume na tv   
  if (digitalRead(maisvolume) == LOW) {     
   digitalWrite(led, HIGH);    
   irsend.sendNEC(0x20DF10EF, 32);// Lig/Desl TV
   delay(400);
   irsend.sendNEC(0x404050AF, 32);// Lig/Desl Recep
   delay(3000);
   irsend.sendNEC(0x404040BF, 32);// numero 2 Recep
   delay(400);
   irsend.sendNEC(0x4040609F, 32);// numero 6 Recep
  }   
  else {   
   digitalWrite(led, LOW);    
  }    
  //se o botão menosvolume for pressionado ele irá enviar o código para Lig/Desl Ar consul   
  if (digitalRead(menosvolume) == LOW) {     
    digitalWrite(led, HIGH);    
    irsend.sendRaw(raw_ar_24,229,3Cool;// Lig/Desl Ar consul a 24°
    delay(500);
  }    
  else {   
   digitalWrite(led, LOW);    
  }   
  //se o botão maiscanal for pressionado ele ira enviar o código para aumentar o canal na tv   
  if (digitalRead(maiscanal) == LOW) {     
   digitalWrite(led, HIGH);   
   irsend.sendNEC(0x39C6E817, 32); // código que sera enviado a tv para aumentar o canal    
  }    
  else {   
   digitalWrite(led, LOW);    
  }   
  //se o botão menoscanal for pressionado ele irá enviar o código para diminuir o canal na tv   
  if (digitalRead(menoscanal) == LOW) {     
   digitalWrite(led, HIGH);    
   irsend.sendNEC(0x39C6C837, 32); // código que sera enviado a tv para diminuir o canal    
  }   
  else {   
   digitalWrite(led, LOW);    
  }    
  }   



Desta forma funcionou o controle, se alguem descobrir como usar hexadecimal favor postem.
3
JefersonDut

Level 0
266805 xp

Registrado em:
25/11/2015





Mensagens:
7
3
JefersonDut

Responder com citações
Mensagem Sab Dez 26, 2015 9:12 pm
Acionando ar-condicionado
Boa noite Pessoal, tenho um projeto hoje em funcionamento aqui em minha casa, no qual aciono duas cargas através do meu Iphone Utilizando o Aplicativo TOUCH OSC possuo um Arduino MEGA um Shield Ethernet e um módulo Relé, acabei de comprar o Arduino Shield Albatross Master juntamente com cabo IR, minha idéia é controlar minha TV no mesmo Projeto, porem não sei como criar o código e adicionar ao código do meu projeto atual, alguem poderia me ajudar? grato desde já

Segue o código:

#include <SPI.h>
#include <Ethernet.h>
#include <Z_OSC.h>
 
byte myMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte myIp[]  = { 192, 168, 0, 50 }; // Specify your arduino  IP here
int  serverPort  = 8000; // and listening port as well
 
byte destIp[] =  { 192, 168, 0, 2 }; // Your iPad/Android IP here
int  destPort = 9000;
 
float lightone;
float lighttwo;

int light1 = 6;
int light2 = 7;

Z_OSCClient client;
Z_OSCServer server;
Z_OSCMessage *rcvMes;
Z_OSCMessage message;
 
void setup(){
 Serial.begin(9600);
 Ethernet.begin(myMac ,myIp);
 server.sockOpen(serverPort);
 pinMode(light1, OUTPUT);
 pinMode(light2, OUTPUT);
 digitalWrite(light1, HIGH);
 digitalWrite(light2, HIGH);
}
 
void loop(){
 if(server.available()){
  message.setAddress(destIp,destPort);
  rcvMes=server.getMessage();
 
     if( !strcmp( rcvMes->getZ_OSCAddress() ,  "/ard/ventila" ) )
     {
      lightone = rcvMes->getFloat(0);
      if (lightone > 0.5) {
          digitalWrite(light1, LOW);
          message.setZ_OSCMessage( "/lights/light1label" ,"s" , "ON" );
          client.send(&message);
      } 
      else if(lightone < 0.5) {
          digitalWrite(light1, HIGH);
          message.setZ_OSCMessage( "/lights/light1label" ,"s" , "OFF" );
          client.send(&message);
      }
     }
     
     if( !strcmp( rcvMes->getZ_OSCAddress() ,  "/ard/luzdasala" ) )
     {
      lighttwo = rcvMes->getFloat(0);
      if (lighttwo > 0.5) {
          digitalWrite(light2, LOW);
          message.setZ_OSCMessage( "/lights/light2label" ,"s" , "ON" );
          client.send(&message);
      } 
      else if(lighttwo < 0.5) {
          digitalWrite(light2, HIGH);
          message.setZ_OSCMessage( "/lights/light2label" ,"s" , "OFF" );
          client.send(&message);
      }
     }
 }
3
rmariz63

Level 0
40002 xp

Registrado em:
07/04/2017





Mensagens:
2
3
rmariz63

Responder com citações
Mensagem Qui Dez 28, 2017 11:35 pm
Acionando ar-condicionado
Esse post é antigo mas foi ótimo porque pela primeira vez tentei usar o controle remoto pelo Arduino justamente para um ar condicionado Consul.

Fiz o que o WBH16 falou e o ar condicionado funcionou.

No arquivo IRremote.h da biblioteca alterei:
        define RAWBUF 100   para   define RAWBUF 300

Coloquei um laço de repetição para 5 vezes.  Não testei com valor menor para ver se ainda funcionava.  O controle remoto original emite o código 3 vezes.

  for (int i = 0; i < 5; i++) {

  irsend.sendRaw(irSignal, 115, 38 ) ;

    }

115 foi a quantidade de dados da array na função de coleta do sinal. Utilizei o IRrevDumpV2 porque o resultado é fácil para copiar colar no exemplo do IRsendRawDemo.  Durante os testes retirei o sizeof e o khz, mas o problema não era esse.

irSignal é o nome da minha array.

38 é a frequência de emissão em KHz.

Valeu pelo post!
3
rmariz63

Level 0
40002 xp

Registrado em:
07/04/2017





Mensagens:
2
3
rmariz63

Responder com citações
Mensagem Qui Dez 28, 2017 11:39 pm
Acionando ar-condicionado
wbh16 Escreveu:
Tenho um ar condicionado Consul bem estar 12000btus e passei o final de semana todo tentando decifrar estes códigos, até achar a solução com a ajuda deste forum. No arquivo IRremote.h da biblioteca alterei: define RAWBUF 100 para define RAWBUF 300 E em IRremoteint.h alterei: #define _GAP 5000 para #define _GAP 50000 Capturei novamente os códigos raw depois de enviar novamente os códigos ao arduino com as alterações, ficando assim: /* -------------------------------------------------------------------------------------------------- Projeto: Como fazer um controle remoto de TV com arduino --------------------------------------------------------------------------------------------------- */ #include <IRremote.h> // Biblioteca para controlar o led infravermelho IRsend irsend; //variável para poder enviar o código a TV //variáveis constantes para o controle remoto const int maisvolume = 9; const int menosvolume = 10; const int maiscanal = 11; const int menoscanal = 12; const int led = 13; const int ledIR = 3; //inicia o botão com o status 0 int buttonState = 0; //Decoded NEC: C1602042 (32 bits) - Lig/Desl com temperatura de 22° unsigned int raw_ar_22[229] = {9150,4450,650,1650,600,1650,650,550,600,550,600,550,600,550,550,550,600,1650,650,550,600,1600,650,1650,600,600,600,500,600,550,600,550,600,550,600,550,600,550,600,1650,600,550,600,550,600,550,600,550,600,550,600,550,600,1650,600,550,600,550,600,550,600,550,600,1650,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,600,600,550,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,7950,650,500,650,500,650,500,650,550,600,550,600,550,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,600,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,600,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,550,600,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,600,600,550,600,1650,600,1650,600,600,600,500,600,550,600,1650,650,550,600}; //Decoded NEC: C160204A (32 bits) - Lig/Desl com temperatura de 23° unsigned int raw_ar_23[229] = {9150,4450,650,1600,700,1600,650,450,700,500,650,450,700,450,650,500,650,1650,650,500,650,1600,650,1600,700,450,700,450,700,450,650,500,650,500,650,500,650,500,650,1600,650,500,700,450,650,500,650,500,650,500,650,500,650,1600,650,500,650,500,650,1650,650,500,650,1600,650,500,650,500,650,500,650,500,650,500,650,500,650,450,700,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,7950,800,350,700,450,650,500,650,500,650,500,650,500,650,500,650,450,700,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,450,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,550,650,500,650,1600,650,1600,650,500,650,1650,650,500,650,1600,650,500,650}; //Decoded NEC: C1602046 (32 bits) - Lig/Desl com temperatura de 24° unsigned int raw_ar_24[229] = {9150,4450,650,1650,600,1650,650,500,650,500,650,500,650,500,600,550,600,1650,650,500,650,1650,600,1650,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,1650,600,550,650,500,600,550,600,550,600,550,600,550,600,1650,600,550,600,550,600,550,600,1700,600,1600,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,7950,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,500,650,500,600,550,600,550,600,600,550,600,550,550,600,550,600,550,600,550,600,550,600,550,600,550,550,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,550,600,500,600,600,550,600,550,600,600,550,600,1650,650,1650,600,550,600,500,650,1650,600,1650,650,500,650}; //Decoded NEC: C1602041 (32 bits) - Lig/Desl com temperatura de 26° unsigned int raw_ar_26[229] = {9200,4450,650,1650,650,1600,650,500,650,500,650,500,650,500,650,500,650,1600,650,500,650,1650,650,1600,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,1650,600,550,600,500,650,500,650,500,650,500,650,500,650,1650,600,550,600,550,600,550,600,500,650,500,650,1650,600,550,600,550,600,550,600,550,600,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,8000,650,500,650,500,650,450,700,450,650,500,650,500,650,550,600,550,600,550,600,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,500,650,500,650,500,650,500,650,500,650,500,650,500,650,500,600,550,600,550,600,550,600,550,600,550,600,550,600,500,650,500,650,500,650,500,650,550,650,500,650,1650,600,1650,600,550,650,500,600,550,600,550,600,1650,650}; void setup() { pinMode(led, OUTPUT); // saida led pinMode(ledIR ,OUTPUT); // saída do infravermelho Serial.begin(9600); //configurando a entrada dos botoes pinMode(maisvolume, INPUT); digitalWrite(maisvolume, HIGH);// liga o resistor de elevação (pullup) pinMode(menosvolume, INPUT); digitalWrite(menosvolume, HIGH);// liga o resistor de elevação (pullup) pinMode(maiscanal, INPUT); digitalWrite(maiscanal, HIGH);// liga o resistor de elevação (pullup) pinMode(menoscanal, INPUT); digitalWrite(menoscanal, HIGH);// liga o resistor de elevação (pullup) } void loop(){ //se o botão maisvolume for pressionado ele ira enviar o código para aumentar o volume na tv if (digitalRead(maisvolume) == LOW) { digitalWrite(led, HIGH); irsend.sendNEC(0x20DF10EF, 32);// Lig/Desl TV delay(400); irsend.sendNEC(0x404050AF, 32);// Lig/Desl Recep delay(3000); irsend.sendNEC(0x404040BF, 32);// numero 2 Recep delay(400); irsend.sendNEC(0x4040609F, 32);// numero 6 Recep } else { digitalWrite(led, LOW); } //se o botão menosvolume for pressionado ele irá enviar o código para Lig/Desl Ar consul if (digitalRead(menosvolume) == LOW) { digitalWrite(led, HIGH); irsend.sendRaw(raw_ar_24,229,3Cool;// Lig/Desl Ar consul a 24° delay(500); } else { digitalWrite(led, LOW); } //se o botão maiscanal for pressionado ele ira enviar o código para aumentar o canal na tv if (digitalRead(maiscanal) == LOW) { digitalWrite(led, HIGH); irsend.sendNEC(0x39C6E817, 32); // código que sera enviado a tv para aumentar o canal } else { digitalWrite(led, LOW); } //se o botão menoscanal for pressionado ele irá enviar o código para diminuir o canal na tv if (digitalRead(menoscanal) == LOW) { digitalWrite(led, HIGH); irsend.sendNEC(0x39C6C837, 32); // código que sera enviado a tv para diminuir o canal } else { digitalWrite(led, LOW); } } Desta forma funcionou o controle, se alguem descobrir como usar hexadecimal favor postem.
Mostrar mensagens desde a última:
Ir para página Anterior  1 2




Ir para:  
Todos os horários são GMT - 3 HorasVocê não tem permissão para escrever novas mensagens
v não tem permissão para responder às mensagens
Você não tem permissão para editar suas mensagens
Você não tem permissão para deletar suas mensagens
Você não tem permissão para classificar tópicos
Você não tem permissão para classificar mensagens
Você não tem permissão para votar em enquetes
Anexar downloads : Proibido
Fazer Download de Arquivos: Proibido
Powered by phpBB © 2001 phpBB Group