Ethernet shield w5500 подключение к arduino uno

Обновлено: 30.06.2024


Сетевые системы от Wiznet уже несколько лет занимают лидирующие позиции, касающиеся габаритов и возможностей. Даже сама Arduino отметила это преимущество, оснащая ими свои Ethernet Shield.

Преимущество сетевых модулей Wiznet над ENC

Модули на чипах от Wiznet немного дороже модулей на чипах ENC, но это отнюдь не безосновательно. Микросхемы Wiznet, в отличие от ENC, обрабатывают большинство протоколов и операций аппаратно, благодаря этому основная работа выполняется микросхемой модуля, а не нашим микроконтроллером.

Подключение сетевого модуля W5500 к Arduino

Подключить модуль W5500 к Arduino не представляет особой сложности. Модуль оснащен 12 контактами и связывается с Arduino через шину SPI, поэтому мы будем использовать только 6 контактов.

Стоит помнить, что модуль работает от 3,3 В, поэтому VCC необходимо подключить к выводу 3,3 В на нашей плате Ардуино Uno , а не 5 В. Всю систему необходимо собрать по следующей схеме:

Подключение сетевого модуля W5500 к Arduino

Первая программа для модуля Wiznet

После того, как мы собрали схему, мы можем перейти к программированию. Начнем с примера «WebServer». Конечно, нам не нужно загружать какую-либо библиотеку, потому что, как уже упоминалось в начале, чип поддерживается Arduino и программа IDE оснащена библиотекой под названием Ethernet. Если у вас старая версия IDE, стоит обновить библиотеку до версии 2.0.0 с помощью диспетчера библиотек.

Что касается MAC- и IP-адресации, то эта тема была подробно объяснена в статье о ENC28J60.

Итак, модулю мы присвоили IP-адрес 192.168.1.177. Помимо настройки IP-адреса, стоит заглянуть в раздел настройки и добавить/раскомментировать следующую строку:

Ethernet.init (10);

Эта строка указывает к какому выводу подключен вывод CS модуля. В нашем случае это вывод 10. Мы можем подключить его и к другим выводам, тогда мы должны изменить значение в скобках.

Наш код должен выглядеть так:

Когда скетч будет загружен в Ардуино, мы можем подключить к модулю кабель RJ45, в браузере ввести IP-адрес, т. е. 192.168.1.177, и нашим глазам должна предстать такая картина:


Наш сайт в локальной сети

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

Чтобы полностью понять работу программы, которую мы собираемся написать, может потребоваться владение основами HTML. Это несложный язык, но если вы собираетесь часто использовать модули Ethernet, вам следует изучить его.

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

После загрузки программы снова подключите модуль к сети и введите IP-адрес в браузере. Вы должны увидеть такую ​​страницу:


Как мы еще раз убедились, работа с модулями Ethernet не так сложна, как может показаться. И в завершении можем добавить, что еще одним преимуществом модуля Wiznet является более быстрая загрузка страниц, но выбор все равно остается за вами!

Ethernet Shield — это плата расширения, позволяющая Arduino или Iskra работать в локальных вычислительных сетях для приёма и передачи данных в сети Интернет.

На платы с разъёмом USB-B шилд может встать не ровно. Контакты разъёма ethernet прижимаются к металлическому разъёму микроконтроллера. Чтобы всё работало стабильно приклейте кусочек изоленты на разъём между шилдом и микроконтроллером или используйте специальные проставки


Шилд Ethernet позволит управлять удалёнными объектами через web-браузер со своего компьютера, планшета или телефона.

Подключение и настройка

Установите Ethernet Shield на управляющую платформу, например Arduino, Iskra Neo или Iskra JS.

Убедитесь в наличии и правильности соединения джамперов SPI-интерфейса на плате Ethernet Shield.

Примеры работы для Iskra JS

Для общения Ethernet Shield с платой Iskra JS воспользуемся библиотекой WIZnet. Она скрывает в себе все тонкости протокола, предоставляя простые и понятные функции.

Примеры работы для Arduino

Для общения Ethernet Shield с платами Arduino воспользуемся библиотекой Ethernet 2. Она скрывает в себе все тонкости протокола, предоставляя простые и понятные функции.

Пример WebClient

Пример WebServer

Элементы платы


Микросхема Wiznet 5500

Чип wiznet 5500 — аппаратный контроллер TCP/IP, позволяющий легко подключиться к Интернету.

Светодиодная индикация

