Підключення мікроконтролера до локальної мережі

Локальна мережа - річ прикольна і цікава. Місце проживання кожного гику, включаючи його самого, обплутаний кручений парою від верху до низу. Чому б не використати все це на користь справи?

Тим більше, існує мікросхема, що дозволяє микроконтроллеру прекрасно почувати себе в мережі 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).


Ось, в загальному вигляді, структурна схема девайса:

Підключення мікроконтролера до локальної мережі

Тут ніби-б все просто. ENC28J60 містить в собі фізичний рівень (PHY) і канальний рівень (MAC) Ethernet. Микроконтроллеру залишається тільки підтягати пакети для відправки і забирати прийняті через SPI.

У прошивці мікроконтролера реалізований простенький IP-стек, що дозволяє прикладної задачі спілкуватися з завданнями на інших системах за допомогою стандартних протоколів.

Більш детально про все це буде в наступних частинах.

модель OSI


А що це за рівні, про які я все говорю? Якщо ти знаєш, цю частину можна пропустити.

Модель OSI - корисна річ для розуміння того, як працює мережа. Тут про неї дуже коротенько.

Дана модель розбиває комунікаційну систему на прості частини, звані рівнями. Кожен рівень обслуговує наступний (верхній) та обслуговується попереднім (нижнім) - вертикальні зв'язки. Особливості функціонування кожного рівня приховані від інших рівнів.

Взаємодіє дві системи, відповідно є і по два примірники кожного рівня. На кожному рівні використовуються свої протоколи (горизонтальні зв'язки).

Підключення мікроконтролера до локальної мережі

Всього є 7 рівнів моделі OSI.

Підключення мікроконтролера до локальної мережі

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

фізичний рівень


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

канальний рівень

Простіше кажучи, канальний рівень - це те, що дозволяє посилати фрейми інших вузлів локальної мережі і приймати фрейми від них.

Мережевий рівень


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

Простіше кажучи, мережевий рівень - це те, що дозволяє відправляти пакети будь-яким вузлів і приймати пакети від будь-яких вузлів.

транспортний рівень


Транспортний рівень відповідає за зв'язок вузлів. Скажімо, додаток хоче відправить дані іншого вузла. Транспортний рівень представляє ці дані у вигляді пакету мережевого рівня (або пакетів) і відправляє. Якщо використовується протокол з установкою з'єднання, транспортний рівень займається також установкою і контролем з'єднання. UDP і TCP - протоколи транспортного рівня.

прикладний рівень


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

Впрініцпе, поки це все. В наступній частині буде ближче до справи. Будемо писати бібліотеку для роботи з ENC28J60. )

EasyEDA: безкоштовний Хмарний CAD

Прямий ефір

Схожі статті