collapse

* Posts Recentes

MKR Vidor4000 por josecarlos
[Ontem às 21:05]


PWM com ventoinha por edeweld
[Ontem às 20:42]


Frequência máxima de pwm com controlo de duty cycle de 0 a 100% por Njay
[Ontem às 19:59]


NiCd por NiMH? por jm_araujo
[Ontem às 11:46]


LusoRobótica - Website - Estado actual por TigPT
[19 de Maio de 2018, 22:34]


Concurso Robô Bombeiro 2018 por Tesla
[18 de Maio de 2018, 11:01]


Trafo Amplificador Behrimger ? por jm_araujo
[16 de Maio de 2018, 18:55]


Alfândega / Taxas Alfandegárias / Portes por Njay
[16 de Maio de 2018, 01:26]


Compra Colectiva à Farnell N3-2018 (Maio 2018) por Hugu
[15 de Maio de 2018, 15:34]


Robô BBC micro:bit controlado com gestos no telemóvel Android por Tayeb
[14 de Maio de 2018, 19:41]

Autor Tópico: Arduino Ethernet mandando informações para fora  (Lida 2691 vezes)

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

Offline dansku

  • Mini Robot
  • *
  • Mensagens: 7
Arduino Ethernet mandando informações para fora
« em: 06 de Setembro de 2009, 00:29 »
Olá, estou programando com o arduino + ethernet shield,

conseguir dar um GET em um arquivo em .php que estava rodando no meu computador,
porém gostaria de conseguir rodar o mesmo código em meu servidor web. Porém parece que o arduino não consegue se conectar com o servidor, mesmo ele tendo ip estático. http://pastebin.com/m441e38e6

ja tentei configurar o IP do arduino para ser apenas um IP de rede local, e também da internet.

Alguem pode ajudar-me?

Obrigado

Offline Rui

  • Mini Robot
  • *
  • Mensagens: 24
Re:Arduino Ethernet mandando informações para fora
« Responder #1 em: 06 de Setembro de 2009, 06:56 »
O problema é que estás a utilizar o protocolo HTTP 1.0 que não suporta o campo Host em cada requisição.
Este é um dos grandes problemas do 1.0 e hoje em dia practicamente todos os servidores e browsers usam 1.1.

Normalmente as empresas de alojamento têm vários domínios no mesmo endereço IP (não vou aprofundar muito, mas depois se quiseres explico-te melhor), por exemplo 208.75.63.32: dominio1.com, dominio2.us, dominio3.pt. Mas todos eles têm exactamente o mesmo IP portanto se o servidor não recebe uma indicação de qual deles é procura na pasta por defeito para aquele endereço IP.
O HTTP 1.1 resolveu este problema adicionando um campo às requisições chamado Host. Neste campo deve ser indicado o domínio (RFC2616), portanto se eu quisesse o conteúdo de http://dominio3.pt/minhapagina.html o pacote que enviaria para o servidor (208.75.63.32) seria algo do género:
Código: [Seleccione]
GET /minhapagina.html HTTP/1.1
Host: dominio3.pt
User-Agent: browser
(linha vazia)

Resumindo e concluindo substitui a linha 139 por:
Código: [Seleccione]
plen= es.ES_fill_tcp_data_p(buf, plen, PSTR ( " HTTP/1.1\r\n" ));
plen= es.ES_fill_tcp_data_p(buf, plen, PSTR ( "Host: meudominio.tld\r\n" ));

Isto deve resolver os teus problemas.

Cumprimentos,
Rui
« Última modificação: 06 de Setembro de 2009, 06:59 por Rui »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.298
    • Tiago Rodrigues
Re:Arduino Ethernet mandando informações para fora
« Responder #2 em: 06 de Setembro de 2009, 07:41 »
Estás a definir o gateway no arduino?

Ele precisa de saber porque porta sair da tua rede local.

Código: [Seleccione]
(...)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
byte gateway[] = { 10, 0, 0, 1 };
byte subnet[] = { 255, 255, 0, 0 };

(...)
void setup()
{
  Ethernet.begin(mac, ip, gateway, subnet);
(...)
Terás que meter ip, gateway e mascara conforme a tua rede local, copia de um pc.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.739
Re:Arduino Ethernet mandando informações para fora
« Responder #3 em: 06 de Setembro de 2009, 15:18 »