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:
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!
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!
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
Veja com o o sensor é por dentro:
https://www.pololu.com/file/download/tssp58038_datasheet.pdf?file_i...
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por