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: 19132

Responder esta

Respostas a este tópico

Rui,

A sketch anexa é o exemplo da biblioteca que você mesmo me indicou, e nenhumas das sketchs de recebimento funcionam (até mesmo de outras bibliotecas, como por exemplo a IRremote).

O circuito que anexei se refere ao emissor (que funciona), mas meu circuito para o receptor está praticamente igual (apenas alterando o pino de sinal para o 11 conforme a sketch).

Fazendo testes por aqui agora, notei que, se eu colocar o dedo no pino 11 por baixo, ou retirando a alimentação do circuito, mas deixando o pino 11 conectado, ele escreve dados totalmente aleatórios e infinitos na minha porta serial (conforme imagem anexa), mas se eu volto a alimentar o circuito, novamente ele para de escrever.

Não tenho mais nenhuma ideia do que fazer, pois já troquei de placa (tenho dois UNO e um MEGA), de PC e as bibliotecas diferentes tem o mesmo comportamento...

Mais uma vez agradeço toda a atenção!

Anexos

Oi Z, qual é o IR detector que você está usando?
Modelo ou foto ou link que mostre ele?
Rui

Rui, infelizmente essa informação eu não sei...

Na loja onde eu o comprei eles não tem também as especificações do componente, mas é um LED infravermelho receptor.

O meu conjunto de emissor e receptor são mais ou menos conforme a foto anexa.

Obrigada!

Anexos

Z, este sensor não vai dar certo.

Tem que ser destes tipos: (3 pinos).

http://1.bp.blogspot.com/-52SjCEqzeFc/UEgaVWct3iI/AAAAAAAACGQ/TORo3...

Os mais comuns parecem com este:

https://http2.mlstatic.com/3-unidades-sensor-ir-receptor-infraverme...

Tem que ser ligado assim

http://robotshop.com/letsmakerobots/files/userpics/u1223/Picaxe_IR.jpg

No lugar do Picaxe use o arduino

Rui

Usa esse circuito que o José Gustavo postou, só testa o valor do resistor que vai na base eu acho que com 10k n vai funcionar pela seletividade do IR

Eu fiz tudo como falaram aqui. Porém não funcionou...

#include IRsend irsend; unsigned int raw[76] = {4550,4300,650,1500,650,500,600,1550,600,1550,600,550,550,550,550,1600,600,500,600,500,600,1600,550,550,550,550,550,1650,500,1650,550,550,550,1600,550,1600,550,550,550,550,550,1650,550,1600,550,1650,500,1600,600,1600,550,550,550,1600,550,1650,500,600,550,550,500,600,550,550,550,550,550,600,500,600,500,1650,550,600,450,};

void setup() {

Serial.begin(9600);

}

void loop() {

if(Serial.available())

{

char valor = Serial.read();

Serial.println(valor);

if(valor=='l')

irsend.sendRaw(raw,76,38);

}

}

O código acima é o que estou utilizando para ligar o Split MIDEA. Na hora de receber o código do controle do split apenas aperter o botão POWER.

Notei que o led é bem mais fraco que o do controle do ar. Porém coloquei grudado no split na frente do receptor e nada.

O que será que está ocorrendo?

Abraço

alguns códigos são maiores do que a biblioteca que achamos está programada, não sei se o código do MIDEA é maior que 76, mas vc ja verificou o valor do RAWBUF no final da biblioteca?

se você ja está usando o esquema do transistor citado pelo josé gustavo, experimente usar o led sem resistor também isso vai "diminuir" a vida útil do resistor mas aumentará o alcance para o teste.

