Ethernet-Shield W5100 не пингуется (но мигает и при этом в другой сети нормально работал)

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

  1. riba

    riba Нуб

    Добрый день! Подскажите, пожалуйста.
    Есть Arduino UNO + Ethernet-Shield W5100, раньше эта связка нормально функционировала и как сервер и как клиент, подключение к сети было Онлайм через роутер D-link. Потом я перехал в другую квартиру, также Онлайм, только вот роутер Ростелекомовский свой какой-то поставили. Есть точно рабочий код (возьмём за основу встроенные в IDE примеры Ethernet: WebServer и WebClient), подключаю по точно работающему кабелю к роутеру, все лампочки загораются вроде как обычно, но Ардуино не пингуется! Пробовал и в режиме DHCP получать адрес и прописывать в коде. Также пробовал разные айпи и MAC адреса - всё одно. Зайти на сервер Ардуины не получается, отправить пакет с Ардуины (GET-запрос) на свой локальный сервер не получается.

    При этом, когда я начинаю Ping-сканирование (и конкретно прописанный в скетче айпи-адрес, а также и сразу весь диапазон локальной сети), то видно, что Ардуино принимает от роутера широковещательные пакеты на себя (лампочка на шилде реагирует). Но вот в обратку не шлёт ничего и не обнаружается.

    В настройках роутера проверил и отключил MAC-фильтрование и прочие фильтры (даже от DOS атак отключал защиту), в Виндовсе отключал полностью межсетевой экран и Defender`а, пробовал отключать в роутере режим DHCP, пробовал в роутере добавить MAC-адреса компьютера и Ардуины в список разрешенных - картина таже: не пингуется, но на широковещ. пакеты реагирует.

    Айпи адрес роутера - 192.168.0.1, маска 255.255.255.0, айпи адрес Ардуины ставил разные в диапазоне от 192.168.0.2 до 192.168.0.200, Mac адреса также разные пробовал. Повторюсь, что в другом месте с другим роутером всё нормально работало , а теперь - нет.

    Народ, подскажите, пожалуйста, что можно еще попробовать предпринять, чтобы как-то прояснить ситуацию??
     
  2. YeS

    YeS Гик

    Для начала я бы проверил подключается ли допустим ноут через данный Ethernet кабель. Далее посмотрел бы какой IP реально поднимается на ардуине. Например так:
    Код (C++):
    Serial.println(Ethernet.localIP());
    и удостоверился что это действительно 192.168.0.2, а не 0.0.0.0.
     
  3. riba

    riba Нуб

    Да, ноутбук подключается через этот кабель, проверял, и другой кабель проверял - тоже самое.
    Данный участок кода:
    Код (C++):
    Serial.println(Ethernet.localIP());
    как раз есть в скетче-примере WebClient, в монитор com-порта в этом участке кода выводится тот адрес, который и прописан в программе, но вот на пинг не реагирует.
     
  4. riba

    riba Нуб

    Нашёл сейчас на другом сайте, человек пишет, что "..создал в библиотеке ESP8266WiFi.cpp метод forceARP() (см. ниже) и дергаю его каждые две секунды. Он рассылает по всем сетевым интерфейсам gratuitous ARP анонс со своими MAC/IP, так что больше никто модуль не теряет в сети."
    Правда проблема немножко другая, у него шилд Wi-Fi и изначльно пингуется, но потом через время теряется связь.

    Код (C++):


    extern "C" {
    #include "lwip/netif.h"
    err_t etharp_request(struct netif *netif, ip_addr_t *ipaddr)ICACHE_FLASH_ATTR;
    }

    void ESP8266WiFiClass::forceARP() {
       struct netif *netif = netif_list;
       while (netif)
       {
          etharp_request((netif), &(netif)->ip_addr);
          netif = netif->next;
       }
    }  
     
    Подскажите, кто знает, как на Ethernet-Shield создать нечто подобное, чтобы сама Ардуина рассылала gratuitous ARP анонс со своими MAC/IP?

    А потом попробовать бы в сниффере на компьютере посмотреть какой MAC/IP берёт на себя Ардуино (хотя может в моём случае Ардуино вообще ничего отсылать не может).
     
  5. YeS

    YeS Гик

    а какой роутер?
     
  6. riba

    riba Нуб

    Как я понял роутер у меня: sagemcom f@st 1744 v4 с прошивкой ростелеком
    [​IMG]
     
  7. riba

    riba Нуб

    Вобщем поставил другой роутер (D-Link) и на нём всё заработало, так что знайте народ, если у вас роутер от Ростелекома, то он может быть причиной не обнаружающегося Ethernet-Shield`a! Либо его не корректная настройка, но я почти всё перепробовал - не получилось.
     
  8. AlexVS

    AlexVS Гик

    А посмотрите вот на эту ссылку http://forum.iobroker.net/viewtopic.php?t=1609
    Может это ваш случай?