Notice: Memcache::get(): Server localhost (tcp 11211) failed with: Connection refused (111) in /home/a146/www/we.easyelectronics.ru/engine/lib/external/DklabCache/Zend/Cache/Backend/Memcached.php on line 134
Подключение микроконтроллера к локальной сети / Связь железа с компьютером. / Сообщество EasyElectronics.ru

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

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

Тем более, существует микросхема, позволяющая микроконтроллеру прекрасно чувствовать себя в сети Ethernet. А именно, ENC28J60, разработка вражеской компании Microchip. Об её использовании мы и поговорим.

Вообще-то, Ethernet — достаточно обширная тема. В один пост явно не поместится. Так что частей будет несколько.

Эта первая часть, и как обычно, — вводная и обзорная.

А зачем это нужно?


С точки зрения микроконтроллера, локальная сеть — лишь ещё один интерфейс «наружу». Зачем использовать именно его, а не простейший RS-232, скажем?

  • Это удобно. Любая нормальная операционная система имеет нативную поддержку сети и API для работы с ней. Много стандартного софта умеет работать в сети и сможет обращаться к нашему девайсику.
  • Девайс будет доступен как минимум с любого компа, подключенного к локальной сети, а максимум — вообще с любого компа, имеющего доступ в интернет. В том числе, по беспроводному соединению — к девайсу можно будет обращаться, например, с ноутбука, не привязывая себя к девайсу проводами.
  • Девайс сам сможет выходить в интернет и получать различную информацию — от точного времени до прогноза погоды и последних новостей (хм, ну конечно если памяти у МК хватит на всё это).
  • Это быстро. 10 мбит/с — более чем прилично для микроконтроллерного девайсика.
  • Девайс больше не привязан к компу проводами — максимальные 100 м для витой пары не идут ни в какое сравнение с «классическими» интерфейсами.
  • Это просто. Нет, правда! IP-стек мне кажется куда проще и логичнее чем, скажем, USB.

Всё это открывает возможности для создания множества прикольных и необычных девайсов.

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

Интересно? Поехали! :)

Disclaimer


Стоит сразу сказать что здесь подразумевается под Ethernet и что это есть на самом деле.

Ethernet — группа стандартов IEEE 802.3, описывающая различные технологии локальных сетей. В этих стандартах определён общий канальный уровень и набор технологий физического уровня (использующих для передачи данных оптоволокно, витую пару, коаксиал, с разными скоростями, etc.).

Здесь же под Ethernet будет подразумеваться конкретный стандарт IEEE 802.3i, который и поддерживается ENC28J60. В этом стандарте физический уровень — это 10BASE-T, 10 мбит/с по витой паре (Twisted pair).

The Plan


Вот, в общем виде, структурная схема девайса:

The Plan

Здесь вроде-бы всё просто. ENC28J60 содержит в себе физический уровень (PHY) и канальный уровень (MAC) Ethernet. Микроконтроллеру остаётся только подтаскивать пакеты для отправки и забирать принятые через SPI.

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

Более подробно обо всём этом будет в следующих частях.

Модель OSI


А что это за уровни, о которых я всё говорю? Если ты знаешь, эту часть можно пропустить.

Модель OSI — полезная вещь для понимания того, как работает сеть. Здесь о ней очень кратенько.

Данная модель разбивает коммуникационную систему на простые части, называемые уровнями. Каждый уровень обслуживает следующий (верхний) и обслуживается предыдущим (нижним) — вертикальные связи. Особенности функционирования каждого уровня скрыты от других уровней.

Взаимодействует две системы, соответственно есть и по два экземпляра каждого уровня. На каждом уровне используются свои протоколы (горизонтальные связи).

OSI Model

Всего есть 7 уровней модели OSI.

OSI Model Layers

У нас будет только 5 уровней.

Физический уровень


У нас это 10BASE-T. Физический уровень реализован в ENC28J60. Сюда входит витая пара и всё, что нужно для передачи данных по ней (драйверы, трансформаторы).

Канальный уровень


Канальный уровень Ethenet (MAC) тоже реализован в ENC28J60. Канальный уровень отвечает за передачу Ethernet-фреймов между узлами локальной сети (адресацию, проверку контрольной суммы, разрешение коллизий, etc.).

Проще говоря, канальный уровень — это то, что позволяет посылать фреймы другим узлам локальной сети и принимать фреймы от них.

Также к канальному уровню относится протокол ARP, который служит для преобразовния IP-адресов в MAC-адреса.

Сетевой уровень


Сетевой уровень отвечает за передачу пакетов. У нас это IP. IP-пакет спокойно может пройти через несколько разных сетей с различными технологиями физического и канального уровня.

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

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

Транспортный уровень


Транспортный уровень отвечает за связь узлов. Скажем, приложение хочет отправит данные другому узлу. Транспортный уровень представляет эти данные в виде пакета сетевого уровня (или пакетов) и отправляет. Если используется протокол с установкой соединения, транспортный уровень занимается также установкой и контролем соединения. UDP и TCP — протоколы транспортного уровня.

Прикладной уровень


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

Вприницпе, пока это всё. В следующей части будет ближе к делу. Будем писать библиотеку для работы с ENC28J60. :)



Все статьи цикла

Комментарии (41)

RSS свернуть / развернуть
Довольно любопытно.
А что за блок «развязка»? Это микросборка с трансформатором (или что там)?
0
  • avatar
  • Vga
  • 27 марта 2011, 22:28
