collapse

* Posts Recentes

Diferenças entre potenciometro e reostato por edeweld
[Hoje às 14:13]


Board com dsPIC por beirao
[19 de Junho de 2018, 08:42]


otto robot por josecarlos
[19 de Junho de 2018, 07:28]


Ligar bomba de água 400W a inversor por senso
[18 de Junho de 2018, 19:16]


VS-Solar Challenge 2018 por edeweld
[18 de Junho de 2018, 16:19]


NiCd - Lipo por almamater
[18 de Junho de 2018, 09:51]


Alfândega / Taxas Alfandegárias / Portes por SerraCabo
[17 de Junho de 2018, 17:26]


Vídeos: pontas prova osciloscópio e misturadora de som Tascam por SerraCabo
[17 de Junho de 2018, 15:34]


Bloco óptico (Laser-Sony) por senso
[15 de Junho de 2018, 09:29]


Plataforma Fritzing por LVirtual
[15 de Junho de 2018, 08:38]

Autor Tópico: ethernetshild  (Lida 1344 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline manuel_apr

  • Mini Robot
  • *
  • Mensagens: 27
ethernetshild
« em: 16 de Abril de 2013, 16:51 »
boas.

estou a desenvolver um projeto com o arduino e o ethernetshild e tenho algumas questões.

1ª.

no web server como é que posso ler o dado enviado por um botão na página web?

2ª.

como e que limpo tudo o que está na página web ao carregar no botão?

3ª.

é possível configurar o arduino para poder aceder ao web server em qualquer parte do mundo estando o arduino ligado em casa? se sim como faço isso?


obrigado

cumps

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: ethernetshild
« Responder #1 em: 16 de Abril de 2013, 20:13 »
Boas.

As duas primeiras preguntas estão relacionadas... A maneira mais simples de fazer a coisa é ter um webserver no Arduino,  eu já usei algo do género com uma versão modificada desta library:
https://github.com/sirleech/Webduino
Não sei se percebes alguma coisa de html ou da maneira como os dados são enviados, estou a assumit que não... Mas é algo do tipo carregas no botão, é enviado um request para o arduino com uns parametros que serão lidos pela library que linkei, e depois poderás avaliar esses parametros e tomar decisões para criar uma página nova. Isto responde à segunda pergunta, sempre que mandas alguma coisa para o arduino ele responde com uma página nova. Se não perebes nada de páginas web devias se calhar começar por ai, e experimentar fazer uma página com uma form para enviar dados, experimenta ver isto:
http://www.w3schools.com/tags/tag_form.asp

Quanto à terceira pergunta, vai depender do router. Tens de o configurar para fazer port forwarding para o arduino. Isto significa que sempre que vem uma ligação de fora para uma porta especifica (costuma usar-se a porta 80 pata http), essa ligação será enviada para o IP que o arduino está a usar.

Offline manuel_apr

  • Mini Robot
  • *
  • Mensagens: 27
Re: ethernetshild
« Responder #2 em: 16 de Abril de 2013, 20:33 »
eu perceber não percebo muito mas percebo alguma coisa.

deixo aqui o código que tenho para ser mais fácil:

if (c == '\n' && currentLineIsBlank)
        {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");

          client.println("<meta http-equiv=\"refresh\" content=\"2\">");

          for (int analogChannel = 0; analogChannel < 1; analogChannel++)
          {
            if (temp < (TempDesejada - 100) || temp > (TempDesejada + 100))
            {
              client.println("<font face='arial black' size='4' position='center' color='red'>Temperatura: ");
              client.print(temp);
              client.println(" C");
            }
            else
            {
              client.println("<font face='arial black' size='4' position='center' color='gren'>Temperatura: ");
              client.print(temp);
              client.println(" C");
            }
            client.println("<h1>");
           
            client.println("<input type='button' value='Ligar' onClick='window.location.href=window.location.href'>");
                       
            client.println("</html>");
                       
            client.println("
");   
            }
                     
            client.println("</html>");
                       
            break;
          }
          if (c == '\n')
          {
            currentLineIsBlank = true;
          }
          else if (c != '\r')
          { 
            currentLineIsBlank = false;
          }
        }
      }

o que eu queria era que sempre que se carrega no botão "Ligar" recebesse um valor do lado do arduino para fazer uma comparação e depois fazer uma ação. assim que se carregava em "Ligar" desaparecia o botão  "Ligar" e aparecia o "Desligar" e depois era a mesma coisa que no de "Ligar".

o meu router é um Pirelli igual a este:

http://www.coisas.com/Modem-ADSL-Router-Pirelli-DRG-A221G,name,212439667,auction_id,auction_details

dá para fazer a alteração?

cumps

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: ethernetshild
« Responder #3 em: 16 de Abril de 2013, 21:31 »
A parte aqui mais complicada é mesmo ter o arduino a receber os dados do browser... Precisamente para isso é que serve a library que eu linkei no post anterior. Aconselho a experimentares os exemplos dessa library para perceber melhor como é que essa interacção funciona, estar a fazer o código especialmente para isto iria dar bastante mais trabalho que usar a library.
Em relação ao html, tambem convem ter uma ideia sobre como é que as coisas funcionam, nomeadadamente os POST e/ou o GET, que sao duas maneiras de enviar os dados...

Em relação ao router, só mesmo vendo no manual se dá... Mas geralmente eles gostumam dar para fazer isso, nunca mexi num router que não tivesse essa funcionalidade... É procurar no manual por port forwarding (ou encaminhamento de portas, em portugues). Imaginando que o arduino está no endereço 192.168.1.10, o que se terá de fazer é um re-encaminhamento das ligações externas na porta 80 para o endereço 192.168.1.10, porta 80.

Offline manuel_apr

  • Mini Robot
  • *
  • Mensagens: 27
Re: ethernetshild
« Responder #4 em: 16 de Abril de 2013, 21:52 »
a livraria que me aconselhou é a que estou a utilizar (WebServer).

cumps

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: ethernetshild
« Responder #5 em: 16 de Abril de 2013, 22:55 »
Então, ainda melhor...
É so ver o exemplo Web_buzzer, já mostra lá como é que se colocam botões e depois como é que se lem os valores quando se clica.