Экран Ethernet не получает IP

Я просто запускаю приведенный ниже скетч DHCPAddressPrinter в примере Arduino, чтобы настроить EthernetShield с MAC и IP

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

// Введите MAC-адрес вашего контроллера ниже.
// Более новые экраны Ethernet имеют MAC-адрес, напечатанный на наклейке на экране.
byte mac[] = {
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};


// Инициализируем клиентскую библиотеку Ethernet
// с IP-адресом и портом сервера
// к которому вы хотите подключиться (порт 80 по умолчанию для HTTP):
EthernetClient client;

void setup() {
  // Открытие последовательной связи и ожидание открытия порта:
  Serial.begin(9600);
  // эта проверка нужна только для Leonardo:
  while (!Serial) {
    ; // ждем подключения последовательного порта. Нужен только для Леонардо
  }


  // запускаем соединение Ethernet:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // нет смысла продолжать, так что ничего не делайте навсегда:
    for (;;)
      ;
  }
  // напечатать ваш локальный IP-адрес:
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // вывести значение каждого байта IP-адреса:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
  }
  Serial.println();
}

void loop() {

 }

После загрузки скетча в arduino ниже показан вывод в консоли

Sketch uses 13,614 bytes (42%) of program storage space. Maximum is 32,256 bytes.
Global variables use 539 bytes (26%) of dynamic memory, leaving 1,509 bytes for local variables. Maximum is 2,048 bytes.

И в последовательном мониторе ничего не отображается Это изображение светящихся индикаторов Ethernetshield после подключения к маршрутизатору. Мой маршрутизатор — беспроводной маршрутизатор Binatone ADSL2+.

Я проверил arp -a,

C:\Users\Radhamani>arp -a

Interface: 192.168.1.6 --- 0x3
  Internet Address      Physical Address      Type
  192.168.1.1           6c-fd-b9-24-c6-fe     dynamic
  192.168.1.255         ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  224.0.0.252           01-00-5e-00-00-fc     static
  239.255.255.250       01-00-5e-7f-ff-fa     static
  255.255.255.255       ff-ff-ff-ff-ff-ff     static


Interface: 192.168.198.1 --- 0xe
  Internet Address      Physical Address      Type
  192.168.198.255       ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  224.0.0.252           01-00-5e-00-00-fc     static
  239.255.255.250       01-00-5e-7f-ff-fa     static


Interface: 192.168.234.1 --- 0xf
  Internet Address      Physical Address      Type
  192.168.234.255       ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  224.0.0.252           01-00-5e-00-00-fc     static
  239.255.255.250       01-00-5e-7f-ff-fa     static

Полный результат ipconfig:

Wireless LAN adapter Wi-Fi:
   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::901:3297:48ad:9e7d%3
   IPv4 Address. . . . . . . . . . . : 192.168.1.6
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1
Ethernet adapter VMware Network Adapter VMnet1:
   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::c954:40b2:c8c1:de0%14
   IPv4 Address. . . . . . . . . . . : 192.168.198.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :
Ethernet adapter VMware Network Adapter VMnet8:
   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::2837:7e01:c799:d627%15
   IPv4 Address. . . . . . . . . . . : 192.168.234.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Serial.println в программе ничего не печатает. Похоже, Ethernet Shield не получает IP-адрес. Я не уверен, где я ошибаюсь. Пожалуйста, помогите мне решить эту проблему

, 👍0


4 ответа


2

Глядя на изображение... я вижу, что контакты программатора на задней панели экрана и Arduino не подключены должным образом.. Это может быть ошибкой или, по крайней мере, произошло со мной. Кроме того, определенная сеть должна идентифицировать MAC-адрес из таблицы поиска, и если MAC-адрес щита совпадает, то разрешены только сетевые транзакции. Также я предлагаю вам сбросить MAC-адрес виртуальной машины и сетевые протоколы и попробовать базовую ОС, которая установлена на вашем компьютере.

,

0

Возможно, SD-карту необходимо отключить. Добавьте ниже в setup().

pinMode(10, OUTPUT);
digitalWrite(10, HIGH);

Также проверьте назначение контактов для W5100 (в библиотеке Ethernet).

Ура!

,

0

проверьте, активна ли служба DHCP вашего маршрутизатора :)

,

У меня была такая же проблема с моим проектом, в котором я использовал Arduino Ethernet schield 2. Я полагаю, что для получения IP-адреса в последовательном мониторе используется простая примерная программа, но позже я обнаружил, что когда мы используем Arduino Ethernet schield 2, нам нужно использовать библиотеку "<Ethernet2.h" вместо Ethernet.h, @Amol Nardelwar


0

У меня была та же проблема, и у нее было две причины:

1) Я не смог до конца вставить пины своего шилда в плату (ArduinoMega), потому что если его разъем USB. Поэтому я соединил их кабелями. Чтобы проверить наличие этой ошибки, используйте этот код для инициализации экрана Ethernet:

   Ethernet.begin(mac, ip);
   if (Ethernet.begin(mac) == 0) {
     Serial.println("Failed to configure Ethernet using DHCP");
     Ethernet.begin(mac, ip);

     if (Ethernet.hardwareStatus() == EthernetNoHardware) {
       Serial.println("Ethernet shield was not found.");
     } else if (Ethernet.linkStatus() == LinkOFF) {
       Serial.println("Ethernet cable is not connected.");
     }
   }

В этом случае будет напечатано: «Защита Ethernet не найдена».

2) Я тоже использую этот китайский шилд W510 (такой же, как на фото выше). Судя по всему, есть известная ошибка. Вот решение: https://forum.arduino.cc/index.php?topic=351477.45

Вкратце: вам нужно припаять 2 резистора между контактами 1-2 и 3-6 разъема Ethernet экрана. Ничего отпаивать не нужно.

Отлично работает!

,