boa noite amigos..

ja andei lendo bastante mas nao encontrei nada concreto até agora...alguem ja conseguiu decodificar os codigos de um controle de ar condicionado slipt e controlar o ar codicionado com o arduino?

todos os tópicos que li ninguem obteve sucesso...

aqui em ksa ja controlo as tvs, sky.......

Exibições: 19126

Responder esta

Respostas a este tópico

Boa tarde Michael Araujo, como estas?

Vim seguindo o passo a passo até o momento, porem ainda não consegui ligar ou desligar o Ar-condicionado. Poderia me ajudar? Detalhe, estou usando o arduino UNO.

######################################################################################

ATÉ O MOMENTO ALTEREI

IRremote.h

#define RAWBUF 200

IRremoteInt.h

#define _GAP 50000

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

######################################################################

PEGANDO OS DADOS RECEBIDOS E RETIRANDO O SINAL DE - E COLOCANDO , (VIRGULA ENTRE OS VALORES, MONTEI O SEGUINTE MODO DE ENVIO:

#include <IRremote.h>

IRsend irsend;

void setup() {
Serial.begin(9600);
}

void loop() {
char comando = Serial.read();
if(comando =='b')
ligaAr();
}

}
void ligaAr(){
unsigned int raw[194] = {500,1650,500,1650,550,1600,500,1650,500,1700,450,1650,550,1650,500,1650,550,550,550,600,450,650,500,600,550,550,500,600,550,600,500,600,450,1700,450,1700,450,1750,450,1650,500,1700,500,1650,450,1700,450,1750,450,650,500,600,500,600,450,700,500,550,550,600,450,650,500,650,500,1600,550,1600,550,1650,500,1650,500,1650,550,1650,500,1600,550,1600,550,600,500,650,500,600,450,650,500,600,500,650,500,550,550,600,500,1650,500,600,500,1650,550,600,500,1650,500,600,450,700,450,1650,500,650,500,1650,500,650,450,1650,500,650,500,1650,500,1650,500,600,450,650,500,650,450,650,500,1650,500,1650,500,650,450,1700,500,1600,550,1650,450,1700,500,1650,500,650,500,600,500,1650,500,600,450,700,450,650,500,1650,450,650,500,1650,500,650,450,1650,550,550,500,650,500,1650,500,650,450,1700,500,600,500,1650,500,600,500,1700,500,1650,500,};
for (int i = 0; i < 3; i++) {
irsend.sendRaw(raw,194,38);
Serial.println("Envio do modo RAW");
}
}

O que devo estar fazendo errado? o Ar é um Komeco.

Obrigado desde já!

Willian altera isso:

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

Inverte para:

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

A sim coloca o pino 9 do Arduíno também.

Testa dessa forma.

