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.......
Tags:
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 3Inverte 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
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...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por