Відмінності між версіями «Ethernet модуль»

Рядок 68: Рядок 68:
 
== Приклад написання програми ==
 
== Приклад написання програми ==
 
Код, який наведений нижче, включає світлодіод в залежності від URL адреси, який відсилається на Arduino:
 
Код, який наведений нижче, включає світлодіод в залежності від URL адреси, який відсилається на Arduino:
 +
 
/*
 
/*
  
Рядок 84: Рядок 85:
 
Схема підключення:
 
Схема підключення:
  
* Ethernet shield підключається до пінів 10, 11, 12, 13
+
@ Ethernet shield підключається до пінів 10, 11, 12, 13
  
* Підключіть світлодіод до піна D2, а другу ніжку до GND через регістер 220 Ом
+
@ Підключіть світлодіод до піна D2, а другу ніжку до GND через регістер 220 Ом
  
*/
+
@/
  
 
#include
 
#include

Версія за 14:23, 27 травня 2017

Загальні відомості

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.

Загальні властивості і 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 Ом

@/

  1. include
  1. 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. Матеріал дистанційного курсу «Електроніка і мікропроцесорна техніка»