collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: ethernetshild  (Lida 2978 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.