Подключение Ethernet Shield W5100 к ПК напрямую

Тема в разделе "Arduino & Shields", создана пользователем ArtWh0, 15 апр 2018.

  1. ArtWh0

    ArtWh0 Нуб

    Добрый день!

    Решил я по-экспериментировать с шилдом Ethernet W5100, но далеко, к сожалению, не ушёл...
    Никак не могу связать в одну сеть сборку Arduino Leonardo + W5100. ПК упорно отказывается видеть подключение.

    Тестирую на простом стандартном примере. Пинг не проходит (выдаёт информацию о превышеном времени ожидании и потери всех пакетов ) и соответственно обратиться к вебсерверу через браузер тоже не могу...

    Грешил было на кабель т.к. сначала использовал самый обычный, не кроссовый, а затем переобжал старый кабель под кросс и опробовал его. Результат оказался всё тем же.

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

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

    Может кто сталкивался с подобной проблемой? Бьюсь уже не первый вечер.
    Сам в этом деле новичок, помогите добрым советом, ребят)

    #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
    };
    IPAddress ip(192, 168, 1, 177);

    // 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 native USB port only
    }


    // start the Ethernet connection and the server:
    Ethernet.begin(mac, ip);
    server.begin();
    Serial.print("server is at ");
    Serial.println(Ethernet.localIP());
    }


    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("Connection: close"); // the connection will be closed after completion of the response
    client.println("Refresh: 5"); // refresh the page automatically every 5 sec
    client.println();
    client.println("<!DOCTYPE HTML>");
    client.println("<html>");
    // 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 disconnected");
    }
    }
     
  2. mcureenab

    mcureenab Гуру

    У компа какой IP и подсеть на Ethernet интерфейсе ?

    При прямом соединении на компе тоже нужно назначить порту статический IP адрес.
     
  3. ArtWh0

    ArtWh0 Нуб

    Вы имеете ввиду конфигурировать сетевое подключение после подключения ардуины? Не скажу, что спец по сетям, но винда никак не определяет это подключение от слова совсем. Смотрел как через просто сетевые подключения, так и через cmd. Что до подключения, что после - не меняется ничего.

    Интернетом сам пользуюсь через мобильную сеть (модем). Порт Ethernet очень давно не трогал уже.
     
  4. mcureenab

    mcureenab Гуру

    Модем получает IP от DHCP сервера оператора связи. В прямом Ethernet соединении DHCP сервер отсутствует. Операционная система назначает произвольный IP и разные подсети не могут видеть друг друга.
     
  5. mcureenab

    mcureenab Гуру

    Провод неправильный сделал?
     
  6. ArtWh0

    ArtWh0 Нуб

    Витую пару (кроссовер) сделал по схеме, что нашёл на просторах сети: бело-зелёный, зелёный, бело-оранжевый, синий, бело-синий, оранжевый, бело-коричневый, коричневый.


    Да, это знаю. Думал даже пробывать поднять DHCP сервер под Windows, но не думаю, что есть смысл, если система даже подключения не видит.
     
  7. SergeiL

    SergeiL Оракул Модератор

    DHCP поднимать не нужно, нужно в параметрах адаптера, в IPv4, прописать фиксированный IP адрес из той же подсети, и маску подсети.
    Светодиод на разъеме горит хотя бы?
     
    Последнее редактирование: 15 апр 2018
  8. mcureenab

    mcureenab Гуру

    У тебя кабель без коннекторов? Как эти провода разведены в коннекторах? Картинку прицепи по которой делал.
     
  9. ArtWh0

    ArtWh0 Нуб

    Прошу прощения за задержку. Спасибо всем за помощь) Отбой тревога)

    Проблему нашёл. Оказалось сам шилд косячный. На порте Ethernet транзистор стоял 511-ый.
    Погуглив в этом направлении обнаружил, что проблема эта довольно распространённая, ибо мало у кого такие шилды не из китая и раз на раз не приходится.

    Снял со старой материнки 510-ый транзистор и поменял. Теперь всё в порядке)