Не пингуется Ethernet Shield

Тема в разделе "Arduino & Shields", создана пользователем kysin, 22 мар 2016.

  1. kysin

    kysin Нуб

    Здравствуйте, уважаемые участники форума!
    Вот такой шилд: http://ru.aliexpress.com/item/1-pcs...1280-mega-2560-Uno-R3-support/1289036781.html
    подключаю к вот такому Ардуино Уно:http://ru.aliexpress.com/item/Free-...A16U2-for-Arduino-Compatible/32341836599.html
    через вот такой коммутатор: http://megatron.md/products/kommutator-setevoj-d-link-des-1005a
    Загружаю вот такой код:
    Код (C++):
    /*
      Web Server
    A simple web server that shows the value of the analog input pins.
    using an Arduino Wiznet Ethernet shield.
    Circuit:
    * Ethernet shield attached to pins 10, 11, 12, 13
    * Analog inputs attached to pins A0 through A5 (optional)
    created 18 Dec 2009
    by David A. Mellis
    modified 9 Apr 2012
    by Tom Igoe
    */

    #include <SPI.h>
    #include <Ethernet.h>
    // Enter a MAC address and IP address for your controller below.
    // The IP address will be dependent on your local network:
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    //byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x1D, 0xDE };
    IPAddress ip(192,168,100,5);
    // Initialize the Ethernet server library
    // with the IP address and port you want to use
    // (port 80 is default for HTTP):
    EthernetServer server(80);
    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 and the server:
      Ethernet.begin(mac, ip);
      server.begin();
      Serial.print("server is at ");
      Serial.println(Ethernet.localIP());
      Serial.print("dnsServer is at ");
      Serial.println(Ethernet.dnsServerIP());
    }
    void loop() {
      // listen for incoming clients
      EthernetClient client = server.available();
      if (client) {
        Serial.println("new client");
        // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            Serial.write(c);
            // if you've gotten to the end of the line (received a newline
            // character) and the line is blank, the http request has ended,
            // so you can send a reply
            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("Connnection: close");
              client.println();
              client.println("<!DOCTYPE HTML>");
              client.println("<html>");
                        // add a meta refresh tag, so the browser pulls again every 5 seconds:
              client.println("<meta http-equiv=\"refresh\" content=\"5\">");
              // output the value of each analog input pin
              for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
                int sensorReading = analogRead(analogChannel);
                client.print("analog input ");
                client.print(analogChannel);
                client.print(" is ");
                client.print(sensorReading);
                client.println("<br />");  
              }
              client.println("</html>");
              break;
            }
            if (c == '\n') {
              // you're starting a new line
              currentLineIsBlank = true;
            }
            else if (c != '\r') {
              // you've gotten a character on the current line
              currentLineIsBlank = false;
            }
          }
        }
        // give the web browser time to receive the data
        delay(1);
        // close the connection:
        client.stop();
        Serial.println("client disonnected");
      }
    }
    Монитор последовательного порта показывает:
    server is at 192.168.100.5
    dnsServer is at 192.168.100.1

    А с компьютера (Win7) шилд не пингуется. Соответственно, через браузер не подключается тоже.
    Что я делаю не так?

    PS Кроме питания от USB подключено доп питание от сетевого БП.
    PPS форум читал.
     
  2. Securbond

    Securbond Гуру

    У вас точно подсеть 100????
    И что в браузере пишет по адресу http://192.168.100.5
    ???
     
  3. kysin

    kysin Нуб

  4. Securbond

    Securbond Гуру

    Какие адреса в сети ???? У компов или телефонов ?
    Просто смущает подсеть 100. Обычно или 0 или 1
     
  5. kysin

    kysin Нуб

    Подсеть точно 100. Адрес шлюза (он же модем и DHCP) 192.168.100.1
     
  6. Securbond

    Securbond Гуру

    А 2 вопрос ?
     
  7. kysin

    kysin Нуб

    Браузер пишет:
    Время ожидания соединения истекло

    Время ожидания ответа от сервера 192.168.100.5 истекло.

    Возможно, сайт временно недоступен или перегружен запросами. Подождите некоторое время и попробуйте снова.
    Если вы не можете загрузить ни одну страницу – проверьте настройки соединения с Интернетом.
    Если ваш компьютер или сеть защищены межсетевым экраном или прокси-сервером – убедитесь, что Firefox разрешён выход в Интернет.
     
  8. Securbond

    Securbond Гуру

    В мониторе порта что нибудь есть ?
    Сори увидел... Коннект вроде есть а сервер не поднялся
     
  9. kysin

    kysin Нуб

    Да. Шилд видит модем, а модем не видит шилд.
     
  10. Securbond

    Securbond Гуру

    Совет пока такой... Поменять номер порта на 8080, попробовать убрать строку с DNS закомментируйте её и попробуйте ...
    При коннекте должен писать в ком порт что появился новый клиент
    Ещё попробовать обновить библиотеку Ethernet
     
  11. kysin

    kysin Нуб

    Просто перезаписать, или попробовать найти новую версию?
     
  12. Securbond

    Securbond Гуру

    Обновить через менеджер библиотек в самой IDE
     
  13. kysin

    kysin Нуб

    Эту строку Вы имеете ввиду:
    Serial.println(Ethernet.dnsServerIP());
     
  14. kysin

    kysin Нуб

    Без изменений.
    Не совсем ясна фраза: "При коннекте должен писать в ком порт что появился новый клиент"
     
  15. Securbond

    Securbond Гуру

    Извиняюсь это не нужно делать
    Когда вы в браузере грузите страницу своего сервера в мониторе порта пишет " new client"
     
  16. kysin

    kysin Нуб

    Изменений нет.
    В продолжение эксперимента, отключил шилд от сети (ethernet), поменял IP адрес на 192,168,1,5 (вместо 192,168,100,5) и монитор компорта выдал:
    server is at 192.168.1.5
    dnsServer is at 192.168.1.1

    Получается, что шилд не видит шлюз, а оператор Serial.println(Ethernet.dnsServerIP()); выводит значение адреса по какому-то другому алгоритму, видимо просто подставляя единичку в последний разряд адреса.

    Может у кого есть какие мысли по этому поводу? Шилд битый? (Хотя все светодиоды светятся)