Имя светодиода Назначение
ON Информационный светодиод о наличии питания

Разъём RJ45S

Стандартный разъём для подключения Ethernet-кабеля.

Джамперы SPI

Коммутируют пины интерфейса SPI на Ethernet Shield и управляющей плате. Пины можно изменить, сняв джамперы и припаяв свободные металлические контакты к другим пинам с помощью проводков.

Похоже, что Etherent и TCP/IP — все ещё самый распространенных способ связи самых разных устройств. Хотя WiFi в последнее время потихоньку вытесняет проводной «медный» Etherent, тем не менее, найти порт и «воткнуться в локалку» — до сих пор самый простой способ подключения. Такая доступность Ethernet не обошла стороной и самые маленькие железки: контроллеры, датчики, счетчики потребления и т.д. которые нынче называются модным маркетинговым словом "Интернет вещей*" (Internet Of Things, IoT).


И тут нам могут здорово помочь корейские микросхемки от WIZnet. Компания WIZnet — это довольно активный производитель чипов класса IOcP (Internet Offload co-Processor). Что это? Говоря человеческим языком — это такой чип, который: с одной стороны имеет Etherent, внутри содержит собственный крошечный процессор для обработки TCP/IP, а с другой стороны — простой интерфейс для связи с нашей маленькой железкой.

В первой части будет небольшой теоретический обзор подключения «маленьких железок» и куча ссылок на разные чипы.

Но сразу возникает вопрос: ЗАЧЕМ вводить в систему еще один процессор, если всё можно обработать на основном? Давайте попробуем ответить.

Давайте попробуем уйти «вниз» по шкале стоимости (до единиц долларов и даже ниже) и рассмотрим различные способы включения «мелочи» в сеть.

Самый-самый простой способ «выхода в сеть» для микроконтроллеров — это разного рода преобразователи COMпорт-в-Telnet, Serial2Ethernet иногда называемые еще Реверсивный Telnet. В этом случае преобразователь «ловит» telnet сессию и «загоняет» ее в обычный COM-порт микроконтроллера. Далее оператор попадает в обычный диалог, только по сети. Ну что тут сказать? Во первых, там тоже стоит отдельный микроконтроллер и устройства получаются совсем не дешевые (Статьи про самодельный модуль и про модуль Tibbo). Для простенькой задачи «поменять/прочитать один параметр» этого может и вполне хватит. Минусов тоже много — единственная сессия, фиксированный протокол — трудно, например, прикрутить SSL если его нет, сложности конфигурирования самого преобразователя, например сменить ему IP адрес или порт и т.д.

Другой вариант — это микроконтроллеры с настоящим Etherent на борту, но они как правило, имеют только MAC уровень и требуют внешнего чипа PHY (KS8721BL, DM9161A, RTL8201). Соединение с таким чипом, MII или RMII как минимум требует внешних пинов. Для соединения PHY с LAN требуется еще впаять трансформатор или MagJack. Таким образом, по «числу компонентов» выигрыша тут не получается. Удивительно, но внешние Etherent PHY — довольно дорогие чипы, несколько долларов за корпус. Но примерно столько же стоит весь чип от WIZnet целиком, кремний-то в массовом производстве стоит копейки. Да, трансформатор для WIZnet тоже потребуется, но значительного выигрыша от встроенного MAC-контроллера по цене не получится. Второе: программная поддержка MAC/PHY довольно сложна и объёмна. Например, для STM32Fxx7 исходные коды Ethernet драйвера занимают примерно 100К текста на C. (статья про PIC-и с Ether). Кроме драйвера Etherent нужен еще сам стек TCP/IP (LwIP или uIP). Кроме размера не стоит забывать и о скорости исполнения (хотя… STM32 уже по скорости превышает первый Pentium и про ограничение производительности можно забыть).

Но если ли преимущества «полного» программного IP-стека на микроконтроллере? Конечно есть. Рассмотрим их потом, а пока продолжим.

Третий вариант — это глубоко любимый «эмбеддерщиками» чип SPI Ethernet контроллера Microchip ENC28J60 (и чуть менее известный Silabs CP2200). Обратите внимание, это именно настоящие контроллеры Ethernet, а не TCP/IP сопроцессоры. Все что умеет чип — принимать и получать Etherent фреймы. То есть, стек TCP/IP все равно придется делать самим. Да, стеков есть несколько готовых, от замечательных небольших до классических LwIP и uIP.

