Galera 

boa noite!

Eu estou com um projeto de automação quase pronto, mas ainda me faltam alguns passos, vamos lá.

Meu projeto irá controlar os aparelhos de video, TV DVD ... e controlar todas as lampadas da minha casa.

É assim, a central recebe uma String via Bluetooth e se for algum comando de multimídia, ela envia os códigos via IR para os aparelhos. E, se for comandos de iluminação a central envia a String via RF para as placas Slaves que estão instaladas pela casa.

Aparentemente tudo está funcionando, porém quando eu utilizo o comando de multimídia ele até pisca o led emissor (vejo pela câmera) mas o comando não funciona.  

Sou curioso e não sei absolutamente nada de programação, todos os projetos que montei até hoje foram adaptações de colegas que compartilham o conhecimento.

Seguem os códigos:

emissor

#include <VirtualWire.h> // carrega a biblioteca do rf

#include <IRremote.h> // carrega a biblioteca do controle remoto

 

IRsend irsend;  // declaração da "variavel" do controle remoto

char info[30];

int index = 0;

char inChar;  // declaração das variaveis que irão carregar a "string"

 

int lamp4= 13;//LED da porta 13

int lamp3= 12;//LED da porta 12

int lamp2= 44;//LED da porta 44

 

void setup() {

pinMode(6,OUTPUT); //saida de envio do rf

 

pinMode(lamp4,OUTPUT); // config o estado da porta como saida

pinMode(lamp3,OUTPUT); // config o estado da porta como saida

pinMode(lamp2,OUTPUT); // config o estado da porta como saida

 

Serial.begin(9600);

vw_set_tx_pin(6); // Pino para Transferir

vw_set_ptt_inverted(true);

vw_setup(2000); // Velociade de Transmissão

}

 

void loop() {

 

if (Serial.available() > 0) {

while (1) {

 

inChar = Serial.read(); // Guarda o Primeiro Caracter

info[index] = inChar; // Coloca o Caracter numa Array

index++;

delay(2);

 

if (Serial.available() <= 0) {

index = 0;

 

 

const char *msg = info;

vw_send((uint8_t *)msg, strlen(msg)); // Envia a Informação

vw_wait_tx();

 //  estes abaixo são os testes com leds que a central irá executar e o último "led6" é a String que

// aumenta o volume da TV e não funciona.

 

if(String(info) == "led4"){

        digitalWrite(lamp4,!digitalRead(lamp4));

        }

       

        if(String(info) == "led3"){

        digitalWrite(lamp3,!digitalRead(lamp3));

        }

       

         if(String(info) == "led2"){

        digitalWrite(lamp2,!digitalRead(lamp2));  // 

        }

 

        if(String(info) == "led6"){

     irsend.sendNEC(0x20DFC03F, 32);

        }

 

 

 

memset( &info, 0, sizeof(info) );

break;

}

}}}

ReCEPTOR

 

#include <VirtualWire.h>

int lamp1=8;//LED da porta 13

int lamp2=6;//LED da porta 13

int lamp5=4;//LED da porta 13

 

 

char info[30];

 

void setup() {

pinMode(7,INPUT);

pinMode(lamp1,OUTPUT);

pinMode(lamp2,OUTPUT);

pinMode(lamp5,OUTPUT);

 

 

Serial.begin(9600);

vw_set_rx_pin(7); // Pino de Recepção

vw_set_ptt_inverted(true);

vw_setup(2000);

vw_rx_start();

}

 

void loop() {

uint8_t buf[VW_MAX_MESSAGE_LEN];

uint8_t buflen = VW_MAX_MESSAGE_LEN;

 

if (vw_get_message(buf, &buflen)) {

 

int i;

for (i = 0; i < buflen; i++) { // Guarda a Informação Recebida num Array

info[i]=buf[i];

}

if(String(info) == "led1"){

digitalWrite(lamp1,!digitalRead(lamp1));

}

 

if(String(info) == "led5"){

digitalWrite(lamp5,!digitalRead(lamp5));

}

 

 

 

 

Serial.println(String(info)); // Escreve no SerialMonitor a Informação Recebida

 

memset( &info, 0, sizeof(info) );

}}

Fontes:

Arduino Livre

Serial Link

http://mais-digital.blogspot.com.br/2012/11/arduino-comunicacao-via...

Exibições: 593

Responder esta

Respostas a este tópico

Sei bem pouco de programação também mais acho que falta algo no começo do loop alguma coisa a respeito de iniciar as leituras hexadecimais do emissor ir aconselho tbm testar com outro emissor ir ou tentar com outro aparelho com um código hexadecimal direfente.. 

Também estou desenvolvento um sistema de automação só que quero usar minha rede Wireless de casa e smartphone estou desenvolvente um aplicativo para celular android esta quase pronto estou tendo dificuldade de fazer o aplicativo ler os estados anteriores depois de fechar e abrir o aplicativo.. mais vou ver se consigo se vc já fez e poder me ajudar tbm sou meio iniciante tbm.. vlw

Tenta encostar o led no local onde está o receptor da tv para testar. Algumas vezes está tudo certinho mas o sinal não chega. Também pode ser devido a claridade, uma vez tive problema porque o led emissor estava perto de uma lâmpada, quando a lâmpada estava desligada a tv conseguia receber o sinal.

São só algumas dicas sobre dificuldades que eu já tive. Não analisei teu código.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço