ГЛАВНАЯ НОВИНКИ КАТАЛОГ СТАТЬИ КОРЗИНА Отправить письмо
Поиск


Введите слово для поиска.
Расширенный поиск
Разделы
0
3D принтеры
Arduino, разработка, программирование
CD, DVD диски, боксы
GSM, WI-FI, Ethernet, GPS, радио модули и комплектующие
  Рации, радиостанции, программаторы
RC модели и комплектующие
Вентиляторы, решетки, фильтра
Все для Авто
Все для пайки
Выключатели, кнопки, DIP переключателм
Датчики
Держатели карт
Диски, коробки, конверты
Изделия, устройства, блоки
Измерительный инструмент и комплектующие
Инструмент
Источники энергии, держатели, ИБП
Кабельная продукция и сопутствующие товары
Клеммы, клеммники, оконцеватели
Комплектующие для ремонта и производства
Компьютерная периферия
Корпуса, стойки, болты, винты, саморезы
Крокодилы
Микрофоны, пищалки
Пакеты струна
Полупроводники и арматура
Предохранители, термопредохранители, термостаты, держатели
Радиаторы, подложки, изоляторы
Радиокомпоненты
Разъемы, штекера, гнезда, переходники
Реле и колодки
Светодиоды, фонари, светильники
Сердечники, каркасы, ферриты
Текстолит
Термоусадочная трубка
Трансформаторы
Химия для электроники
Полный список товаров
Статьи
Все статьи (30)
Справочник (24)
Статьи к готовым модулям (1)
Схемы, устройства (6)
  Главная » Каталог » GSM, WI-FI, Ethernet, GPS, радио модули и комплектующие » Модуль Сетевой на ENC28J60
Модуль Сетевой на ENC28J60   287.59 руб
box_bg_l.gif.

код: 25925

Предназначен  для  сборки  устройства  управления  электрическими  приборами  через  интернет  и  передачи  данных  от  датчиков  для  отображения  на  странице  сайта.  При  этом  с  сайта  можно  управлять  приборами  и  проверять  выполнение  команд.  Например,  можно  изготовить  управление  поворотом  видеокамеры  с  помощью  шагового  двигателя  и  с  экрана  ПК  наблюдать  за  видеосъемкой.

Модуль  работает  в  локальной  сети  TCPIP  и  в  сети  internet.  Используя  аппаратные  возможности  модуля  ENC28J60  и  программу  микроконтроллера  создают  простой  веб-сервер.  Модуль  связывает  МК  через  интерфейс  SPI  с  сетью  TCPIP.  Управление  приборами  автоматики  через  internet  подключенными  к  ENC28J60  может  производится  одновременно  или  поочередно  несколькими  операторами  с  различных  персональных  компьютеров  или  мобильных  устройств.  ENC28J60  Ethernet  модуль  для  Ардуино    может  служить  не  только  частью  прибора  автоматики,  но  и  наглядным  пособием  для  изучения  сети  TCP/IP  и  методов  построения  веб-сервера.
Ведущий  компонент  –  микросхема  ENC28J60.  На  плате  смонтирована  розетка  для  кабеля  сети  TCPIP.  Розетка  содержит  трансформатор,  обеспечивающий  гальваническую  развязку  модуля  от  кабеля  TCPIP  и  2  светодиода,  свечение  которых  свидетельствует  о  обмене  данными.  Имеется  кварцевый  резонатор  частоты  25  МГц.  Вилка  подключения  к  МК  имеет  10  контактов.  Индикатор  питания.
ENC28J60  Ethernet  модуль  для  Ардуино  может  работать  в  составе  Raspberry  Pi  или  другого  микроконтроллерного  устройства.  Хорошо  согласуется  с  МК  STM3  благодаря  напряжению  питания  одного  уровня.  От  МК  требуется  только  подавать  пакеты  для  отправки  и  забирать  принятые  через  интерфейс  SPI.
 
Характеристики
Питание
                        напряжение  3,14  –  3,45  В
                        ток,  мА
                                                максимальный  250
                                                номинальный  170
Интегрированный  MAC  и  10  Base-T  PHY
Полный  и  полудуплекс
Поддержка  одного  10  Base-T  порта  с  автоопределением  полярности  и  коррекцией
Автовыравнивание  генерации  контрольной  суммы
Автоотброс  ошибочных  пакетов
Программируемая  функция  повтора  передачи  при  ошибке
Программируемые  функции  Padding  и  генерирование  CRC
Программируемая  функция  фильтрации  ошибочных  пакетов
Тактовая  частота  SPI  до  20  МГц
Размеры  платы:  55  x  36  мм

Прибор  выполняющий  функции  веб-сервера  включает  модуль  ENC28J60  подключенный  к  модулю  микроконтроллера.  Программа  микроконтроллера  обеспечивает  взаимодействие  с  микросхемой  ENC28J60  и  работу  веб-сервера.  В  качестве  микроконтроллерного  модуля  может  быть  использовано  центральное  устройство  Arduino.

При  подключении  к  Ардуино  используются  контакты  интерфейса  SPI,  сброса  и  питания.  Контакт  сброс  может  соединяться  с  цифровым  контактом  ввода-вывода  Ардуино  если  в  программе  предусмотрена  подача  сигнала  сброс  с  цифрового  контакта.  Питание  модуля  3,3  В  можно  взять  от  Ардуино.
 
ПЕРВОНАЧАЛЬНАЯ  ПРОВЕРКА
 
Проверим  подключение.  В  Arduino  IDE  в  разделе  примеры  найдем  библиотеку  ethercard,  там  выберем  пункт  rbbb_server.  По  умолчанию  библиотека  ethercard  использует  для  сигнала  CS  интерфейса  SPI  контакт  8  Arduino.  Если  подключение  выполнено  к  другому  контакту,  например  10  как  в  нашем  случае,  то  нужно  внести  изменение  в  текст  примера  rbbb_server.  В  начале  программы  rbbb_server  имеются  следующие  строки.
 
                        #include 
                     
                        //  ethernet  interface  mac  address,  must  be  unique  on  the  LAN
                        static  byte  mymac[]  =  {  0x74,0x69,0x69,0x2D,0x30,0x31  };
                        static  byte  myip[]  =  {  192,168,1,115  };  //IP  адрес
                     
                        byte  Ethernet::buffer[500];
                        BufferFiller  bfill;
                     
                        void  setup  ()  {
                          if  (ether.begin(sizeof  Ethernet::buffer,  mymac)  ==  0)
                          Serial.println(F("Failed  to  access  Ethernet  controller"));
                          ether.staticSetup(myip);
                        }
 
Изменим  программу  для  использования  контакта  10.  В  четвертую  строку  снизу  в  приведенном  выше  участка  текста  программы  вносим  изменение  перед  закрывающейся  скобкой  в  виде  числа  10:
 
if  (ether.begin(sizeof  Ethernet::buffer,  mymac,10)  ==  0)
 
Сохраняем  изменение  в  программном  примере  rbbb_server  и  загружаем  в  Arduino  UNO.  Модуль  ENC28J60  подключен  к  роутеру  кабелем,  а  персональный  компьютер  соединен  с  роутером  по  Wi-Fi  или  тоже  кабелем.  Таким  образом,  они  находятся  в  одной  домашней  локальной  сети.  Копируем  IP  адрес  нашего  веб-сервера  192,168,1,115  указанный  в  программе  rbbb_server,  заменяем  запятые  на  точки  192.168.1.115.  Открываем  стандартную  программу  проводник  (Windows  Explorer),  в  ней  открываем  папку  Библиотеки/Документы,  здесь  в  верхнюю  строку  окна  вводим  http://192.168.1.115/  На  экране  должны  появится  показания  часов,  значит  все  работает.
 
ПРОБРОС  ПОРТОВ
 
Обращение  из  internet  к  нашему  веб-серверу  будет  происходить  по  его  IP  адресу.  Роутер  присваивает  подключенному  модулю  ENC28J60  динамический  IP  адрес,  т.  е.  при  каждом  включении  будет  присвоен  новый  IP  адрес  по  случайному  выбору.  Для  работы  через  internet  нужен  статический  IP  адрес.  Для  закрепления  за  модулем  постоянного  IP  адреса  нужно  выполнить  ряд  действий.
Из  internet  видим  роутер,  чтобы  не  было  с  ним  соединено  в  нашей  локальной  домашней  сети.  Когда  происходит  соединение  нашего  ПК  изнутри  наружу  в  сеть,  роутер  открывает  TCP-соединение,  выделяя  для  этого  сетевой  порт,  и  ретранслирует  то,  что  передаем.  Здесь  речь  идет  о  логических  портах.  Вспомним,  что  сетевым  портом  называют  соединение  для  обмена  между  программами.  Сетевой  порт  –  номер,  параметр  транспортного  протокола  TCP  и  UDP.  Это  число  в  пакете  данных  показывающее  для  какой  программы  данные  предназначены.  Как  удаленный  компьютер  может  достучаться  до  вашего  через  IP  адрес,  так  и  до  конкретной  программы  с  помощью  указания  порта.  Программа  может  открыть  порт,  это  значит  заявить  "Если  придут  данные  на  порт  5577,  то  это  для  меня".  Закрыть  порт  –  значит  взять  свои  слова  обратно.  За  http-сервером  закреплен  порт  80.  Это  означает,  что  когда  пишем  http://arduino-kit.ru,  то  компьютер  обращается  к  серверу  arduino-kit.ru  (сначала  узнает  его  IP  адрес),  а  потом  говорит  "Передайте  80-ой  программе  –  хочу  сайт  смотреть".
  У  нас  обратная  задача.  Нужно  соединиться  из  internet  с  ENC28J60  находящимся  в  домашней  локальной  сети  в  автоматическом  режиме  независимо  от  технических  трудностей  в  виде  динамики  IP.  Для  решения  этой  проблемы  нужно  связать  порт  выделенный  программе  с  прибором.  Приказываем  роутеру:  “что  пришло  из  интернета  на  внешний  порт  NN,  передавай  на  внутренний  порт  X”.  Это  указание  часто  называют  “проброс  порта”.  Теперь  из  интернета  это  будет  выглядеть,  как  будто  это  прибор  подключенный  к  роутеру  c  портом  X  открыл  порт  NN  для  обмена  данными.
Для  проброса  портов  надо  выполнить  следующие  действия.  В  свойствах  роутера  в  разделе  NAT  Setting,  на  странице  Virtual  Server  выполнить  переадресацию.  Установить  входящий  порт  Port  Range  значением  80.  Браузеры  по  умолчанию  работают  через  порт  80,  а  мы  будем  входить  с  браузера.  В  строке  локальный  IP  адрес  указать  статический  IP  адрес  модуля  ENC28J60  из  текста  программы,  на  нем  у  нас  развернут  веб-сервер.  В  пункте  Lokal  port  тоже  указать  80,  так  как  Arduino  библиотека  ethercard  использует  порт  80.  Установить  протокол  ТСР.
 
ПРОГРАММА  ДЛЯ  УПРАВЛЕНИЯ  ВОСЕМЬЮ  РЕЛЕ

  Для  отработки  управления  реле  в  начале  макетирования  подключим  8  светодиодов  через  резисторы  470  Ом  к  контактам  2…9  Arduino  UNO.  Отрицательные  выводы  светодиодов  соединим  с  общим  проводом,  идущим  к  Arduino  UNO.  Обращаясь  через  internet  к  модулю  ENC28J60,  мы  должны  видеть  страницу  сайта.  Содержание  этой  страницы  находится  в  программе,  загружаемой  в  микроконтроллер.  Функция  void  homePage()  описывает  страницу  открываемую  нами  в  браузере.  Загрузим  программу  управления  восемью  выходами.
 
#include 
 
//  MAC  адрес  должен  быть  уникальным
static  byte  mymac[]  =  {
0x7b,0x6c,0x4d,0x3e,0x2f,0x10  };
//IP  адрес  статический
static  byte  myip[]  =  {
192,168,1,177  };
 
//Чем  больше  данных  на  Web  странице,  тем  объемнее  требуется  буфер
byte  Ethernet::buffer[900];
BufferFiller  bfill;
 
//Массив  задействованных  контактов  Arduino,  для  управления  реле
int  LedPins[]  =  {
2,3,4,5,6,7,8,9};
 
//Массив  для  фиксации  изменений
boolean  PinStatus[]  =  {
1,2,3,4,5,6,7,8};
 
const  char  http_OK[]  PROGMEM  =
"HTTP/1.0  200  OK "
"Content-Type:  text/html "
"Pragma:  no-cache ";
const  char  http_Found[]  PROGMEM  =
 
"HTTP/1.0  302  Found "
"Location:  / ";
const  char  http_Unauthorized[]  PROGMEM  =
"HTTP/1.0  401  Unauthorized "
"Content-Type:  text/html "
"
401  Unauthorized
";
 
void  homePage()
{
bfill.emit_p(PSTR("$F"
"  "
"ArduinoPIN  1:  $F
"
"ArduinoPIN  2:  $F
"
"ArduinoPIN  3:  $F
"
"ArduinoPIN  4:  $F
"
"ArduinoPIN  5:  $F
"
"ArduinoPIN  6:  $F
"
"ArduinoPIN  7:  $F
"
"ArduinoPIN  8:  $F"),
http_OK,
PinStatus[1]?PSTR("off"):PSTR("on"),
PinStatus[1]?PSTR("ON"):PSTR("OFF"),
PinStatus[2]?PSTR("off"):PSTR("on"),
PinStatus[2]?PSTR("ON"):PSTR("OFF"),
PinStatus[3]?PSTR("off"):PSTR("on"),
PinStatus[3]?PSTR("ON"):PSTR("OFF"),
PinStatus[4]?PSTR("off"):PSTR("on"),
PinStatus[4]?PSTR("ON"):PSTR("OFF"),
PinStatus[5]?PSTR("off"):PSTR("on"),
PinStatus[5]?PSTR("ON"):PSTR("OFF"),
PinStatus[6]?PSTR("off"):PSTR("on"),
PinStatus[6]?PSTR("ON"):PSTR("OFF"),
PinStatus[7]?PSTR("off"):PSTR("on"),
PinStatus[7]?PSTR("ON"):PSTR("OFF"),
PinStatus[8]?PSTR("off"):PSTR("on"),
PinStatus[8]?PSTR("ON"):PSTR("OFF"));
}
 
void  setup()
{
Serial.begin(9600);
//По  умолчанию  в  библиотеке  ethercard  CS  --  контакт  8
//if  (ether.begin(sizeof  Ethernet::buffer,  mymac)  ==  0)
//and  change  it  to:  замена  (CS-pin)  на  10
//if  (ether.begin(sizeof  Ethernet::buffer,  mymac,  10)  ==  0)
if  (ether.begin(sizeof  Ethernet::buffer,  mymac,10)  ==  0);
if  (!ether.dhcpSetup());
//Выводим  в  последовательный  монитор  IP  адрес  который  присвоил  роутер
ether.printIp("My  Router  IP:  ",  ether.myip);
//Здесь  подменяем  динамический  IP  на  статический
ether.staticSetup(myip);
ether.printIp("My  SET  IP:  ",  ether.myip);  //Выводим  в  последовательный  монитор  статический  IP
for(int  i  =  0;  i  <=  8;  i++)
{
pinMode(LedPins[i],OUTPUT);
PinStatus[i]=false;
}
}
 
void  loop()
{
delay(1);
word  len  =  ether.packetReceive();  //Проверить  ethernet  пакеты
word  pos  =  ether.packetLoop(len);  //Проверить  TCP  пакеты
if  (pos)  {
bfill  =  ether.tcpOffset();
char  *data  =  (char  *)  Ethernet::buffer  +  pos;
if  (strncmp("GET  /",  data,  5)  !=  0)  {
bfill.emit_p(http_Unauthorized);
}
 
else  {
data  +=  5;
if  (data[0]  ==  '  ')  {
homePage();  //Если  обнаружено  изменения  на  станице,  то  запускаем  функцию
for  (int  i  =  0;  i  <=  7;  i++)digitalWrite(LedPins[i],PinStatus[i+1]);
}
 
//"16"  =  количество  символов  "?ArduinoPIN1=on  ".
else  if  (strncmp("?ArduinoPIN1=on  ",  data,  16)  ==  0)  {
PinStatus[1]  =  true;
bfill.emit_p(http_Found);
}
 
else  if  (strncmp("?ArduinoPIN2=on  ",  data,  16)  ==  0)  {
PinStatus[2]  =  true;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN3=on  ",  data,  16)  ==  0)  {
PinStatus[3]  =  true;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN4=on  ",  data,  16)  ==  0)  {
PinStatus[4]  =  true;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN5=on  ",  data,  16)  ==  0)  {
PinStatus[5]  =  true;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN6=on  ",  data,  16)  ==  0)  {
PinStatus[6]  =  true;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN7=on  ",  data,  16)  ==  0)  {
PinStatus[7]  =  true;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN8=on  ",  data,  16)  ==  0)  {
PinStatus[8]  =  true;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN1=off  ",  data,  17)  ==  0)  {
PinStatus[1]  =  false;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN2=off  ",  data,  17)  ==  0)  {
PinStatus[2]  =  false;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN3=off  ",  data,  17)  ==  0)  {
PinStatus[3]  =  false;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN4=off  ",  data,  17)  ==  0)  {
PinStatus[4]  =  false;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN5=off  ",  data,  17)  ==  0)  {
PinStatus[5]  =  false;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN6=off  ",  data,  17)  ==  0)  {
PinStatus[6]  =  false;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN7=off  ",  data,  17)  ==  0)  {
PinStatus[7]  =  false;
bfill.emit_p(http_Found);
 
}
 
else  if  (strncmp("?ArduinoPIN8=off  ",  data,  17)  ==  0)  {
PinStatus[8]  =  false;
bfill.emit_p(http_Found);
 
}
 
else  {
//Страница  не  найдена
bfill.emit_p(http_Unauthorized);
}
}
ether.httpServerReply(bfill.position());
}
}
 
Наш  модуль  должен  иметь  уникальный  МАС  адрес.  МАС  адрес  указан  в  программе.  В  начале  программы  это  сделано  в  следующих  строках.
 
static  byte  mymac[]  =  {
0x7b,0x6c,0x4d,0x3e,0x2f,0x10  };
 
Придется  поэкспериментировать  и  придумать  уникальный  –  неиспользуемый  никем  МАС  адрес  и  внести  его  в  программу.  Существуют  специальные  утилиты  Random  MAC  Generator.  Чтобы  увидеть  результаты  наших  стараний  после  записи  программы  в  микроконтроллер  и  проброса  портов  необходимо  проверить  доступ  к  модулю  ENC28J60  из  internet.  Для  этого  выясним  IP  адрес  роутера.  Используем  поиск  информации  Google.  В  поисковой  строке  Google  вводим  две  буквы:  IP.  Первая  ссылка  в  выдаче  будет  “Узнать  IP  адрес”.  Нажимаем  на  эту  ссылку  и  видим  адрес  нашего  роутера.  Пусть  это  будет  ZZZ.ZZZ.Z.ZZZ.
В  браузере,  в  строке  адреса  страниц  введем  IP  адрес  роутера,  к  которому  подключен  модуль  ENC28J60.  В  окне  браузера  должна  открыться  страница  веб-сервера,  установленного  на  модуле.  Видим  станицу  управления.  Теперь  зайдем  с  мобильного  устройства  на  наш  веб-сервер  из  internet  вводя  в  браузере  IP.  При  нажатии  в  окне  браузера  на  строки  с  надписями  OFF  и  ON  должно  изменяться  состояние  светодиодов.  Отработав  схему  и  программу  на  светодиодах,  можем  подключить  модуль  реле.  Применение  светодиодов  для  макетирования  дает  наибольшее  приближение  к  параметрам  модуля  реле,  на  входах  которого  стоят  оптроны.
 
СОВМЕСТНАЯ  РАБОТА  МОДУЛЕЙ  ENC28J60
 
Если  наши  эксперименты  проходят  успешно,  то  в  нашей  локальной  сети  разворачиваем  на  втором  модуле  ENC28J60  еще  один  веб-сервер,  добавляем  третий  и  четвертый  модули  в  ту  же  локальную  сеть.  Это  дает  расширение  системы  или  дублирование,  резервирование  для  повышения  надежности.  В  этом  случае  одного  порта  80  мало.  Для  решения  проблемы  каждому  следующему  веб-серверу  присваиваем  уникальный  порт,  делая  специальную  запись  в  программе.  В  разделе  void  setup()  вводим  строку:
 
ether.hisport  =  5557;
 
Здесь  5557  новый  порт.  В  программе  второго  веб-сервера  указываем  IP  адрес  отличный  от  первого.  Теперь  запрограммируем  роутер  для  работы  с  несколькими  модулями  ENC28J60.  В  настройках  роутера  указываем:
 
Входящий  порт  Port  Range  91
Локальный  IP  адрес  указать  статический  IP  адрес  второго  веб-сервера
В  пункте  Lokal  port  указываем  5557
 
Сохраняем  две  настройки:  старую  для  входного  порта  80  и  новую  для  порта  91.  Для  обращения  к  первому  веб-серверу  из  internet  вводим  в  URL  строке  браузера  просто  IP  адрес  роутера  http://ZZZ.ZZZ.Z.ZZZ,  а  для  обращения  к  второму  веб-серверу  вводим  IP  и  порт  http://ZZZ.ZZZ.Z.ZZZ:91.



Товар был добавлен в наш каталог 18 March 2014 г.
box_bg_r.gif.
Отзывы Количество:
  Главная » Каталог » GSM, WI-FI, Ethernet, GPS, радио модули и комплектующие » Модуль Сетевой на ENC28J60
ВХОД ДЛЯ КЛИЕНТОВ
E-Mail:
Пароль:
Регистрация
Корзина Перейти
Корзина пуста
Консультант
ICQ: Статус 923823
ГЛАВНАЯ НОВИНКИ КАТАЛОГ СТАТЬИ КОРЗИНА Отправить письмо
Rambler's Top100 Каталог интернет ресурсов - ИнфоПитер Яндекс.Метрика
Каталог интернет-магазинов Луганска