Но все же, такое решение скорее напрямую конкурирует со встроенным MAC контроллером, да и цена на чип — те же несколько долларов и около 5..7$ за готовый модуль (плата с чипом, трансформатором и гнездом RJ45) на ebay/aliexpress. Так что вернемся к продуктам фирмы WIZnet.

Первое устройство W3100 было выпущено довольно давно, в 2001 году. Это был полноценный TCP/IP IOcP (сопроцессор), который предлагал некий средний путь между COM-портом и MAC-контроллером, реализуя идею TCP/UDP «сокетов» внутри чипа. Физически же W3100 был не очень удобный двухчиповый набор MAС/PHY и настоящая популярность в среде «ардуинщиков» (AVR) и «пиководов» пришла к устройству W5100. Достаточно сказать, что «официальный» Arduino Ethernet Shield собран именно на W5100.

С тех пор прошло немало времени и стали заметны недостатки W5100: чип довольно сильно греется, скорость сети всего 10Mbit/s, чип имеет несколько (документированных в Errata) глюков, корпус довольно большой из за наличия параллельной шины, несколько нетривиальная реализация SPI. Неудивительно, что вскоре WIZnet представила следующую модель: W5200. Этот чип научился работать на 100Mbit, засыпать и экономить электричество, лишился параллельного подключения, в нем остался чисто SPI, что резко уменьшило число ног. (Для поддержки параллельной шины у него есть «братик» W5300).

Внедрение и освоение W5200 пошло на ура! и продолжается до сих пор, выпускаются модули (начиная от «родного» WizNET WIZ820io) и кончая различными ардуиновскими шилдами, желающие могут легко их найти. Например, чуть менее «официальный» Ethernet Shield V2.0 из проекта Seeeduino или Ethernet Shield for Arduino от Dfrobot. А тут большой список других модулей (список реально большой, мотаем вниз).

И вот наконец, в октябре 2013 WIZnet анонсировала новый W5500 о котором собственно и планировалось рассказать в этой статье (извините за такое затянувшееся предисловие). Чип получил чуть более удобный
для ЛУТ-самодельщиков корпус 48LQFN, быстрый «пакетный» SPI и Cortex M0 внутри, что позволило уменьшить техпроцесс и потребляемую мощность. В целом же чип выглядит как «W5200 на стероидах». Сравнение W5200 и W5500.

Следом WizNET выпустила модуль WIZ550io (там же есть и схема), а чтобы не остаться в стороне от «ардуиномании» вскоре сама же WIZnet выпустила еще и Arduino Shield (это просто пассивный переходник с Arduino на WIZ550io).

Но давайте не будем рассматривать Arduino, это сделают и без нас (например прямо тут, на Хабре: Ethernet термометр на основе Arduino и т.д.) а попробуем прикрутить W5500 к какому-нибудь популярному микроконтроллеру, например к тому же STM32. Даже сама компания WizNET в курсе этого замечательного семейства и выпускала модуль W5200E01-M3 на предыдущем W5200 ( STM32F103C8 и FT232RQ для USB2Serial). Вскоре вышел и модуль на STM32 + W5500: WIZ550web.

Кстати, в марте 2014 на Circuitcellar был объявлен конкурс Connect The Magic (до августа 2014) на разработку с использованием W5500, а WIZnet скинула цены на чипы и модули (купить). В конкурсе можно было выиграть до 15.000$. Подробности на сайте, там же есть отличная статья.

Во второй части (если я её допишу. ) мы попробуем прикрутить W5500 (а точнее WIZ550io) к маленькой отладочной плате от компании Shenzhen LC Technology Co.,Ltd. и выиграть 15.000$. Платки продаются на Aliexpress по 7.99$ и даже упоминались несколько раз на Хабре.

Рассмотрим управление устройствами на расстоянии на базе Arduino Ethernet Shield, какие бывают, преимущества и недостатки.

Веб-сервер на Ардуино

Как уже понятно, для связи Ардуино по LAN сети нужна специальная плата расширения.

Так выглядит шилд Ethernet Shield w5100:

Шилд ethernet shield w5100

Работа с этим сетевым шилдом проще всего осуществляется с платы Arduino UNO R3. Безусловно, вы можете использовать её и с другими платами, на фото изображено подключение на примере самой распространённой версии. При использовании с другими вариантами, например, Nano нужно соединить соответствующие выводы на плате и шилде с помощью перемычек.

