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