No Image

Arduino ethernet shield w5100 примеры

428 просмотров
12 декабря 2019

Продолжаем цикл слёзных историй про китайские Arduino-модули.

На этот раз речь пойдёт про китайскую копию Arduino Ethernet Shield, на базе чипа W5100, которая чуть не стала причиной запоя сотрудников двух отделов.

В общем, есть такая штуковина:

В сердце модуля чип W5100 — достаточно неплохой, аппаратно поддерживает TCP, обмен с микроконотроллером по SPI на частоте до 15МГц, позволяет несложными телодвижениями организовать как TCP-клиент, так и TCP-сервер, и при этом стоит недорого.

Всё это собрано китайцами по схеме оригинального итальянского модуля. Конечно, к схеме тоже есть вопросы, например, зачем на плате размещается 74LVC14D — 6 инвертирующих буферов. Из которых 5 висят в воздухе, а один зачем-то подаёт низкий уровень на вход SEN (т.е. отключает режим SPI), когда линия на линии CE высокий уровень. На кой ляд это нужно — не понятно, ведь входы выходы SPI и так переходят в третье состояние, когда на CE высокий уровень. Ну да ладно. UPD: Как подсказали в комментариях, согласно аппноту, W5100 не отпускает линию MISO, когда на CS высокий уровень. Поэтому и нужен инвертор, который будет выставлять низкий уровень на входе SEN, полностью отключая SPI и позволяя использовать иные устройства, в частности, карту памяти, слот для которой есть на этой же плате

Модуль, конечно, не без проблем. Особенно проблемы связаны с инициализацией при медленно нарастающем напряжении питания, из-за чего, если использовать стандартные ардуино-библиотеки, модуль не инициализируется. Кроме того, известны проблемы этих библиотек, которые приводят к увеличенному времени отклика и неправильной работе сокетов. Но поскольку я готовыми библиотечками не пользуюсь, для меня всё это не проблема, соединения стабильные, а нюансы легко обойти.

Но вот одна проблема заставила поломать голову.

Выражалось это в следующем: собранное устройство отлично работает, если подключено кроссовером к компьютеру, или подключено к сети через роутер. Но как только подключается через свитч, пинги не ходят, соединение не устанавливаются, а иногда даже лампочки мигают. Пробовали разные кабели, разные свичи. Результат один — через роутер или напрямую — нормально, через свич — никак.

Технические специалисты уже готовы были уйти в запой, я уже было подумал, а не забухать ли и мне? Но, к счастью, проблема оказалось не новой. Немного гугления привели меня к ответу.

Читайте также:  Ванная комната своими руками в квартире

Дело оказалось вооот в этой резисторной сборке:

Порт подключения HR911105A содержит в себе согласующие резисторы со стороны линии, и трансформаторы для гальванической развязки.
То, что обведёно кружочком — это согласующие резисторы, которые находятся со стороны чипа.
Если посмотреть на схему шилда, то это сборка RN1 — 4ре резистора по 49,9 Ом.
Можно посмотреть, например, reference schematic на w5100 и увидеть то же самое: R6, R7, R14, R15 — по 49,9 Ом.

Однако китайцы решили, что резистор большой роли не играет и решили впаять 510 Ом, в 10 раз больше чем положено. Разумеется, это привело к рассогласованию, и сигнал стал очень кудрявой формы. Видимо, контроллеры в роутерах и компьютерах ещё могут с этим жить, а вот в свичах — уже не очень.

По хорошему, эту резисторную сборку хорошо бы заменить на хотя бы 51-Омную. Но у меня под рукой такой не оказалось. Зато были резисторы 110 Ом размером 0805 и 1206. Их то я и напаял параллельно линиям RX и TX (ножки 1-2 и 3-6, соответствено. Поскольку тут поддерживается автоматическое определение типа кабеля, то нельзя сказать наверняка, кто из них будет передатчиком, а кто приёмником)

В итоге, схема прекрасно заработала через свитч, и через роутер связь стала более стабильной, а технические специалисты были спасены от внезапного алкоголизма.

Хотя так и осталось мне не понятным: почему же с неправильным резистором работает через роутер, но не работает через свитч? В чём разница? Хотя, возможно дело в том, что свичи были в основном D-Link’и, а роутеры в основном TP-Link’и, но суть различий всё равно не ясна.

Модуль W5100 предназначен для подключения Arduino к локальной сети/интернету с помощью кабеля. Такой модуль позволяет удаленно получать данные с нашей Arduino при наличии подключения к сети, в которой он находится, а также удаленно управлять различными устройствами, подключенными к контроллеру.

Характеристики:

  • Питание: 5В постоянного тока
  • Размеры: 5.2x3x1.5 см (Д*Ш*В).
  • Скорость передачи данных: до 25Mbps
  • Интерфейс подключения: SPI
Читайте также:  Дизельные двигатели для мотоблоков и минитракторов цена

Модуль имеет 10 выводов. Для подключения к Arduino нам необходимо использовать 6 из них:

MI – линия “MISO” интерфейса SPI

MO – линия “MOSI” интерфейса SPI

CK – линия “SCK” интерфейса SPI

SS – линия “SS” интерфейса SPI

Подключение к Arduino:

Для подключения и настройки модуля нам необходимы:

  • Любая Arduino-совместимая плата
  • Компьютер с установленной средой Arduino IDE
  • USB кабель для подключения Arduino к персональному компьютеру
  • Патч-корд (RJ45-RJ45)
  • Маршрутизатор/сетевой коммутатор (не обязательно)

Принципиальная схема подключения компонентов:

Патч-корд необходимо подключить с одной стороны к модулю w5100, а с другой к свободному входу маршрутизатора или, в случае, если его нет, к разъему сетевой карты вашего компьютера.

Скетч для Arduino:

Для работы с модулем будем использовать следующие библиотеки*:

Эти библиотеки уже встроены в среду, скачивать их дополнительно не нужно.

*Библиотека Arduino – программный код, хранящийся не в скетче, а во внешних файлах, которые можно подключить к вашему проекту. Библиотека содержит в себе различные методы и структуры данных, которые нужны для упрощения работы с датчиками, индикаторами, модулями и другими электронными компонентами.

Скетч для пробного запуска модуля можно получить из меню примеров:

После выбора примера, обратите внимание на строку IPAddress

IP-адрес вам необходимо указать самостоятельно, в зависимости от ваших сетевых настроек. Узнать IP-адрес ваших сетевых устройств вы можете с помощью команды ipconfig (для Windows) в командной строке.

Выбирать адрес для модуля следует из доступного для вашей подсети диапазона IP-адресов.

Адрес сети (первые 3 байта) должен совпадать с настройками вашего сетевого устройства (маршрутизатора или сетевой карты компьютера)

Адресом хоста (последний байт) нужно указать любой свободный адрес в подсети.

Если вы подключаете модуль напрямую к сетевой карте компьютера, вам необходимо установить сетевые настройки вручную.

Для этого необходимо зайти в Панель управления компьютера и выбрать раздел “Настройки параметров адаптера”

В свойствах устройства вам необходимо зайти в раздел “IP версии 4 (TCP/IPv4)” и задать IP-адрес, например: 192.168.100.1 (маску подсети для нашего примера можно задать любую)

Нажимаем “ОК”, чтобы сохранить изменения.

Читайте также:  Декор в морском стиле фото

Теперь в скетче вы можете указать IP-адрес для нашего модуля. (для примера выше он будет таким: 192.168.100.2)

После загрузки скетча, наша Arduino превратится в веб-сервер.

С помощью любого браузера, введя в адресной строке IP-адрес нашего модуля, мы сможем увидеть результат работы скетча (в нашем случае это показания с аналоговых входов).

Еще один пример:

Теперь немного усложним задачу и создадим веб-сервер, выдающий показания с термометра DS18B20 (подробней о нём вы можете прочитать здесь).

Принципиальная схема подключения компонентов:

Скетч для Arduino:

В этом эксперименте мы покажем, как нашей плате Arduino получить доступ к сети Интернет с помощью модуля Ethernet shield W5100.

Необходимые компоненты:

Ethernet Shield позволяет легко подключить вашу плату Arduino к локальной сети или сети Интернет. Он предоставляет возможность Arduino отправлять и принимать данные из любой точки мира с помощью интернет-соединения. Например, можно реализовать удаленное управление вашими исполнительными устройствами, подключенными к реле, через веб-сайт или создать устройство, которое с помощью звукового сигнала оповестит вас о новом электронном письме.
В первой части эксперимента рассмотрим использование платы Arduino с подключенным Ethernet Shield в качестве сервера, выдающего клиенту (браузеру) веб-страницу и позволяющего запросами с браузера изменять состояния подключенного к Arduino светодиода.
Подключаем к плате Arduino Ethernet shield, а к выводам D7, D8 – светодиоды через резистор 220 Ом (см. рис. 29.1).

При написании скетча используем встроенную в Arduino IDE библиотеку Ethernet.
Содержимое скетча показано в листинге 29.1.

Порядок подключения:
1. Подключаем Ethernet shield к плате Arduino, с помощью кабеля RJ45 подключаем Ethernet shield к сети.
2. Подключаем светодиоды по схеме на рис. 29.1.
3. Загружаем в плату Arduino скетч из листинга 29.1.
4. Открываем браузер на любом компьютере данной сети и в адресной строке набираем http://192.168.0.214 (тот адрес, который вы присваиваете Arduino в скетче).
5. На странице (рис. 29.2), изменяя статус элементов input radio, видим изменение состояния светодиодов, подключенных к плате Arduino.


Рис. 29.2. Веб-страница, формируемая Arduino-сервером

Листинги программ скачать

Для работы шилда на W5500, потребуется установка библиотеки Ethernet2 (https://www.arduino.cc/en/ Reference/Ethernet).

Комментировать
428 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector