Ethernet модуль
Зміст
Загальні відомості
Arduino Ethernet Shield W5100 - багатофункціональна плата розширення, дозволяє управляти платою Arduino через локальну мережу або інтернет. Використовується для отримання інформації у роботі з мережею, дозволяє розмістити свій власний веб сайт або керувати Ардуіно по мережі (на даній платі розширення також є слот для microSD карти пам'яті).
Для управління платою використовується базова бібліотека Arduino IDE - Ethernet library, а для роботи microSD картою - SD library. Для роботи, крім Ардуіно і власне Шилда також знадобиться мережевий кабель (Вита пара), причому, якщо підключати плату безпосередньо комп'ютера (а не через роутер), то він повинен бути обжатий за схемою Crossover. Wiznet W5100 підтримує стек мережевих протоколів IP і дозволяє працювати як з TCP , так і з UDP - протоколами. При цьому мікросхема може обслуговувати до чотирьох одночасно відкритих сокет - з'єднань.
Для підключення плати розширення до Ардуіно передбачений спеціальний роз'єм , який представляє собою металеві виводи(" папа ") з одного боку плати та гнізда (" мама ") - з іншого боку . Така конструкція дозволяє підключити до Ардуіно відразу кілька плат розширення , розмістивши їх одну над іншою . Остання версія плати розширення підтримує стандарт терморегулятора 1.0 , прийняту в моделі Arduino UNO R3.
На платі передбачений роз'єм для підключення micro - SD карти пам'яті , що дає можливість зберігання файлів і організації мережевого доступу до них . Пристрій сумісний з Arduino Uno і Mega ( використовується бібліотека Ethernet ) . Для роботи з вбудованим microSD - кардрідером служить бібліотека SD . Для активізації кардридера за допомогою цієї бібліотеки в якості висновку SS слід вказувати висновок 4. Найперша версія плати розширення Ethernet містила повнорозмірний роз'єм для SD - карт , який в даний час не підтримується.
У пристрої також реалізована функція управління скиданням Ethernet - модуля W5100 при подачі живлення . Необхідність в цій функції обумовлена тим , що попередні версії плати розширення були несумісними з Arduino Mega , через що доводилося вручну скидати Ethernet - модуль після кожної подачі живлення . Поточна версія плати розширення підтримує технологію Power over Ethernet ( PoE ) і може працювати зі спеціальним модулем , що дозволяє отримувати енергію через Ethernet - кабель , який являє собою звичайну виту пару категорії 5 :
- Модуль сумісний зі стандартом IEEE802.3af.
- Низький рівень вихідних пульсацій і шуму ( 100 мВ від піку до піку ).
- Діапазон вхідної напруги від 36В до 57В.
- Захист від перевантажень і коротких замикань.
- Вихідна напруга 9В.
- DC - DC перетворювач з високим ККД : 75 % при 50 % навантаженні.
- Ізоляція між входом і виходом в 1500 В.
Примітка: оскільки обидва пристрої, W5100 і SD-карта пам'яті, підключені до однієї SPI-шині, то в кожен момент часу активним може бути тільки один з них. При використанні в проекті обох пристроїв, розподіл доступу до шини контролюється відповідними бібліотеками. У платі розширення використовується стандартний мережевий роз'єм RJ45 . Також на платі розширення розташовано декілька світлодіодів - індикаторів :
- PWR : показує наявність живлення основного пристрою і плати розширення
- LINK : світиться , якщо є з'єднання з мережею ; блимає під час передачі або отримання даних
- FULLD : світиться , якщо мережеве з'єднання підтримує повнодуплексний режим роботи
- 100M : світиться , якщо мережеве з'єднання відноситься до класу 100 Мб / с ( на відміну від мереж 10 Мб / с )
- RX : блимає в процесі отримання даних
- TX : блимає в процесі відправлення даних
- COLL : інформує про виявлення мережевих колізій
Плата розширення Arduino Ethernet може генерувати сигнали переривань , які дозволяють повідомляти Ардуіно про різні події , що виникають в модулі W5100 . Для цього на платі передбачена перемичка " INT ".
Характеристика
Ethernet контролер W5100 (апаратна реалізація стека протоколів TCP / IP)
- Слот для Micro SD карти.
- Рівень напруги 5 / 3.3В.
- 10Mb / 100Mb Ethernet з підтримкою PoE.
- сумісна з Arduino Uno і Arduino Mega.
Мікросхема апаратно реалізує наступні протоколи різних рівнів системи OSI:
- TCP, UDP, IPv4, ICMP, ARP, IGMP і MAC.
- Апаратна підтримка протоколу PPPoE (Point-to-point over Ethernet) з PAP / CHAP протоколами аутентифікації.
Клієнт-серверний принцип роботи пристрою
Роль клієнта відіграє браузер , за допомогою якого здійснюється підключення до сервера . Основне призначення клієнта - це посилати різні запити серверу , наприклад запит на відображення певної інформації (GET) або запит про передачу будь-яких даних (POST). Сервер - це власне ethernet shield . Він працює відповідно до HTTP протоколом . У скетчі повинна бути вказана ip адреса, за якою відбуватиметься отримання доступу до сервера (наприклад 192.168.0.1). Основні функції сервера - це відстеження запитів клієнта , виконання різних функцій на підставі отриманих даних і відображення результату у вигляді HTML коду.
Розберемо цикл роботи пристрою для нашого прикладу . Після залиття скетчу і підключення його до комп'ютера за допомогою мережевого кабелю , ethernet shield знаходиться в режимі очікування . Як тільки перейти за заданою ip адресою , на сервер потрапить GET запит , який свідчить про те , що необхідно видати сторінку. Сервер формує цю сторінку і віддає назад на клієнта , де браузер перетворює HTML код в відповідний текст і елементи управління , а сервер знову переходить в режим очікування . Після того формується форма , яка дозволяє включити вибрані реле . А тоді вже , після відзначення галочками відповідні реле і натиску на кнопку " Refresh " , на сервер відправляється POST запит , в якому передаються відповідні дані про реле , які необхідно включити . Далі ці дані виділяються і зберігаються , а потрібні реле включаються . Після цього користувачеві знову видається HTML сторінка , але тепер на ній заздалегідь відзначені галочками реле , які включені на даний момент . Оскільки користувач сам формує HTML код , то є можливість видавати інформацію про значеннях будь-яких датчиків , а також отримувати будь-яку потрібну користувачеві інформацію, що управляє .
Мікросхема WIZnet W5100
У якості процесора плати розширення служить Мікросхема WIZnet W5100. Вона являє собою однокристальне Ethernet-рішення з вбудованим стеком TCP-IP. Такий стек часто називають «зашитим». Великий масив можливостей для доступу в Інтернет, які надає W5100, поміщаються в компактному 80-вивідному корпусі LQFP. Крім вбудованого стека TCP-IP, W5100 містить вбудовану IEEE 802.3 10Base-T і 802.3u 100Base-TX сумісну реалізацію MAC і PHY рівнів. Можна очікувати, що раз стек TCP-IP забезпечує все необхідне, то пристрій можна відразу підключити до мережі Ethernet. Стек TCP-IP в W5100 підтримує протоколи TCP, UDP, ICMP і ARP. Цього достатньо для більшості вбудованих мережевих Ethernet-додатків, що розробляються звичайними користувачами. Крім того, пристрій W5100 підтримує PPPoE, що дозволяє використовувати його в додатках ADSL.
Більшість однокристальних Ethernet - рішень , пропонованих в даний час , містять достатню кількість спеціальної буферної пам'яті для прийому і передачі . Мікросхема W5100 не є винятком і має 16 кбайт внутрішньої буферної пам'яті . Для забезпечення роботи з невеликими мікроконтролерами в W5100 передбачено три способи обміну інформацією з керуючим мікроконтролером: через SPI і за допомогою прямого або непрямого доступу до пам'яті. Для кращої сумісності з більшістю сучасних мікроконтролерів напруга живлення W5100 зроблена рівним 3,3 В. Це дозволяє безпосередньо підключатися до малоспоживаючих мікроконтролерів, які теж живляться від цієї напруги. Мікросхема W5100 може також працювати з розробленими раніше системами з напругою живлення 5 В, тому що її підсистема введення / виводу може витримувати таку напругу. W5100 підтримує до чотирьох одночасно активних сокетів .
Таким чином , все , що користувач повинен знати , - це основи програмування сокетів , тому що W5100 розроблена так , щоб якомога зручніше надати все необхідне для роботи вбудованого пристрою з Ethernet .
Загальні властивості і W5100
- Апаратна підтримка стека протоколів TCP / IP: TCP, UDP, IPv4, ICMP, ARP, IGMP, MAC
- Одночасна і незалежна підтримка 4-х з'єднань;
- Підтримка 10BaseT / 100BaseTX в повнодуплексному режимі;
- Висока продуктивність до 25Mbps;
- Інтерфейси підключення до мікроконтролеру: Direct (Clocked), Indirect (Clocked), SPI (режими 0 і 3);
- Вбудований 16К блок двохпортовой статичної пам'яті для буферів даних TX / RX;
- Напруга живлення 3,3 В; лінії введення / виводу підтримують рівні сигналів 5,0В;
- 0,18 мкм CMOS технологія;
- Відповідність RoHS-стандарту.
Приклад написання програми
Код, який наведений нижче, включає світлодіод в залежності від URL адреси, який відсилається на Arduino:
/* Web Server - для прикладу Дає можливість включити і виключити світлодіод при вводі різних URL адрес в браузері Для того, щоб включити: http: //ВАША_IP_АДРЕСА/$1 Для того, щоб виключити: http: //ВАША_IP_АДРЕСА/$2 Схема підключення: - Ethernet shield підключається до пінів 10, 11, 12, 13 - Підключіть світлодіод до піна D2, а другу ніжку до GND через регістр 220 Ом -/ #include #include boolean incoming = 0; // нижче необхідно ввести MAC адресу і IP адресу вашого контролера. // IP адреса буде залежати від вашої локальної мережі: byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 }; IPAddress ip(191,11,1,1); //<<< ВВЕДІТЬ ВАШУ IP АДРЕСУ В ЦЬОМУ РЯДКУ!!! // Ініціалізація бібліотеки Ethernet server library // з використанням IP адреси і порту, який ви вказали // (за замовчуванням HTTP порт встановлюється на 80): EthernetServer server(80); void setup() { pinMode(2, OUTPUT); // запуск Ethernet і підключення сервера: Ethernet.begin(mac, ip); server.begin(); Serial.begin(9600); } void loop() { // отримуємо дані від клієнта EthernetClient client = server.available(); if (client) { // HHTP запит закінчується пустим рядком boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); // якщо ви дійшли до кінця рядка і наступний рядок пустий, // http запит закінчується і можна вивести відповідь //рахує рядок URL від $ від першого пробілу if(incoming && c == ' '){ incoming = 0; if(c == '$'){ incoming = 1; } // перевірка рядка URL. В ній присутні $1 або $2 if(incoming == 1){ Serial.println(c); if(c == '1'){ Serial.println("ON"); digitalWrite(2, HIGH); } if(c == '2'){ Serial.println("OFF"); digitalWrite(2, LOW); } } if (c == '\n') { // починаємо новий рядок currentLineIsBlank = true; } else if (c != '\r') { // отримуємо символ на поточному рядку currentLineIsBlank = false; } } } // даємо веб-браузеру час для отримання даних delay(1); // закриваємо з'єднання: client.stop(); }
Перелік посилань
1. Якименко Ю.І. Терещенко Т.О. Сокол Є.І. «Мікропроцернатехніка» // К.:Кондор – 2004.
2. Методичні вказівки щодо виконання курсової роботи.
3. «Мікропроцесори та мікропроцесорні комплекти інтегральних мікросхем», довідник, під ред. В.А. Шахнова, том 2, М., «Радио и связь», 1988.
4. www.arduino.cc
5. Матеріал дистанційного курсу «Електроніка і мікропроцесорна техніка»