Ethernet Shield не подключается

Я установил Ethernet Shield поверх Arduino UNO. Arduino подключен через usb к моему компьютеру и к сети через Ethernet через коммутатор. Запускаю упрощенную версию примера веб-сервера, и функция Ethernet.begin() всегда возвращает EthernetNoHardware.

Я пробовал разные настройки, меняя кабели Ethernet и подключаясь непосредственно к маршрутизатору. Я также попытался добавить определенные параметры ip, шлюза и подсети в Ethernet.begin (), однако вывод не меняется, и с сервером невозможно связаться:

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

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0xCC, 0x1E }; //mac address on the sticker
IPAddress ip(192, 168, 1, 134);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
IPAddress DNSserver(192,168,1,1);
EthernetServer server(80);

void setup() {
  Ethernet.init(10);
  Serial.begin(9600);
  while (!Serial) {
    ;
  }

  Ethernet.begin(mac, ip, gateway, subnet);

  if (Ethernet.hardwareStatus() == EthernetNoHardware) {
    Serial.println("Ethernet shield not found.");
  }


  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
} 

результат:

Ethernet shield not found.
server is at 192.168.1.134

Есть какие-нибудь идеи о том, в чем может быть проблема?

, 👍1

Обсуждение

Вероятно, вы используете экран Ethernet 2. Попробуйте "#включить <Ethernet2.h>" (вместо #включить <Ethernet.h>) и посмотрите, сработает ли это., @StarCat

@StarCat, библиотека Ethernet поддерживает Ethernet 2 shield (W5500) уже более двух лет, @Juraj

Никогда не знал этого, так как я всегда использовал Ethernet 2. Извините за путаницу., @StarCat

Я использую W5100, @Hexash


1 ответ


1

В вашем скетче параметр DNS IP отсутствует в Ethernet.begin.

Это должен быть Ethernet.begin(mac, ip, dns, шлюз, подсеть);

,