Então galera, eu estou fazendo um projeto de automação residencial como TCC do curso de SI, ele deve funcionar da seguinte forma:
O problema que estou tendo é no Arduino 3 Uno, no qual esta conectado um transmissor IR, quando eu tendo enviar o sinal IR para a TV apos ter recebido um comando do Arduino 1 Mega informado qual o sinal a ser enviado, ele envia um sinal diferente do que esta no código fonte.
Codigo Arduino 3 Uno:
#include <IRremote.h>
#include <IRremoteInt.h>
#include <VirtualWire.h>
byte message[VW_MAX_MESSAGE_LEN]; // Armazena as mensagens recebidas
byte msgLength = VW_MAX_MESSAGE_LEN; // Armazena o tamanho das mensagens
char MsgRf[10];
String sMsgRf;
IRsend irsend;
int turn = 1;
void setup() {
Serial.begin(9600);
vw_set_rx_pin(5);
vw_setup(2000);
vw_rx_start();
vw_set_tx_pin(8);
vw_setup(2000);
}
void loop() {
sMsgRf = "";
uint8_t message[VW_MAX_MESSAGE_LEN];
uint8_t msgLength = VW_MAX_MESSAGE_LEN;
// Recebe Msg via RF do Arduino Principal
if (vw_get_message(message, &msgLength)) {
Serial.print("Recebido: ");
for (int i = 0; i < msgLength; i++) {
sMsgRf.concat(char(message[i]));
}
}
if(sMsgRf == "TvL"){
char Resposta[10] = "Tv Ligada";
EnviaRF(Resposta);
irsend.sendRC5(0x80c, 12);
}
}
void EnviaRF (char *message){
vw_send((uint8_t *)message, strlen(message));
vw_wait_tx();
}
Coloquei um outro Arduino para verificar qual o sinal enviado por esse com o transmissor IR, e o código recebido foi:
970EB328
Unknown encoding: 970EB328 (32 bits)
Porem se eu utilizar o código exemplo IRsendDemo fornecido pela biblioteca IRremote, ele envia o IR certinho e funciona na TV :(
alguém saberia o porque isto esta acontecendo? e como eu posso contornar esse problema :D
Tags:
Qual TV ? Qual Protocolo IR ?
Descodificando Controle Remoto infravermelho:
http://labdegaragem.com/profiles/blogs/6223006:BlogPost:315534
Opa, blz?
É uma TV da Philips de 42 pol agr o modelo exato eu n sei :(
o protocolo que me retornou foi RC5, usando o sketch IRrecvDump que vem junto a biblioteca IRremote
Correto , a TV Phillips usa o protocolo RC5.
Mas não entendi a sua aplicação. Você deseja fazer um repetidor de Controle de IR ?
Qual a comunicação usada entre os Arduinos?
Minha sugestão para testar o Controle remoto da Phillips:
Pois é eu me expressei mal ali em cima mesmo :)
A aplicação é o seguinte, o meu aplicativo Android ira se comunicar com o Arduino Mega via socket, esse arduino mega vai processar o dado recebido e através de um transmissor RF ira mandar para os demais arduino (dependendo do que ele recebeu), se o comando for por exemplo TvL (ligar a TV), ele ira enviar para o arduino uno, e este ira enviar o comando para a TV através de um transmissor IR.
Uma pergunta..
todos os demais comandos IR estão funcionando com este mesmo arduino?
Já tentei usar estas mesmas bibliotecas ao mesmo tempo e não consegui,..
uma alternativa pouco eleante, seria colocar mais um uno em paralelo a este, com comunicação serial por exemplo apenas com as bibliotecas IR. (eu falei que seria pouco elegante)
Radio - "UNO 3" - Serial - Novo Uno 4 - IR - TV
Hmmm, é uma boa ideia... mas como você mesmo falou, fica meio deselegante, ainda mais para um TCC. Mas se eu não encontrar outra alternativa vai ter que ser assim mesmo :)
Você tentou igualzinho ao code do exemplo??
Lembre-se quando se aperta o botão do controle o mesmo código é enviado varias vezes enquanto estiver pressionado
for (int i = 0; i < 3; i++) {
irsend.sendRC5(0x80c, 12); // power code TV da Philips de 42 pol
delay(100);
yep, fiz um teste aqui e coloquei outro arduino com um receptor IR para ver o Uno estava mandando... e utilizando esse codigo ai retornou isso:
Unknown encoding: 530DB67C (32 bits)
Raw (24): -4150 1250 -1150 1250 -1150 2500 -1150 1250 -1200 1200 -1200 1200 -1150 1250 -1150 1250 -1150 1250 -2350 1200 -1200 2350 -1200 1200
530DB67C
Unknown encoding: 530DB67C (32 bits)
Raw (24): 2308 1250 -1200 1200 -1200 2400 -1200 1200 -1150 1200 -1200 1200 -1200 1200 -1200 1200 -1150 1250 -2350 1200 -1200 2400 -1150 1250
530DB67C
Unknown encoding: 530DB67C (32 bits)
Raw (24): 2358 1250 -1150 1200 -1200 2350 -1250 1150 -1250 1200 -1150 1250 -1150 1200 -1200 1200 -1200 1150 -2400 1250 -1150 2400 -1200 1150
Totalmente diferente do que deveria retorner :D. Acho que n tem como usar RF junto com IR send mesmo, pq se eu faço esse código ai sem a biblioteca VirtualWire ele funciona de boa :(
HUMMMMM... você procurou na net???
noInterrupts(); // <------ Use this ----------
vw_rx_stop();
vw_setup(0);
delay(500);
for (int i = 0; i < 3; i++) {
irsend.sendRC5(0x80c, 12); // power code TV da Philips de 42 pol
delay(100);
}
delay(500);
vw_rx_start();
interrupts();
Depois fala se funcionou!!!
Deu certo Alexandre \o\ /o/ \o\ /o/ era conflito mesmo...
Mt obrigado pela ajuda de vcs...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por