Ir ao conteúdo

Posts recomendados

  • Membro VIP
Postado

Porque ele estaria em outro cômodo. Ou por uma questão de automação ou acessibilidade.


Somente o(s) sensor(es) precisaria(m) apontar para os aparelhos receptores de IR. Creio que uns centímetros de fio não seriam problema. Ou até mesmo metro.

  • Curtir 1
Postado
agora, alexandre.mbm disse:

Porque ele estaria em outro cômodo. Ou por uma questão de automação ou acessibilidade.


Somente o(s) sensor(es) precisaria(m) apontar para os aparelhos receptores de IR. Creio que uns centímetros de fios não seriam problema. Ou até mesmo metro.

O infravermelho pra alcancar um metro tem que ser bom.. Essas coisas tendem a se dissipar com extrema facilidade... Mas ele pode fazer uma gambiarra colocando umas lentes convergentes e assim aumentando o alcance.

  • Curtir 1
Postado

@lucianolcoa

 

Nesse caso, precisa incrementar um pouco mais sua função e colocar um Ajax pra pegar o  retorno, seria mais ou menos assim:

 

function rl_1() {
$.ajax({
      url:\"http://192.168.0.35/btn1\",//endereço para enviar a requisição
      dataType: "html",//define o tipo de retorno. se é html, json ou outro qualquer 
      method: "GET",//define o tipo de envio se é por GET ou POST
      data: {'botao1':0}//dados que serão enviados para o ESP
      }).done(function(retorno){ //função de retorno. chama um alert com a mensagem do servidor
      	document.getElementById("btn-ligar").value= retorno;
      });
 }

 

  • Membro VIP
Postado

@ViniciusKruz , por favor, fale-me um pouco mais de sua solução sem IR. Se possível, dê-nos alguns links. Estou de saída agora, mas prometo ler com a devida atenção quando chegar. O assunto muito me interessa, mas eu não gostaria de ter de alterar os aparelhos.

 

Em tempo: alguns ar-condicionados Midea vem com suporte a kit wifi...

 

 

Postado
3 minutos atrás, alexandre.mbm disse:

eu não gostaria de ter de alterar os aparelhos

 

A vantagem de alterar o aparelho é que ficaria tudo embutido, não tem muito segredo não, o maior inconveniente seria o fato de tirar a originalidade mesmo. Na verdade não tenho nenhum link que fale a respeito disso, essa ideia me veio à mente agora.

 

O princípio básico é de que no LED receptor de IR ao receber um feixe de luz ele deixa conduzir em seus terminais uma pequena carga, logo se "inserirmos" esta pequena carga, através de um microcontrolador qualquer, seria o mesmo efeito causado pelo LED receptor.

 

adicionado 2 minutos depois
9 minutos atrás, alexandre.mbm disse:

Em tempo: alguns ar-condicionados Midea vem com suporte a kit wifi...

 

Muito interessante!!!

adicionado 7 minutos depois
13 minutos atrás, lucianolcoa disse:

@ViniciusKruz Uma ultima coisa: vi que na requisiçao ajax voce coloca um ip fixo. Teria como nos codigos pro node voce definir um ip fixo pra ele? Por que isso eu também não sei fazer,rs.

 

como seu ESP está trabalhando?

 

Você conecta na rede dele?

Ou conecta ele na rede da sua casa e ele pega um IP por DHCP(automatico)?

 

  • Curtir 1
  • Membro VIP
Postado
1 hora atrás, ViniciusKruz disse:

O princípio básico é de que no LED receptor de IR ao receber um feixe de luz ele deixa conduzir em seus terminais uma pequena carga, logo se "inserirmos" esta pequena carga, através de um microcontrolador qualquer, seria o mesmo efeito causado pelo LED receptor.

 

Andei estudando como é feita a decodificação na unha. Não é tão simples. Cada código é como identificar um padrão PWM finito. Suspeito de que o que é enviado a um emissor IR é de alguma forma diferente daquilo que um sensor IR entregaria ao INPUT do microcontrolador. De qualquer maneira, para seguir nessa linha seria necessário ter à disposição um osciloscópio. Talvez pudesse ser daquele com Arduino.

 

