W5100 не могу подключиться по IP

Алексей Н
Offline
Зарегистрирован: 02.01.2016

Приветствую всех.

Дошли руки до шилда W5100. Того самого, который со слотом для карты. Прочитал множество тем и здесь на форуме и вообще в интернете. Вроде тема изжевана вдоль и поперек, но все равно у меня не получается сходу запустить этот шилд.

Пытаюсь подключить этот шилд к Меге2560 (и то и другое китайские клоны, если это важно). Подключал и "бутербродом" и проводами к 50-52 пинам на Меге. Скетч использовал стандартный, добавив к нему только управление состояниями пинов 4, 10 и 53. В сериал выводится IP. Пытаюсь в браузере открыть этот IP и он не открывается.

На шилде горят диоды power, fulld, 100m и link. При попытке подключения моргают tx и rx. Вроде связь есть. А по IP ничего не доступно.

Подскажите, пожалуйста в очередной раз, где могут быть ошибки?

/*--------------------------------------------------------------
  Program:      eth_websrv_page

  Description:  Arduino web server that serves up a basic web
                page. Does not use the SD card.
  
  Hardware:     Arduino Uno and official Arduino Ethernet
                shield. Should work with other Arduinos and
                compatible Ethernet shields.
                
  Software:     Developed using Arduino 1.0.3 software
                Should be compatible with Arduino 1.0 +
  
  References:   - WebServer example by David A. Mellis and 
                  modified by Tom Igoe
                - Ethernet library documentation:
                  http://arduino.cc/en/Reference/Ethernet

  Date:         7 January 2013
 
  Author:       W.A. Smith, http://startingelectronics.org
--------------------------------------------------------------*/

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

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 20); // IP address, may need to change depending on network
EthernetServer server(80);  // create a server at port 80
IPAddress gateway(192, 168, 0, 1);
IPAddress mask(255, 255, 255, 0);
void setup()
{
    Serial.begin(9600);
    pinMode(4, OUTPUT);
    digitalWrite(4, HIGH);
    pinMode(53, OUTPUT);
    pinMode(10, OUTPUT);
    digitalWrite(10, LOW);


    Ethernet.begin(mac, ip, gateway, mask);
//    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop()
{
    EthernetClient client = server.available();  // try to get client

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            if (client.available()) {   // client data available to read
                char c = client.read(); // read 1 byte (character) from client
                // last line of client request is blank and ends with \n
                // respond to client only after last line received
                if (c == '\n' && currentLineIsBlank) {
                    // send a standard http response header
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println("Connection: close");
                    client.println();
                    // send web page
                    client.println("<!DOCTYPE html>");
                    client.println("<html>");
                    client.println("<head>");
                    client.println("<title>Arduino Web Page</title>");
                    client.println("</head>");
                    client.println("<body>");
                    client.println("<h1>Hello from Arduino!</h1>");
                    client.println("<p>A web page from the Arduino server</p>");
                    client.println("</body>");
                    client.println("</html>");
                    break;
                }
                // every line of text received from the client ends with \r\n
                if (c == '\n') {
                    // last character on line of received text
                    // starting new line with next character read
                    currentLineIsBlank = true;
                } 
                else if (c != '\r') {
                    // a text character was received from client
                    currentLineIsBlank = false;
                }
            } // end if (client.available())
        } // end while (client.connected())
        delay(1);      // give the web browser time to receive the data
        client.stop(); // close the connection
    } // end if (client)
}


 

Алексей Н
Offline
Зарегистрирован: 02.01.2016

Забыл добавить, что пинг тоже не проходит.

uno
Offline
Зарегистрирован: 16.06.2016
http://arduino.ru/forum/apparatnye-voprosy/ethernet-shield-w5100-ne-pinguetsya-pri-etom-v-drugoi-seti-normalno-rabotal

резистор на плате проверте. подключите прямо к компу коротким шнурком

Алексей Н
Offline
Зарегистрирован: 02.01.2016

Хммм. Про резисторы знаю. У меня как раз 511 сборка. Но вроде, на коротких шнурках должно и так работать? У меня 50 см провод.

Попробовал напрямую  к компьютеру подключить - заработало!! На всякий случай хочу уточнить про DHCP на роутере. Он должен быть включен или выключен?

Ну и в качестве бонуса заглянувшим, хитрый способ припаять резисторы не связываясь с СМД-пайкой.

 

http://forum.arduino.cc/index.php?topic=351477.msg2538804#msg2538804
 

66

uno
Offline
Зарегистрирован: 16.06.2016

есть хабы или со слабыв сигналом или шибко умные которые пытаются тип шнурка определить и адаптироваться. у меня без замены резистора на коротком шнурке с хабом не работало с компом работало.