Não deu certo Michael Araujo! :(

Troquei o fio colocando eles no pino 9, e com uma câmera notei que o LED nem transmite. Quando voltei o código para o pino 3 e o fio também, através da câmera eu notei que ele acende como se estivesse transmitindo, porem nada acontece com o Ar.

Tenta esse:

#include <IRremote.h>
IRsend irsend;

void setup() {
Serial.begin(9600);
}

void loop() {
char comando = Serial.read();
if(comando =='b'){
ligaAr();
}
}

void ligaAr(){
unsigned int ligaAr[194] = {
500,1650,500,1650,550,1600,500,1650,500,1700,450,1650,550,1650,500,1650,550,550,550,600,450,650,500,600,550,550,500,600,550,600,500,600,450,1700,450,1700,450,1750,450,1650,500,1700,500,1650,450,1700,450,1750,450,650,500,600,500,600,450,700,500,550,550,600,450,650,500,650,500,1600,550,1600,550,1650,500,1650,500,1650,550,1650,500,1600,550,1600,550,600,500,650,500,600,450,650,500,600,500,650,500,550,550,600,500,1650,500,600,500,1650,550,600,500,1650,500,600,450,700,450,1650,500,650,500,1650,500,650,450,1650,500,650,500,1650,500,1650,500,600,450,650,500,650,450,650,500,1650,500,1650,500,650,450,1700,500,1600,550,1650,450,1700,500,1650,500,650,500,600,500,1650,500,600,450,700,450,650,500,1650,450,650,500,1650,500,650,450,1650,550,550,500,650,500,1650,500,650,450,1700,500,600,500,1650,500,600,500,1700,500,1650,500,};
irsend.sendRaw(ligaAr,194,38);
Serial.println("Ligar");
}

Dai é o seguinte, faz o :

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

Inverte para:

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

Usando o pino 9 mesmo, ligado o positivo do IR emissor no pino 9. Para mandar o RAW tem que usar IR_USE_TIMER1 mesmo.

Faz o teste com o sketch que colei ai.

Abraço

Olá! É interessante pocurar interpretar o valor que deveria se rmandado para cada sinalização e enviar este valor exato. No protocolo de ar condicionado tem o Pulso Alto de Header, Pulso Baixo de Header, Pulso Baixo indicando Zero, Pulso Baixo Indicando Um e o Pulso de Bit propriamente dito. Cada largura de pulso é medida na recepção pelo Arduino, gerando um certo valor no dump. Acontece que se apenas pegarmos estes valores e reenviarmos, pode ser que na transmissão ocorra mais algum atraso (ou adiantamento), distorcendo ainda mais o pulso, o que fará com que o split não inteprete corretamente o comando, ignorando. Gerei um arquivo excel com os pulsos padrão para o ar condicionado Electrolux que até por sinal, vendo pelo protocolo, é a sequencia de  raw data postada pelo Michel Araujo. Decodifiquei também para o ar Elgin. Se vc quiser mais informações, pode entrar em contato. É interessante também dar uma olhada no site que contem bibliotecas decodificadas para o ar da Panasonic e Mitsubishi: https://github.com/r45635/HVAC-IR-Control.

Fiz um codigo para testar gerando varias temperaturas e´stá funcionando direitinho, acabei de testar. Fiz uma planilha para comparar as palavras e ver quais bytes mudam quando mexe na temepratura. No meu codigo nao foi necessario fazer as alterações na biblioteca sugeridas pelo colega Michel Araujo. Deixei tudo como estava, inclusive envio pelo Pino 3 mesmo do Arduino Uno.

 

 

Abraços

O pin 9 deve ser usado no MEGA pq ele não aceita o pin 3, já o uno aceita qualquer um.

Quanto ao atraso, creio que não deva ser uma preocupação, pois os aparelhos tem uma tolerância.
Para algumas máquinas é sim bastante crítico. As da York ainda não consegui comandar, e usando a mesma metodologia das demais que funcionaram.

Saquei,

mas será que é pelo atraso ou tem mais algum truque?

como os malditos PHILIPS que enviam 2 códigos para o mesmo comando alternadamente?

ou ainda os SONY que enviam 3x o mesmo código a cada acionamento em 40kHz?

digo isso pois mesmo os sony funcionando em 40kHz aceitam os códigos enviados em 38kHz

(aprox 5% de erro) as variações que consigo perceber nos códigos capturados variam de 4 a 12% aprox

Pode ser que o problema seja este atraso (não diria que da para descartar) mas eu, leigamente, não apostaria nisso.

você já tentou capturar varias vezes o mesmo código neste york e compará-los?

Sim, cada vez vem com valores diferentes de largura de pulso para representar o mesmo bit. Quanto aos codigos serem repetidos, como é o caso do Sony ou Philips não vejo problema, pois de fato estamos capturando a interface fisica do sinal bruto, ou seja uma sequencia completa de bits. Analisando o codigo do ar da Electrolux, de 200 pulsos, ele é na verdade dois conjuntos de 100, separados por um pulso mais longo que indica esta repetição.

o sony talvez o que vc disse do Electrolux resolva, mas no philips nao!

no caso do philips, (a menos que a captura que fiz aqui esteja com alguma falha), ele manda dois codigos completamente distintos (um em cada acionamento não 2 codigos no mesmo acionamento)... ou seja vc precisa capturar os dois e criar uma rotina para envia-los alternadamente a cada comando

Eu não sou um profundo conhecedor, mas se os códigos não são repetidos com pequena margem de erro, e sim com diferenças significativas, pode ser que use um protocolo parecido com o Philips... 

ou seja existe alguma regra que define um codigo diferente para o mesmo comando a cada envio...

no philips consegui identificar facilmente, pois o envio do arduino funcionava uma vez só, mas se desse um comando pelo controle, o arduino voltava a funcionar uma unica vez...

pode ser que o york tenha uma frescura maior!

Olá.

Alguém sabe me dizer como eu altero o timer da biblioteca do IRremote?

Acredito qeu elea está conflitando com o timer de outra biblioteca que estou utilizando o Emon.lib

Boa tarde

Acho que estou um pouco atrasado, mais recentemente tive o mesmo problema. apos vários testes achei uma solução para controlar o Ar condicionado por IR, segue link da solução:

http://www.instructables.com/id/Ar-Condicionado-controlado-por-Ardu...

 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço