Обзор Ethernet Shield W5100
В этой статье рассмотрим 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». Схема подключения показана ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
/* Тестировалось на 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.