Web-сервер на enc28j60 і микроконтроллере avr для управління пристроями по tcp

Сучасні інформаційні технології / Комп'ютерна інженерія

Хмельницький національний університет, Україна

Web-сервер на ENC28J60 і микроконтроллере AVR

для управління пристроями по TCP / IP мережі

Для віддаленого управління пристроями, зняття параметрів з датчиків використовуються мікроконтролери AVR. Для їх підключення до мережі найбільш популярні мікросхеми W5100 і ENC28J60. У першій мікросхемі апаратно реалізовані TCP / IP і Ethernet протоколи, а в другій - лише Ethernet. Незважаючи на це контролер ENC28J60 в даний час є найбільш популярним. Для нього також існує кілька бібліотек для роботи в мережі з різними сервісами. Тут пропонується схема підключення ENC28J60, наприклад до ATmega128L, а також програма, яка дозволить функціонувати пристрою в режимі найпростішого web - сервера, керуючого 3-ма пристроями і знімає показання з датчика температури DS18B20. Однак на сьогоднішній день доцільність самостійного проектування схеми під сумнівом завдяки дешевизні готових модулів, проте, іноді окремий модуль неприйнятний, а спроектоване пристрій може бути дешевше, ніж зібране з модулів. Для підключення до Ethernet по кручений парі розглянемо, наприклад, роз'єм HR911105A, який є найбільш оптимальним варіантом використання спільно з ENC28J60. Він є дешевим і діставати. На його основі представлена ​​схема на малюнку 1. У якості контролера обрана мікросхема ENC28J60 в корпусі DIP28. На схемі увагу заслуговує резистор R13, наприклад, в описі ENC28J60 він зазначений як 2kОм. Однак у деяких ревізій ENC28J60 є більш оптимальні значення резистора. Так для ревізії 1 і 4 резистор повинен мати значення 2,7кОм, а для ревізії 5 і 7 - 2,32кОм. Дізнатися ревізію можна тільки шляхом читанням відповідного регістра. З цією метою спочатку на монтажній платі встановлюється ENC28J60, потім читається ревізія, і тільки потім встановлюється необхідний за номіналом резистор. Однак, установка номіналів резистора 2,32кОм або 2кОм, забезпечує працездатність схеми на рис.1, однак може знизитися дальність роботи. Але для умов офісу, дисплейного класу це прийнятно.

Web-сервер на enc28j60 і микроконтроллере avr для управління пристроями по tcp

Рис.1. Схема контролера ENC28J60 за допомогою роз'єму HR911105A

Досель L1 для роботи мікросхеми ENC28J60 не потрібен, він використовується в якості фільтра. Якщо пристрій не містить схильних до перешкод частин, таких як радіо - модулі, точні ADC тощо він може бути відсутнім. Як дросель можна використовувати кільце з фериту діаметром 5мм з декількома витками приводу або резистор на 0 Ом.

Полярність включення жовтого світлодіода (висновки 9 і 10 роз'єму HR911105A) визначає режим роботи мікросхеми ENC28J60 - підлозі дуплекс або повний дуплекс. У документації до мікросхеми включення представлено як на малюнку 2.

Web-сервер на enc28j60 і микроконтроллере avr для управління пристроями по tcp

Рис.2. Полярність включення жовтого світлодіода

Однак можлива модернізація представленої схеми з метою спрощення або використання наявних у розпорядженні деталей. У разі відсутності роз'єму HR911105A можна використовувати трансформатори, які встановлюються на мережевих картах комп'ютерів. Наприклад, на рис.3 представлена ​​схема включення фільтра-трансформатора 20F001N YCL. Позначення на схемі малюнка 3 точки A B C D відповідають позначенням схеми малюнка 1. До цих точках виконується підключення трансформатора замість роз'єму HR911105A. Світлодіоди, які знаходяться в роз'ємі HR911105A, при підключенні трансформатора встановлюються додатково.

Web-сервер на enc28j60 і микроконтроллере avr для управління пристроями по tcp

Рис.3. Підключення трансформатора 20F001N YCL.

У деяких випадках через відсутність Ethernet - трансформаторів, роз'ємів типу HR911105A або побудови бюджетного варіанту пристрою можна виконати підключення контролера ENC28J60 по трансформаторній схемі за умови, що маршрутизатор знаходиться в безпосередній близькості від створеного пристрою. У цьому випадку схема підключення представлена ​​на малюнку 4.

Web-сервер на enc28j60 і микроконтроллере avr для управління пристроями по tcp

Рис.4. Трансформаторній схемі підключення.

При такій схемі підключення стандарт IEEE 802.3 не виконується, але пристрій працює.

Web-сервер на enc28j60 і микроконтроллере avr для управління пристроями по tcp

Рис.4. Схема підключення ATmega128L

Незважаючи на те, що при послідовному програмуванні ATmega128 використовується той же модуль SPI що і при звичайній роботи мікроконтролера, є одна важлива відмінність: висновки MOSI / MISO модуля введення-виведення SPI, які поєднані з PB2 і PB3, не використовуються при програмуванні. Замість них при послідовному програмуванні використовуються PE0 і PE1 для введення і виведення даних. Тому на рис.1 окремо представлена ​​шина для програмування (Serial programming). Шина, позначена на рис.1 як SPI ENC28J60 підключається до модуля з чіпом ENC28J60, схема якого представлена ​​на малюнку 1.

На малюнку 5 представлена ​​фотографія зібраного пристрою на монтажній платі. На ній також позначені основні функціональні елементи.

Програмування пристрою виконувалося за допомогою інтегрованого середовища розробки Arduino. Гідність її в тому, що в ній знаходиться багато корисних бібліотек, зокрема для роботи з шиною OneWire і чіпом ENC28J60.

Web-сервер на enc28j60 і микроконтроллере avr для управління пристроями по tcp

Мал. 5. Фотографія web-сервера на монтажній платі

У програмному середовищі Arduino описані порти введення-виведення для обмеженого числа мікроконтролерів. Тому проблема полягає в тому, щоб описати розташування висновків контролера ATmega128 в самому середовищі розробки так і в бібліотеці для чіпа ENC28J60. Для цього коригуємо файл d: \ arduino-1.0.3 \ hardware \ arduino \ variants \ standard \ pins_arduino.h.

static const uint8_t SS = 10;

static const uint8_t MOSI = 11;

static const uint8_t MISO = 12;

static const uint8_t SCK = 13;

static const uint8_t SS = 8;

static const uint8_t MOSI = 10;

static const uint8_t MISO = 11;

static const uint8_t SCK = 9;

У файлі d: \ arduino-1.0.3 \ libraries \ etherShield \ enc28j60.c бібліотеки ENC28J60 також виконуємо виправлення.

#define ENC28J60_CONTROL_CS 10

#define SPI_MOSI 11

#define SPI_MISO 12

#define SPI_SCK 13

#define ENC28J60_CONTROL_CS 8

#define SPI_MOSI 10

#define SPI_MISO 11

#define SPI_SCK 9

Нижче наведена програма для управління трьома світлодіодами (виконавчими механізмами) і зчитування температури з датчика DS18B20. Слід звернути увагу, що в порівнянні із завданням на початку сторінки програма розширена до 3-х світлодіодів. Вони підключені до висновків мікроконтролера 28, 30, 32.

static uint8_t ip [4] =; static uint16_t port = 80;

ETHER_28J60 e; OneWire ds (6); char buf [30];

e.setup (mac, ip, port);

pinMode (3, OUTPUT); pinMode (5, OUTPUT); pinMode (7, OUTPUT);>

int freeRam ()

return (int) v - (__brkval == 0. (int) __heap_start. (Int) __brkval);

ds.search (addr); ds.reset (); ds.select (addr);

ds.write (0x44,1); // start conversion, with parasite power on at the end

ds.write (0xBE); // Read Scratchpad

На малюнку 6 показаний результат роботи програми в web - браузері

Web-сервер на enc28j60 і микроконтроллере avr для управління пристроями по tcp

Рис.6. Web - інтерфейс сервера

Для зняття даних з температурного датчика додатково використовується бібліотека OneWire. З досвіду роботи бібліотеки etherShield і ETHER_28J60 дозволяють на запит від клієнта відправити тільки один пакет. Тому створити сторінку, розмір якої не вкладається в один пакет Ethernet (приблизно 1500 байт) може привести до додаткових складнощів в написанні програми. Також в пам'яті мікроконтролера необхідно замовити другу буфер об'ємом 1500 байт. Для того щоб запрацювала програма для управління 3-ма світлодіодами в файлі ETHER_28J60.cpp бібліотеки ETHER_28J60 внесена наступна зміна:

#define BUFFER_SIZE 1500

В іншому випадку web - сервер зависав.

Ethernet модуль на базі чіпа W5100 і бібліотеки Ethernet від Arduino дозволяє обмінюватися необмеженою кількістю пакетів, тому на його основі можливе створення простого універсального web - сервера.

Схожі документи:

900 секунд насервер DDNS відправлятиметься інформація про клієнта. Література 1. Мясищев А.А. Web -сервернаENC28J60 і мікроконтроллереAVRдляуправленіяустройстваміпоTCP / IPсеті. [Electronic.

Схожі статті