Ардуино выступает в роли сервера, поэтому нужно обеспечить подключение к сети, для этого используется Ethernet кабель. Сразу стоит отметить, что при подключении витой пары, кабеля RJ-45, непосредственно к плате, а не через роутер, вы должны использовать вариант обжимки «Crossover».

Работает плата расширения на скоростях 10 или 100 мбит/с, при работе на высшей скорости вы можете видеть уведомление – об этом сигнализирует светодиод «100M». Он расположен ниже сетевого разъёма.


На шилде расположен слот для SD-карты – вы можете получить доступ к данным через сеть. Таким образом, вы получите домашнее облако на Arduino.

С картой памяти микроконтроллер работает по той же SPI шине, что и с шилдом. Определите, какие выводы на вашей плате работают с этим интерфейсом, и не забудьте о том, что их нельзя задействовать при разработке вашей умной системы. Например, для платы Arduino Mega выводы: 50, 51, 52, а для Duemilanove: 12, 12, 13.

Модуль может вызывать прерывания в Ардуино. Это нужно для уведомления микроконтроллера о разного рода событиях, что очень полезно.

Миниатюрные системы для сетевого доступа и беспроводной доступ по GSM

Шилд W5100 довольно громоздкий, и в связке с миниатюрными pro mini и nano выглядит нелепо, да и далеко не всегда нужна на шилде карта памяти.

Вы можете обратить свое внимание на модель arduino Ethernet модуля W5500, тоже на базе чипа WIZnet, как и предыдущий вариант.


Связь с микроконтроллером осуществляется по тому же SPI интерфейсу, а сам чип построен на Cortex M0. Чип W5500 меньше греется и имеет большую мощность, нежели у W5100 (значительно сильнее грелся).

В отличие от младших чипов, добавлен режим параллельной 8 битной шины. Но и ток потребления 160 мА при работе на полной скорости – 100 м/бит.

Другой вариант миниатюрного шилда – это arduino enc28j60. Главное его преимущество – это то, что он дешевле в 2-3 раза, чем W5500, например.

Я сделал акцент на том, что это главное преимущество, потому что в целом, если есть возможность, лучше использовать W5500, т. к. на них в сети больше информации по работе и настройке, а также есть различные проекты.

28J60 отлично подойдёт для интернета, для простейших мелких задач, типа Ethernet термометра. Микросхема произведена компанией Microchip, работает по тому же SPI интерфейсу, что и предыдущие. Библиотеки для работы с ней отлично подходят для Ардуино на 168/328 ATmega, в их числе Uno, Nano, Pro Mini. Для Mega нужно правильно назначить пины.

Но еще более интересный вопрос – это беспроводная связь с Ардуино. Это стало возможно благодаря GSM модулям, а с помощью w5500 вы можете осуществлять связь только по сети. В шилд или модуль для Ардуино вставляешь sim-карту, и вы можете управлять своей автоматизацией с помощью SMS или вызова.

Этого набора функций достаточно как для мониторинга чего-либо, так и для управления умным домом на расстоянии, но о сферах применения будет расписано позже.


Питание M590E может осуществляться от li-ion аккумулятора или любого другого источника на 3,3 - 4,8 В с током порядка 1 ампера (номинальным 0.6 А).

Сфера применения и проекты с сетевыми шилдами

Ардуино – одна из самых дешевых основ для проекта умного дома. Кроме домашнего облака и доступа к файлам можно реализовать удаленное управление исполнительными механизмами любых типов.

К таким проектам можно отнести и другую автоматизацию, например, управление поливом, освещением и проветриванием в теплице.

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

Если есть интернет связь за городом – Ethernet технологии придут на помощь, на фото ниже вы видите окно HTML страницы, находящейся на сервере на базе W5500.

В таком виде представлено управление группой из 4-х реле с отслеживанием их активности, по нажатию кнопки refresh.


А подключается всё по такой схеме:


Это на примере модуля w5500. Схема не сложная, но функциональная – вы можете сделать вот такую мульти задачную реле-станцию.

Только использовать вместо MEGA младшие платы Ардуино.

Что касается мобильной передачи данных, то M590E предназначен для так называемых M2M приложений.


Команда выше отправит СМС на указанный номер, точка с запятой обязательны.


Это незаменимо в проектировании охранных комплексов и устройств.

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

Модули Arduino Ethernet и GSM помогут добиться этого, а в комбинации представляют собой практически бесперебойную систему удаленного управления и контроля. Комбинировать разные способы передачи информации, безусловно, нужно для повышения надежности связи и универсальности всей конструкции.

Читайте также: