Arduino Ethernet Shield не подключается к веб-серверу

У меня проблема с подключением моего Arduino Ethernet Shield к серверу, результат на последовательном мониторе всегда такой:

мой код ардуино

#include <Ethernet.h>           //library for ethernet functions
#include <SPI.h>
#include <Dns.h>
#include <Client.h>             //library for client functions
#include <DallasTemperature.h>  //library for temperature sensors

// Ethernet settings
byte mac[] = {0x09,0xA2,0xDA,0x00,0x01,0x26};  //Replace with your Ethernet shield MAC
byte ip[] = { 192,168,0,54};  //The Arduino device IP address
byte subnet[] = { 255,255,255,0};
byte gateway[] = { 192,168,0,1};
IPAddress server(192,168,0,53);                  // IP-adress of server arduino sends data to

EthernetClient client;

bool connected = false;                                

void setup(void) {                                     

    Serial.begin(9600);                                
    Serial.println("Initializing Ethernet.");
    delay(1000);
    Ethernet.begin(mac, ip , gateway , subnet);    

}

void loop(void) {                                      

    if(!connected)   {                                 
      Serial.println("Not connected");
      if (client.connect(server, 80)) {                
          connected = true;
          int temp =analogRead(A1);                    
          Serial.print("Temp is ");                              
          Serial.println(temp);
          Serial.println();
          Serial.println("Sending to Server: ");                 
          client.print("GET /formSubmit.php?t0=");            
          Serial.print("GET /formSubmit.php?t0=");            
          client.print(temp);
          Serial.print(temp);
          client.println(" HTTP/1.1");                  
          Serial.println(" HTTP/1.1");                  
          client.println("Host: http://localhost/PhpProject1/");    
          Serial.println("Host: http://localhost/PhpProject1/");    
          client.println("User-Agent: Arduino");        
          Serial.println("User-Agent: Arduino");        
          client.println("Accept: text/html");          
          Serial.println("Accept: text/html");          
          //client.println("Connection: close");        
          //Serial.println("Connection: close");        
          client.println();                             
          Serial.println();
          delay(10000);                                            
      }
      else{
        Serial.println("Cannot connect to Server");               
      }
    }  
    else {
      delay(1000);                                              
      while (client.connected() && client.available()) {        
        char c = client.read();                                 
        Serial.print(c);                                        
      }                                                         
      Serial.println();                                         
      client.stop();                                            
      connected = false;                                        
    }
}

сервер — это сервер Apache, работающий на ПК, IP-адрес сервера в коде — это IP-адрес ПК. В целях тестирования я работаю в своей домашней сети, там нет ни прокси, ни брандмауэра, и я также отключил антивирус и брандмауэр на своем компьютере.

результат в последовательном мониторе всегда:

Not connected
Cannot connect to Server

Есть предположения??


person Ahmad    schedule 29.10.2012    source источник
comment
Сервер работает? Что возвращает telnet 192.168.0.53 80? Вы подключаетесь через прокси или брандмауэр (не похоже, но надо спросить)? Возможно, попробуйте более простой вариант Ethernet.begin( mac , ip ), чтобы исключить проблемы со шлюзом.   -  person Anders R. Bystrup    schedule 29.10.2012
comment
сервер - это сервер Apache, работающий на ПК, IP-адрес сервера - это IP-адрес ПК. telnet 192.168.0.53 80 работает успешно. В целях тестирования я работаю в своей домашней сети, там нет ни прокси, ни брандмауэра, и я также отключил антивирус и брандмауэр на своем компьютере.   -  person Ahmad    schedule 29.10.2012


Ответы (2)


Заработало, проблема была в Ethernet.begin(mac, ip , gateway , subnet), я убрал эту строчку и настроил Ethernet Shield с помощью DHCP, Ethernet.begin(mac)

person Ahmad    schedule 06.04.2013
comment
У меня такая же проблема, но DHCP не решил мою проблему. Я получаю назначенный IP-адрес, но при подключении я получаю сообщение «Не подключен, не могу/подключиться к серверу». Есть ли другие предложения? - person Ben Quan; 27.01.2014

Вы проверили правильность MAC-адреса?

Если это все еще не работает, попробуйте использовать

Client client(server, 80);

вместо

EthernetClient client

И изменить

if (client.connect(server, 80)) {  

to

if (client.connect()) {  

Надеюсь это поможет

person Niek    schedule 01.11.2012