Outra coisa que se faz é metamorfosear um controle remoto. Aproveita-se a estrutura dele, com os códigos gravados em chip, e também o alcance do LED emissor na configuração original. Mas eu entendo que isso não resolveria o problema de ser necessário ter algo apontando para o receptor IR do aparelho.

Postado

@alexandre.mbm  Cada um tem um padrão de frequência mesmo, mas se não me engano, nas bibliotecas do Arduino tem alguma coisa a respeito, que fazem com que ele vire um controle remoto, o que muda é somente que esse pseudo controle remoto(ESP) não vai injetar sua frequência em um LED transmissor de IR e sim, diretamente na entrada do LED receptor de IR. Nisso não tem nada demais, a frequência é somente uma onda quadrada com 0 e 1, se esta frequência vai ser transferida por um feixe de luz ou um fio, não faz muita diferença, claro que isso é só teoria, na prática a coisa muda bastante, mas... é uma ideia que eu experimentaria.

adicionado 1 minuto depois

Consegui até um exemplo aqui: 

 

http://www.arduinoecia.com.br/2013/09/controle-remoto-ir-no-arduino.html

 

 

Postado

Vou ver esse exemplo em casa! Eu até achei um exemplo com o ESP. Funcionar funciona, eu mesmo já testei no ar do meu quarto, mas pelos códigos HEX não funciona para Ar Condicionado, apenas o RAW.

  • Membro VIP
Postado

@ViniciusKruz , não é simplesmente uma "frequência". É um número codificado em onda quadrada. Na verdade, um protocolo inteiro. Como uma comunicação serial. A biblioteca IRemote decodifica e codifica somente alguns desses protocolos. Por isso não há sempre um hexadecimal utilizável, @Papibakigrafo .

 

Eu compreendo o seu raciocínio, @ViniciusKruz . Mas, por exemplo, qual será a faixa de tensão para substituirmos o sensor receptor de IR? As ondas quadradas teriam de estar nela. Será simplesmente 5 V? E se não for, como ajustar mantendo a mensagem?

 

Outra questão: nossa injeção de sinais poderia conviver com o sensor existente?

Postado
9 minutos atrás, alexandre.mbm disse:

Como uma comunicação serial.

Aqui você disse tudo!! Comunicação serial pode ser feita por IR, WiFi, Fibra... e também por fio, o que muda é apenas a forma de fazer o "casamento de impedância" do transmissor para o receptor, aí entra sua dúvida sobre os 5v, isso precisa ser avaliado de aparelho pra aparelho, mas creio que seja na casa de alguns Mv. Também, usando um osciloscópio é possível detectar a tensão que o receptor de IR dispara no circuito.

 

14 minutos atrás, alexandre.mbm disse:

Outra questão: nossa injeção de sinais poderia conviver com o sensor existente?

 

Perfeitamente. O que pode acontecer é que se um estiver transmitindo e o outro também, é provável que o aparelho não consiga decodificar o comando. Fora isso, deve ir tranquilo.

adicionado 1 minuto depois
16 minutos atrás, lucianolcoa disse:

ele pega umk ip por dhcp,automatico

 

IPAddress ip(192,168,0,35); 
IPAddress gateway(192,168,0,1); 
IPAddress subnet(255,255,255,0); 


setup(){
	
	WiFi.mode(WIFI_STA);//modo estação
  	WiFi.config(ip, gateway, subnet);


}

 

  • Curtir 3
Postado

@lucianolcoa

Muito bacana!!! Parabéns pelo esforço. Tem vezes que eu passo uma semana inteira ou até mais pra resolver uma besteirinha, mas quando vejo o resultado me empolgo muito mais. Ontem mesmo passei o dia inteirinho, até à noite pra resolver uma coisa bem simples, mas consegui e valeu a pena. É assim que se aprende de verdade.

  • Curtir 2
Postado

@Papibakigrafo  Preciso da sua ajuda numa coisa. Lembro que voce me disse que precisou fazer 2 paginas no seu codigo postado a um tempo atrás. MInha duvida eah, como voce atribuiu a segunda pagina a tag /rele?

tentei dar uma olhada no seu codigo mas não entendi onde voce define a segunda pagina:

void handleRoot()
{
  ligado1 = false;
  // HTML da pagina principal
  String html = "<html><head><title>On Home</title>";
  html += "<meta http-equiv='Content-Type' content='charset=utf-8'>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no'>";
  html += "<meta name='apple-mobile-web-app-status-bar-style' content='black'>";
  html += "<meta name='apple-mobile-web-app-capable' content='yes' />";
  html += "<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'>";
  html += "<link rel='icon' href='http://www.blocodochapolin.com.br/arduino/img/icone.png' type='image/x-icon' />";
  html += "<link rel='apple-touch-icon-precomposed' href='http://www.blocodochapolin.com.br/arduino/img/icone.png'>";
  html += "<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script>";
  html += "<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'></script>";
  html += "</head>";
  html += "<style>.navbar-header { width:100%;  height:50px; } .navbar-brand{ width:100%; }</style>";
  html += "<body>";
  html += "<nav class='navbar navbar-inverse text-center' role='navigation'><div class='navbar-header'><div class='navbar-brand'>On House</div></div></nav>";
  html += "<div class='container' align='center'>";
  html += "<hr>";
  html += "<div class='panel panel-default'>";
  html += "<div class='panel-heading text-center'><b>Sala</b></div>";
  
  html += "<div class='btn-group btn-group-justified'>";
  html += "<a href='/rele1?estado=on' class='btn btn-success'>Ligar</a>";
  html += "<a href='/rele1?estado=off' class='btn btn-danger'>Desligar</b></a>";
  html += "</div>";
  html += "<br>";
  html += "<div class='panel-heading text-center'><b>quarto</b></div>";
   html += "<div class='btn-group btn-group-justified'>";
  html += "<a href='/rele1?estado=oi' class='btn btn-success'>liga2</a>";
  html += "<a href='/rele1?estado=ou' class='btn btn-danger'>Desliga2</a>";
   html += "</div>";
  html += "</div>";
  html += "</div>"; html += "<div id='estado1' style='display:none'>";
  html += (ligado1);
  html += (ligado2);
  html += "</div>";
  html += "</div></div>";
  //Script JS para não abrir uma nova página Bootstrap
  html += "<script language='JavaScript' type='text/javascript'>";
  html += "var a=document.getElementsByTagName('a');";
  html += "for(var i=0;i<a.length;i++)";
  html += "{";
  html += "a[i].onclick=function()";
  html += "{";
  html += "window.location=this.getAttribute('href');";
  html += "return false";
  html += "}";
  html += "}";
  html += "</script>";
  //Fim da instrução
  html += "</body></html>";
  // Enviando HTML para o servidor
  server.send(200, "text/html", html);
}

void rele1() {
  String state = server.arg("estado");
  if (state == "on") {
    digitalWrite(rele, HIGH);
    ligado1 = true;
  }
  else if (state == "off") {
    digitalWrite(rele, LOW);
    ligado1 = false;
  }
   if (state == "oi") {
    digitalWrite(rele2, HIGH);
    ligado2 = true;
  }
  else if (state == "ou") {
    digitalWrite(rele2, LOW);
    ligado2 = false;
  }

  // HTML da pagina "rele1"
  String html = "<html><head><title>On Home</title>";
  html += "<meta http-equiv='Content-Type' content='charset=utf-8'>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no'>";
  html += "<meta name='apple-mobile-web-app-status-bar-style' content='black'>";
  html += "<meta name='apple-mobile-web-app-capable' content='yes' />";
  html += "<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'>";
  html += "<link rel='icon' href='http://www.blocodochapolin.com.br/arduino/img/icone.png' type='image/x-icon' />";
  html += "<link rel='apple-touch-icon-precomposed' href='http://www.blocodochapolin.com.br/arduino/img/icone.png'>";
  html += "<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script>";
  html += "<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'></script>";
  html += "</head>";
  html += "<style>.navbar-header { width:100%;  height:50px; } .navbar-brand{ width:100%; }</style>";
  html += "<body>";
  html += "<nav class='navbar navbar-inverse text-center' role='navigation'><div class='navbar-header'><div class='navbar-brand'>On House</div></div></nav>";
  html += "<div class='container' align='center'>";
  html += "<hr>";
  html += "<div class='panel panel-default'>";
  html += "<div class='panel-heading text-center'><b>Sala</b></div>";
  
  html += "<div class='btn-group btn-group-justified'>";
  html += "<a href='/rele1?estado=on' class='btn btn-success'>Ligar</a>";
  html += "<a href='/rele1?estado=off' class='btn btn-danger'>Desligar</b></a>";
   html += "</div>";
  html += "<br>";
  html += "<div class='panel-heading text-center'><b>quarto</b></div>";
   html += "<div class='btn-group btn-group-justified'>";
  html += "<a href='/rele1?estado=oi' class='btn btn-success'>liga2</a>";
  html += "<a href='/rele1?estado=ou' class='btn btn-danger'>Desliga2</a>";
   html += "</div>";
  html += "</div>";
  html += "</div>";
  html += "<div id='estado1' style='display:none'>";
  html += (ligado1);
  html += (ligado2);
  html += "</div>";
  html += "</div></div>";
  //Script JS para não abrir uma nova página Bootstrap
  html += "<script language='JavaScript' type='text/javascript'>";
  html += "var a=document.getElementsByTagName('a');";
  html += "for(var i=0;i<a.length;i++)";
  html += "{";
  html += "a[i].onclick=function()";
  html += "{";
  html += "window.location=this.getAttribute('href');";
  html += "return false";
  html += "}";
  html += "}";
  html += "</script>";
  //Fim da instrução
  html += "</body></html>";
  // Enviando HTML para o servidor
  server.send(200, "text/html", html);
}

 

Postado

@lucianolcoa o seu código, você usa o ESP8266Wifi.h. O meu código (que adaptei do @ViniciusKruz e de outro blog que encontrei), usei o ESP8266Webserver.h

 

O estilo de exibir a página são diferentes, como você pode ver. Um é pelo client.println, o outro é pela String html = e html += , e no final, ele dá o comando server.send(200, "text/html", html);

Quer dizer, ele gera toda uma string e no final, exibe o código todo de uma vez. O próprio Vinicius testou e verificou que o código roda mais rápido assim.

 

Então, respondendo a sua pergunta: nesse código que estava (já modifiquei ele bastante kkk), eu acabei criando mais uma página para o rele2. Mas do jeito que você fez ai, não era pra estar funcionando?

Postado

@Papibakigrafo Esta ta funcionando susssa, só que eu quero configurar a id e a senha do wifi sem recompilar. E a biblioteca que eu uso aparentemente não me dá essa possibilidade.... Então to tentando entender a biblioteca de vocês. Só to engasgando nesse lance de paginas.

 

entendi que o server.arg vai buscar a string e ver se o parametro mudou e pas, e se mudou aciona o bendito do comando, diferente da que eu uso que usa uma string que percorre s stringclient... Só to engasgado no lance das paginas mesmo.

  • Curtir 1
Postado

@Papibakigrafo Eu lih esse blog, li ate umas meia hora atras, kkkkkkkkkk. Mas tipo, me permita explicar, eu entendi como na funçao handleRoot() voce chamou a pagina rele1 pelo argumento a href... O que eu engasguei foi como voce atribuiu a segunda pagina da funçao rele1 como rele?

Postado
2 minutos atrás, lucianolcoa disse:

@Papibakigrafo Eu lih esse blog, li ate umas meia hora atras, kkkkkkkkkk. Mas tipo, me permita explicar, eu entendi como na funçao handleRoot() voce chamou a pagina rele1 pelo argumento a href... O que eu engasguei foi como voce atribuiu a segunda pagina da funçao rele1 como rele?

 

Lá no  void setup():

  // Atribuindo urls para funções
  // Quando não especificado método, uma função trata todos
  server.on("/", handleRoot);

  // Chamada do método GET
  server.on("/rele1", HTTP_GET, rele1);

/rele1 é a página

rele1 -> void rele1 ();

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...