Экран 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-адрес. Я не уверен, где я ошибаюсь. Пожалуйста, помогите мне решить эту проблему
@Rad4, 👍0
4 ответа
Глядя на изображение... я вижу, что контакты программатора на задней панели экрана и Arduino не подключены должным образом.. Это может быть ошибкой или, по крайней мере, произошло со мной. Кроме того, определенная сеть должна идентифицировать MAC-адрес из таблицы поиска, и если MAC-адрес щита совпадает, то разрешены только сетевые транзакции. Также я предлагаю вам сбросить MAC-адрес виртуальной машины и сетевые протоколы и попробовать базовую ОС, которая установлена на вашем компьютере.
Возможно, SD-карту необходимо отключить. Добавьте ниже в setup().
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
Также проверьте назначение контактов для W5100 (в библиотеке Ethernet).
Ура!
У меня была та же проблема, и у нее было две причины:
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 экрана. Ничего отпаивать не нужно.
Отлично работает!
- Как получить HTTPS на Arduino?
- Клиент MQTT на Arduino + SIM900
- Arduino Ethernet Shield при использовании контактов Arduino Mega
- Ethernet nodemcu
- Удаленная загрузка кода на плату Arduino через интернет
- Где я могу найти лучшую схему выводов для платы «Arduino Ethernet»?
- Использование AysncUDPMessage для ESP32 для отправки строковых данных
- Ошибка компиляции: "cannot declare 'client' to be of abstract type 'Client'"
У меня была такая же проблема с моим проектом, в котором я использовал Arduino Ethernet schield 2. Я полагаю, что для получения IP-адреса в последовательном мониторе используется простая примерная программа, но позже я обнаружил, что когда мы используем Arduino Ethernet schield 2, нам нужно использовать библиотеку "<Ethernet2.h" вместо Ethernet.h, @Amol Nardelwar