Ага. Там сборка из трансформаторов и фильтров. Про железо в следующей части будет.)
0
Очень заманчиво смотрится WIZnet W5100 (у ардуино на ethernet платах применяют), меньше обвязки снаружи (PHY встроен). Одна засада — корпус 80 LQFP :( Но для джедаев лута не помеха… Покруче за решение ENC28J60 от Microchip.
0
Хм… обвязка везде одинаковая. Те же трансформаторы.
0
Главное превосходство — аппаратная поддержка TCP/IP :)
0
главный недостаток цена и доставаемость
1500р помоиму обошлась мне плата на WIZNET W5100
0
Да, цена немного кусается… Это полностью готовый модуль?
0
ой это я имел ввиду модуль на W5300
да вот ссылка www.efo.ru/doc/Wiznet/Wiznet.pl?2935
я у них и брал — $41,80 вышло год назад.
0
Вот теперь всё стало на свои места :)
Цена ENC28J60 примерно = W5100, мне больше нравится WIZnet.
Ещё вариант — потрошить старые сетевухи на предмет чипов RTL8201BL, RTL8019AS,… (тут много приключений, только настоящим экстремалам под силу)
0
не спора ради

ENC28J60-I/SO 86.21р
можно купить везде

W5100 цена далеко не 86.21р)))
кстати так и не нашел где купить

W5100 без сомнения круче
аппаратно реализует TCP, UDP, IPv4, ICMP, ARP, IGMP и MAC.
скорость как 100 так и 10
только уже за это можно переплачивать
оно того стоит
0
Я заказал снабжению вот этот: WIZ200WEB, стоимость около 1200 рублей, зато есть atmega 128 + память на борту, как придет может что напишу.
PS
Правда он на W5300
0
W5100 стоит около 150 чтоль рублей. Сам камень
0
тогда не на много больше
тогда тем более есть смысл задуматься
0
На eBay в $40 обойдется, по сравнению с шилдами енка 2 раза цена. но аппаратные стеки намного привлекательнее
0
хорошая статья, жду продолжение. Спасибо
0
Есть потребность в освоении. Ждем-с продолжения.
0
  • avatar
  • DVF
  • 27 марта 2011, 23:27
Отлично! Ждем продолжение. Сама вводная вполне так, информативная. Я потом все статьи путем манипуляции датой хронологически выложу и ссылочками обвяжу между собой.
0
Давно хотел попробовать подключить контролер к сети. Будем ждать продолжение.
0
На многих ARM контроллерах есть MAC уровень. К нему физику прицепить, транс и можно гонять траффик :)
0
На некоторых есть и физика уже :) Только дорогие они.
0
RTL8201 стоит порядка 3 баксов в розницу, транс стоит те же 2-3 бакса, stm32 с ethernet'ом я нашёл(взял первое, что попалось, stm32f107RB) в пределах 20$ за камень в розницу(8-12 баксов оптом). Итого — 25 баксов в худшем случае. Есть решение с физикой на кристалле дешевле? :)

ip-стек — uIP или lwIP.

Как-то так :)
0
STM32F107RCT6
ARM Cortex M3 MCU 72МГц, 128кб Flash, 48кб ОЗУ, Ethernet, 2x SPI, I2C audio class, 3xUSART, USB OTG, 2xCAN 2,0B, 2xАЦП 16 каналов, 51 I/O
210 руб в розницу
RTL8201CP-VD-LF
Single-Port 10/100M Fast Ethernet PHYceiver
35 рэ
разъем с трансом
тел TJ8P8C роз.в плату TS-50022
90 рэ
= 335 примерно 12 баксов, как то так
0
Я беру worst-case чтобы не огорчаться лишний раз :)
0
Актуальная тема. И начало интригует. Так что ждём продолжения банкета!
0
запариться чтоли, стырить на работе контроллер, физику, транс и сообразить статейку на тему lwIP и подобных радостей жизни… :)
0
хорошая статья, заставляет думать нестандартно… ато я все RS,USB… а тут весь мир :)
0
Присоединяюсь. Малоосвещаемая тема. Нужная.
0
присоединяюсь… тем более что у китайцев сетка в сборе прикуплена…
0
проц я надеюсь тоже от микрочипа будет?
0
Нее. Ещё не хватало))
0
Ну тогда надеюсь что хотьябы не на асемблере проект будет
на Си было бы прекрасно))))
0
да, на си было не плохо :) у меня валяется такая штука, хотел её к стм8 прикрутить, но подожду статьи :)
0
  • avatar
  • ZiB
  • 28 марта 2011, 10:18
Я тут подумал-да пофигу на чем
главное это описание принципов)))))
так что ждем продолжение
0
если честно в сети масса решений, но «свой» автор как-то роднее :)
0
Большое спасибо за начало и еще большее за будущее продолжение. Буду ждать с нетерпением продолжения. Тема действительно очень актуальная.
0
Статья вроде тянет на конкурсную.
0
Записался)
0
Тагды добей ее до конкурсных условий — тэг, плашка и тыды. В условиях конкурса все есть.
0
Добавил уже
0
Девайс больше не привязан к компу проводами — максимальные 100 м для витой пары не идут ни в какое сравнение с «классическими» интерфейсами.

бывали случаи когда локалка работала при длине кабеля ~300м, но не на 100 а на 10 мегабитах полный дуплекс.
а в бухтах по 305, 310 метров витухи.
0
+1
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.