Boa tarde pessoal! Sou novo com o arduino e ainda estou aprendendo a usá-lo, recentemente fiz um projeto de automação com arduino, mas preciso modificá-lo.

 Atualmente ele serve apenas para ligar e desligar lâmpadas pela Internet. Fiz um aplicativo para celular em que posso acionar as cargas, e também no mesmo aplicativo é  mostrado no botão o status da saída digital do arduino (on/off), desse modo de qualquer localização desde que com acesso à web consigo visualizar se a minha lâmpada está ligada ou desligada... até aí tudo OK, o problema é que eu não quis me desfazer dos interruptores físicos, então quando eu aciono a lâmpada pelo celular, eu consigo visualizar no botão o status “on” mas se eu decido acionar o interruptor físico a lâmpada desliga e o meu botão virtual continua apresentar o estado “on”... obviamente ele não muda.

O procedimento atual e simples: a saída digital do meu arduino aciona um relé com um contato comum, outro NA, e outro NF, então fiz uma ligação paralela (three way) com outro interruptor, dessa forma tenho o controle tanto virtual quanto físico da carga.

Já sei que vou ter que substituir meus interruptores por pulsadores e então criar entradas digitais no meu novo código, o problema é que não estou conseguindo criar um código que “setem” as minhas saídas tanto pelas entradas digitais quanto pelo botão virtual.

Também gostaria de ver como configurar entradas digitais para leitura de sensores (sensor de nível por exemplo) pois gostaria de colocar alguns sensores de nível em uma caixa d’água e assim monitorar via internet o nível de água no reservatório... a minha ideia é fazer o desenho de uma caixa d’água, e nesse desenho o nível de água sobe ou desce conforme a atuação dos sensores no reservatório...

Alguém sabe como devo fazer?

Coloquei também as imagens da placa que fiz e do aplicativo pra vocês terem uma ideia de como está...

Abaixo está um exemplo do código que o arduino está usando atualmente está com duas saídas e duas entradas para não ficar muito extenso:

As saídas digitais estão definidas como “Led”.

 

#include <SPI.h>

#include <String.h>

#include <Ethernet.h>

 

 

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 };

byte ip[] = { 192, 168, 2, 2  };

EthernetServer server(8081);

 

#define Led1  1

#define Led2  2

 

#define BI14 14

#define BI15 15

 

 

String readString = String(30);

 

String statusLed;

 

void setup() {

  Ethernet.begin(mac, ip);

  pinMode(Led1, OUTPUT);

  pinMode(Led2, OUTPUT);

 

 

  pinMode(BI14,INPUT_PULLUP);

  pinMode(BI15,INPUT_PULLUP);

 

 

digitalWrite(Led1,LOW);

digitalWrite(Led2,LOW);

 

}

 

void loop() {

  EthernetClient client = server.available();

 

  if(client)

  {

    while(client.connected())

    {

      if(client.available())

      {

      char c = client.read();

 

      if(readString.length() < 30) {

        readString += (c);

      }

 

      if(c == '\n')

 

        {

        if(readString.indexOf("led1") > 0) {

          digitalWrite(Led1, !digitalRead(Led1));

 

        }

 

        if(readString.indexOf("led2") > 0) {

          digitalWrite(Led2, !digitalRead(Led2));

        }

      

        // cabeçalho http padrão

        client.println("HTTP/1.1 200 OK");

        client.println("Content-Type: text/html");

        client.println();

 

        client.println("<!doctype html>");

        client.println("<html>");

        client.println("<head>");

        client.println("<title>My home</title>");

        client.println("<meta name=\"viewport\" content=\"width=320\">");

        client.println("<meta name=\"viewport\" content=\"width=device-width\">");

        client.println("<meta charset=\"utf-8\">");

        client.println("<meta name=\"viewport\" content=\"initial-scale=1.0, user-scalable=no\">");

        client.println("</head>");

        client.println("<body>");

        client.println("<center>");

 

        client.println("<font size=\"5\" face=\"verdana\" color=\"green\">Cleber</font>");

        client.println("<font size=\"3\" face=\"verdana\" color=\"red\">  </font>");

        client.println("<font size=\"5\" face=\"verdana\" color=\"blue\">James</font><br />");

       

        if(digitalRead(Led1)) {

          statusLed = "Ligado";

        } else {

          statusLed = "Desligado";

        }

        client.println("<form action=\"led1\" method=\"get\">");

        client.println("<button type=submit style=\"width:200px;\">Alarme - "+statusLed+"</button> ");

        client.println("</form> <br />");

       

        if(digitalRead(Led2)) {

          statusLed = "Ligada";

        } else {

          statusLed = "Desligada";

        }

        client.println("<form action=\"led2\" method=\"get\">");

        client.println("<button type=submit style=\"width:200px;\">Sala - "+statusLed+"</button> ");

        client.println("</form> <br />");

       

        client.println("<center>");

        client.println("</body>");

        client.println("</html>");

       

        readString = "";

 

        client.stop();

      }

    }

  }

}

}

 

Exibições: 249

Anexos

Responder esta

Respostas a este tópico

Olá Kleber!

Já vi alguns projetos que usam um sensor LDR (luminosidade) para saber o real estado da lâmpada, independentemente como ela foi acionada. Outros usam um sensor de corrente para isso.

Em todos os casos, a ligação com a lâmpada é feita em paralelo.

Nesse ponto, seguem alguns links que podem te ajudar:

http://labdegaragem.com/profiles/blogs/tutorial-automacao-sem-fio-l...

http://labdegaragem.com/forum/topics/ajuda-pagina-web-controle-de-luz?

http://labdegaragem.com/forum/topics/duvida-liga-o-de-rel-a-lampada...

Obrigado pelas dicas, achei interessante a ideia de usar o LDR... parece ser mais viável, pois com os botoes pulsadores se o arduino travar ou ago semelhante fico sem iluminação... 

Oi KJ, boa tarde.

Recomendo ler o tópico:

http://labdegaragem.com/forum/topics/sugest-o-de-como-postar,

principalmente na parte referente a não postar códigos na área de texto.

Rui

Bom dia! valeu pelas dicas!

Desculpa, é que sou novo aqui no fórum....

mas o próximo vou fazer melhor!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço