
В этой статье рассмотрим Ethernet Shield W5100 с помощью которого можно подключить плату Arduino к интернету или локальной сети. Shield основан на чипе Wiznet W5100 с поддерживаемой скоростью передачи данных до 100 Мбит/с. Используют данный Shield совместно с Arduino можно организовать простой веб-сервер с доступом к этому серверу.
Технические параметры
► Напряжение питания: 5 В
► Внутренний буфер: 16 кбит
► Скорость подключения: 10 и 100 Мбит/с (RJ45)
► Разъем для карт памяти: micro-SD
► Габариты: 73 мм х 54 мм х 27 мм
Общие сведения
Чтобы подключить Ethernet Shield W5100 к Arduino (UNO или MEGA), предусмотрены длинные штыревые разъемы, так же поверх W5100 можно установить другие Shields. Для хранения больших файлов на плате установлен разъем micro-SD, для установки micro-SD карт. Плата Arduino взаимодействует как с W5100, так и с SD-картой, используя шину SPI (вывода 10, 11, 12 и 13 (UNO) и 50, 51 и 52 (MEGA), на обеих платах вывод 10 используется для выбора W5100 и вывод 4 для выбора SD-карты, эти вывода нельзя использовать (это надо учесть, при проектировании). Так-как W5100 и SD-карта используют одну шину SPI, одновременно может быть активно только одно устройство. Для подключения к маршрутизатору или компьютеру, установлен стандартный разъем RJ45. Кнопка RESET дублирует кнопку RESET на Arduino, который сбрасывает как W5100, так и плату Arduino.

Назначение светодиодов:
► PWR: указывает, что подано питание на плату.
► LINK: указывает наличие сетевого канала и мигает, когда экран передает или принимает данные
► FULLD: указывает, что сетевое соединение полнодуплексное
► 100M: указывает на наличие сетевого соединения 100 Мбит/с
► RX: мигает, когда экран получает данные
► TX: мигает, когда экран отправляет данные
► COLL: мигает, когда обнаруживаются сетевые конфликты
Помимо этих светодиодов, есть два светодиода, расположенные на гнезде RJ45, при подключении кабеля, один светится постоянно, а другой мигает в соответствии с потоком данных.
Принципиальную схема Ethernet Shield W5100 можно посмотреть ниже

Устранение проблемы c W5100
Существует проблема с некоторыми Ethernet Shield на базе W5100. Производитель поставил неправильную сборку их четырех резисторов, вместо 49,9 Ом установил 510 Ом. Из-за этого Shield W5100 нестабильно работает при подключении к роутеру или вовсе не работает c маршрутизатором (свичем). На данный момент, существует два варианта устранения данной проблемы:

► Первый вариант, просто заменить резисторную сборку на 51 Ом, но если у вас нету опыта в пайке SMD компонентов, лучше воспользоватся вторым способом.

► Второй способ, установить дополнительные резисторы на 100 Ом, между контактами 1 и 2, 3 и 6. Теперь W5100, будет работать более стабильнее.

Подключение W5100 к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Ethernet Shield W5100 x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
Подключение:
В качестве демонстрации, возьмем стандартный пример со среды разработки IDE Arduino. Для этого нам понадобится internet Shield W5100 и Arduino UNO R3 (устанавливаем Shield поверх Arduino). Как уже поняли библиотеку используем стандартную «Ethernet» дополнительно скачивать и устанавливать не нужно, загружаем скетч показанный ниже или в IDE Arduino заходим примеры «Файл» —> «Примеры» —> «Ethernet» —> «WebServer». Схема подключения показана ниже.

/*
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 19.11.2018г.
*/
#include <SPI.h> // Подключаем библиотеку SPI
#include <Ethernet.h> // Подключаем библиотеку Ethernet
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Вводим MAC адрес
IPAddress ip(192, 168, 21, 105); // Указываем станитеский IP
EthernetServer server(80); // Инифиализация библиотеки Ethernet "server" на порту 80
void setup()
{
Serial.begin(9600); // Задаем скорость передачи данных
while (!Serial) {;}
Ethernet.begin(mac, ip); // Запускаем сервер
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop()
{
EthernetClient client = server.available(); // Принимаем данные, посылаемые клиентом
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
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>");
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') {
currentLineIsBlank = true;
} else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println("client disconnected");
}
}
В строчке «5» необходимо указать ваш IP адрес к которому будете подключатся, в моем случае это IPAddress ip(192, 168, 21, 105);
Открываем любой браузер и вводим IP адрес что указали в «5» строке, откроется страница с данными аналоговых портов (не удивляйтесь, так как к ним не чего не подключено, на них образуется наводка). Вот и все.
Ссылки
Документация W5100_Datasheet_v1.1.8
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Комплект проводов DuPont, 2,54 мм, 20 см
Ethernet Shield W5100
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Ethernet Shield W5100


скетчи — можно удаленно заливать и запускать через этот shield ?
Какие решения если мне нужны остальные контакты на ардуино ?
они транзитом через плату проходят. Так ?
Какие решения по радиатору ? из чего и как его сделать ? продаете ли вы термопасту ?
Второй способ не дает результата
Если должно быть 51 вместо 510, а по схеме вообще 49, то вместо 100 надо ставить 56 Ом
Позволю себе добавить свои 5 коп.))
На схеме указано, что резисторы маркировкой 49R9 (49.9 Ом). Они подключены последовательно. соответственно в сумме дают 100 Ом.
По второму способу мы должны подключить параллельно резистор, чтобы снизить 510 Ом до 100 Ом.
Соответственно, посчитав по калькулятору, получаем 120 Ом!
Итого: каждый резистор по 120 Ом подпаиваем к ногам 1-2 и 3-6 вывода RJ45
А вообще — Спасибо большое за статью!
Shield W5100 использует на своей плате для подключения к ардуино ICSP разъем. Поэтому у вас на рисунке не верно подключен шилд. Нужно цеплять 11,12,13 выводы ардуины к ICSP разъему на w5100.