aliás fica uma pergunta pra glr ai, na utilização do LED IR, o resistor é de vital importancia? visto que o tempo de acendimento é tão curto? digo isso pois uso em casa um led IR 5v sem resistor e ja faz alguns meses, o led está a ~ 3,5m de distancia e continua funcionando normal (inclusive uso ele em uma tensão de aprox 6v, pois do contrario os outros dispositivos não funcionam corretamente.

Bom o que você quis dizer com RAWBUF? Acredito que o problema não seria o LED pois fiz o teste com o controle da NET utilizando o RAW e deu certo. Poderia me esclarecer um pouco mais a respeito desse RAWBUF? será que o código do ar condicionado MIDEA é maior que 76? 

Obrigado!

Para poder copiar os codidos de qualquer ar condicionado com o RAW tem que se fazer duas alterações nas bibliotecas do IRremote:

1-  IRremote.h -> localizar esta linha #define RAWBUF 100 // Length of raw duration buffer e modificar para 200 - #define RAWBUF 200

2- IRremoteInt.h -> localizar esta linha #define _GAP 5000 // Minimum map between transmissions - Acrescentar mais 1 zero - "_GAP 50000

depois é só usar o IRrecvDump e copiar os codigos para depois fazer as mudanças

Trecho do codigo

Raw (200): -222 3050 -1700 500 -1050 500 -1050 500 -350 500 -350 500 -350 550 -1000 550 -350 500 -350 500 -1050 500 -1050 500...

Deletar o primeiro numero da sequencia  e colocar virgula entre todos os numeros:

Raw (200):  3050, 1700, 500, 1050, 500, 1050, 500, 350, 500, 350, 500, 350, 550, 1000, 550, 350, 500, 350, 500, 1050, 500, 1050, 500

Feito isso o codigo esta pronto.

bastando somente mudar o valor do Irsend para o valor que o dump mostra

irsend.sendRaw(raw,76,38) ficando assim irsend.sendRaw(raw,200,38);

Olá Alex,

Mais com essa alteração a biblioteca fica funcionado normal para os outros protocolos como o NEC, RC5 e RC6.

Pessoal, acho que cheguei num acordo aqui com o Ar Condicionado e a Biblioteca IRremote, segui os passos que o nosso amigo Alex Marola Barbosa detalhou nesse post:

Para poder copiar os codidos de qualquer ar condicionado com o RAW tem que se fazer duas alterações nas bibliotecas do IRremote:

1-  IRremote.h -> localizar esta linha #define RAWBUF 100 // Length of raw duration buffer e modificar para 200 - #define RAWBUF 200

2- IRremoteInt.h -> localizar esta linha #define _GAP 5000 // Minimum map between transmissions - Acrescentar mais 1 zero - "_GAP 50000

depois é só usar o IRrecvDump e copiar os codigos para depois fazer as mudanças

Trecho do codigo

Raw (200): -222 3050 -1700 500 -1050 500 -1050 500 -350 500 -350 500 -350 550 -1000 550 -350 500 -350 500 -1050 500 -1050 500...

Deletar o primeiro numero da sequencia  e colocar virgula entre todos os numeros:

Raw (200):  3050, 1700, 500, 1050, 500, 1050, 500, 350, 500, 350, 500, 350, 550, 1000, 550, 350, 500, 350, 500, 1050, 500, 1050, 500

Feito isso o codigo esta pronto.

bastando somente mudar o valor do Irsend para o valor que o dump mostra

irsend.sendRaw(raw,76,38) ficando assim irsend.sendRaw(raw,200,38);

Fiquei testando por um tempo aqui e não funcionava até que, me lembrei de ter lido uma vez em algum lugar sobre uma outra parte da biblioteca onde tinha que alterar mais alguma coisa, que é IRremoteInt.h eu alterei essa parte:

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

La pela linha 66 (no meu caso aqui) estava difinido  (#define IR_USE_TIMER2 // tx = pin 3) dai então comentei essa linha e descomentei a linha (#define IR_USE_TIMER1 // tx = pin 9) ficando como mostra a citação acima e magicamente a coisa funcionou meus amigos.

Mas devo a ajuda ao Alex Marola Barbosa que falou que dava pra fazer sim e que era pra eu tentar seguindo o esquema dele. Obrigado Alex, vou agora começar a nova fase do meu projeto.

Grande Abraço a todos.

 OBS: a sim esqueci de uma coisa minha variavel ficou assim :

unsigned int led[200] = {4350,4400,550,1600,600,500,550,1600,600,1600,550,550,550,500,600,1600,550,550,550,500,600,1600,550,550,550,500,600,1600,550,1600,550,550,550,1600,600,500,550,550,550,550,550,1600,550,1600,600,1600,550,1600,550,1600,600,1600,550,1600,600,1600,550,550,550,500,600,500,550,550,550,550,550,500,600,500,600,1600,550,1600,550,1600,600,500,550,550,550,550,550,1600,550,1600,600,500,600,500,550,550,550,1600,550,1600,600,1600,500,5200,4450,4300,600,1600,550,500,600,1600,550,1600,600,500,550,550,550,1600,550,550,550,550,550,1600,550,550,550,550,550,1600,550,1600,600,500,550,1650,550,500,600,500,600,500,550,1600,600,1600,550,1600,550,1600,600,1600,550,1600,600,1600,550,1600,550,550,550,550,550,500,600,500,550,550,550,550,550,550,550,1600,550,1600,600,1600,550,500,600,500,550,550,550,1600,600,1600,550,550,550,500,600,500,550,1600,600,1600,550,1600,500,};

Notem que na ultima string ( ......,500,}; ) tem uma virgula ( , ) depois do 500 e antes do colchetes, desse jeito funcionou.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço