Pages: [1] 2   Go Down
Author Topic: SHIELD - LENDO URL  (Read 1072 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prezados, antes de colocar este post andei pesquisando no fórum, porém não encontrei um tópico que me ajudasse realmente. A situação é a seguinte: Estou desenvolvendo um projeto para a faculdade, nesse primeiro momento preciso enviar uma informação do sistema WEB para o arduino. O sistema que estou desenvolvendo é em Grails, como posso pegar uma informação? através da URL com?

Percei que o arduino quando acesso o sistema ele faz o papel de navegador, ler os dados HTML. Porém preciso passar para o arduino uma informação, tipo 0 ou 1.

Desde já agradeço.

Emerson Alencar
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3115
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se fores à pasta de exemplos do Arduino tens um exemplo para colocá-lo como cliente (ou seja como um browser) e um exemplo de como colocá-lo como servidor (acedes ao Arduino através do teu browser no computador).

Concordo que a pesquisa do fórum é má... mas uma pesquisa na net devolve resultados suficientes sobre como fazê-lo. Olha aqui:

http://sheepdogguides.com/arduino/art5simpsrv.htm
http://bildr.org/2011/06/arduino-ethernet-pin-control/

Não percebi o que era o Grails... ou o que é a linguagem de programacão groovy e assumo que JVM seja Java Virtual Machine. Nesse campo, infelizmente, não te consigo ajudar.

Experimenta estes exemplos que meti em cima e vê se já serve para o que pretendes. Experimenta primeiro com um browser e/out tenta aceder a um servidor externo e depois interliga com o tal Grails.
Se tiveres mais dúvidas, coloca aqui.

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prezado bubulindo, muito obrigado pela resposta. A minha situação é a seguinte, no exemplo 2 que você me sugeriu, o próprio arduino é a página que tem os valores a serem passados. Porém eu preciso que o servidor seja um outro computador, um outro endereço.

Atenciosamente,

Emerson Alencar
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3115
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Então, precisas de usar o exemple WebClient.

Tem lá tudo o que necessitas para ligares o arduino a um servidor.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

É isso mesmo, preciso me conectar a um servidor. O problema é que eu preciso pegar uma informação desse servidor, tipo "On" ou "Off", para ligar ou desligar o LED.

Os exemplos que vejo a página HTML está no próprio Arduino, mas eu quero que o arduino acesse uma URL e pegue essa informação. Entende? Não sei como fazer isso.
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3115
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se calhar o meu
o exemplo WebClient.
é diferente do teu... no meu caso, eu ligo-me a um dos servidores do google, peco para fazer uma pesquisa por Arduino e devolvo os resultados para o ecrã.

Se não tens o exemplo, fica aqui:

Code:
/*
  Web client
 
 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield.
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 
 created 18 Dec 2009
 modified 9 Apr 2012
 by David A. Mellis
 
 */

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(173,194,33,104); // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}

Agora, se trocares o servidor pelo que estás a usar agora... e a página pela página que pretendes acessar... consegues algum resultado. Depois apenas tens de ler e fazer parsing da string.

Estás a ver o que eu estou a dizer?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tenho duas dúvidas:

1) Meu arduino não está numa rede com DHCP, como faço para colocar um IP estático nele?

2) Após ler a página como colocar a informação dentro de uma variável?
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3115
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

1: http://arduino.cc/en/Reference/EthernetClient

2: Que é que a página vai enviar? Já fizeste string parsing nalguma linguagem?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prezado bubulindo,

Pronto Já coloquei o IP Fixo no arduino e estou conseguindo pingar nele.

Poderia me dá um exemplo de como fazer string parsing??

Emerson Alencar
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3115
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hmmm...

Estou a ver que programação não é o teu forte, então em vez de fazer um exemplo à sorte que em nada te irá ajudar, que tal se meteres aqui o que a página web vai devolver para o Arduino fazer string parsing e eu coloco um código que o faça para experimentares?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prezado Bubulindo,

Na verdade sou estudante, e estudo programação a pouco tempo, alguns termos ainda não novos para mim.

Bom estou anexando uma tela. Tem um botão ligar e outro desligar. Quero quando apertar o ligar ele envie ao arduino uma informação tipo: "ON" e o Arduino recebendo essa informação ele irá ligar o led. Para ligar o led, essa parte eu sei fazer, o problema é como pegar esse ON e colocar em uma variável. Não estou fazendo o sistema em PHP, estou fazendo em GRAIL (groovy=java).

Porém todos os exemplos que vejo, a página em HTML está dentro do arduino, mas o que eu quero é que um site externo possa passar essa informação ao arduino.

Já consegui que o arduino leia a minha url, só que a palavra "ON" aparece lida pelo arduino, mas como armazena-la numa variável??

Desde já muito obrigado!


* Front-end.JPG (46.3 KB, 1070x568 - viewed 14 times.)
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3115
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

O Arduino vai aceder a um servidor... e esse servidor vai enviar algo para o Arduino.

Isto pode ser simulado com um browser e é isto que eu queria ver. Texto...

Já tens essa parte a funcionar?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

SIm...

O arduino já consegue ler .. como um Browser ....

Já tenho isso ..
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Este é meu código do Arduino que ler minha página:
#include <SPI.h>
#include <Ethernet.h>
 
byte mac[] = {  0x00, 0xAB, 0xCB, 0xCD, 0xDE, 0x02 };
IPAddress ip(189,80,213,213);
//IPAddress server(173,194,70,103);
 IPAddress server(189,80,213,210);
EthernetClient client;
 
void connect(){
   if (client.connect(server, 80)) {
       Serial.print("Make a HTTP request ... ");
 
       //client.println("GET /search?q=arduino HTTP/1.0");
      client.println("GET /projeto/ControleLed/receberEstadoAtual/");
         
           //client.println("HOST: 189.80.213.210");
       client.println();
 
       Serial.println("okk");
 
     }
     else {
       // kf you didn't get a connection to the server:
       Serial.println("connection failed");
   }

}
     
 
void setup() {
   Serial.begin(9600); 
 
   Serial.print("Setup LAN ... ");
   // give the Ethernet shield a second to initialize:
   delay(1000);
   Ethernet.begin(mac, ip);
   Serial.println("oks");
   delay(1000);
 
 
   connect();


}
 
void loop(){
 
if (client.available()) {
    char c = client.read();
    Serial.print(c);
     
   
  }
 
  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
 
    delay(3000);
 
    connect();
  }   
 
}
Logged

'round the world...
Online Online
Faraday Member
**
Karma: 41
Posts: 3115
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E o que é que aparece no serial monitor quando corres este código?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Pages: [1] 2   Go Up
Jump to: