No Image

Arduino mega 2560 enc28j60

СОДЕРЖАНИЕ
393 просмотров
12 декабря 2019

В интернете много статей по подключению сетевого модуля ENC28J60 к различным платам arduino, но нет информации по подключению к плате arduino mega 2560 и сегодня мы более подробно рассмотрим это подключение. Для демонстрации работы модуля с ардуино мега 2560 смотрите видео.

Теперь немного познакомимся с самим сетевым модулем и его характеристиками

Блок схема ethernet модуля ENC28J60 :

Блок схема сетевого модуля ENC28J60

Основные характеристики ethernet модуля ENC28J60:

  • чип ENC28J60 Ethernet, корпус SOP28
  • SPI интерфейс
  • 1×10 разъем подключения к ардуино
  • встроенный разъем RJ45
  • светодиод на питании
  • питание: +3.3В
  • рабочая частота 25МГц

Сетевой модуль ENC28J60

Контакты модуля ENC28J60 :

Где купить ENC28J60 (ссылки на продавцов) :

Настройка библиотеки для работы с модулем ENC28J60 :

Для начала работы с модулем ENC28J60 скачаем две библиотеки

Для подключения плат arduino uno, arduino nano, arduino pro mini и других , в библиотеках ничего менять не надо…

Для подключения сетевого модуля к arduino mega 2560, нам потребуется в папке библиотеки etherShield

открыть с помощью графического редактора файл enc28j60.c и в нем отредактировать строки выделенные красным цветом ( прописать пины для подключения к arduino mega)

файл библиотеки enc28j60.с

у нас должно получится так

отредактированный файл enc28j60.с

Старые значения пинов для обычных плат ардуино я не удалял а просто закомментировал .

Теперь в папке библиотеки ETHER_28J60

откроем файл ETHER_28J60.cpp и отредактируем строки выделенные красным цветом

а точнее изменим размер двоих буферов ( смотрите на фото ниже)

Отредактированный файл ETHER_28J60

Теперь сохраняем файлы и устанавливаем наши библиотеки в arduino IDE 1.0.5 ( с версией 1.6.2 библиотеки не работают)

Схема подключения модуля ENC28J60 к Arduino mega 2560 :

Подключение arduino mega 2560 к enc28j60

Подключаем по схеме:

  • Arduino mega GND – enc28j60 pin GND
  • Arduino mega +3.3v – enc28j60 pin VCC
  • Arduino mega pin 50 – enc28j60 pin SO (MISO)
  • Arduino mega pin 51 – enc28j60 pin SI (MOSI)
  • Arduino mega pin 52 – enc28j60 pin SCK
  • Arduino mega pin 53 – enc28j60 pin CS

После подключения платы, открываем тестовый скетч из примеров

и в открытом скетче

пропишем IP адрес нашего модуля в диапазоне адресов нашей подсети ( у меня диапазон IP адресов от 192.168.0.1 до 192.168.0.255 ) и я в строке указал IP адрес 192.168.0.9

Загружаем наш скетч в плату и отроем страничку браузера по адресу http://192.168.0.9

Отображение в браузере

Теперь немного изменим наш скетч и добавим отображение текста на русском языке “Привет мир” и добавим картинку.

Для правильного отображения текста на русском языке добавим в начале строку

а для отображения картинки добавим строку

Загрузим наш скетч и снова откроем браузер

Отображение в браузере

Как видим надпись на русском языке и картинка отображаются правильно.

Теперь подключим три скетодиода к пинам 11, 12, 13 на плате ардуино мега и загрузим мой. немного переработанный скетч, который позволит нам управлять светодиодами через веб браузер.

откроем браузер и поморгаем светодиодами как на видео в начале статьи

На этом все, удачных Вам проектов.

17 responses on “ Подключение ENC28J60 к arduino mega 2560 ”

У вас ошибка в описании подключения модуля…
На картинке все верно, а в тексте надо заменить RST на CS – у меня не работало, пока не присмотрелся внимательно к картинке 😉
Переподключил, все побежало 😉

Исправил, спасибо большое за подсказку!

А нет случайно под рукой ссылки на статью, где описывается как повесить на один SPI на меге два модуля, и настроить их стабильную работу??
Один – как раз этот ENC28J60, другой – радио модуль nRF24L01+.
Надо их вдвоем подключить, а SPI один )))

все дело в прописи СS пина, айпи один будет с мак адресом, это в теории а вот на практике как не знаю!

Говорят не в одном этом дело. Говорят что множество устройств на одной SPI шине проваливают по напряжению MISO и типа после отключения по CS пину, устройство все равно продолжает мешать общению по MISO/MOSI другому устройству… Так что надо искать хардварный метод решения проблемы…

Читайте также:  Дренаж участка под ключ цена московская

А раскидывать CS пины на разные ноги пробовал. Даже в библиотеке менял номера выводов, к которым привязывается ENC, сервер работает, но жутко висит и быстро отваливается… так что вот так ))) Подтверждение того, что вместе они на одной шине не дружат.

что не так…версия правильная 1,0,5 буду признателен за помощь …

C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:26:22: error: WProgram.h: No such file or directory
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp: In member function ‘void ETHER_28J60::setup(uint8_t*, uint8_t*, uint16_t)’:
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:52: error: ‘delay’ was not declared in this scope
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp: In member function ‘char* ETHER_28J60::serviceRequest()’:
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:112: error: ‘strncmp’ was not declared in this scope
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:120: error: ‘strncmp’ was not declared in this scope
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp: In member function ‘void ETHER_28J60::print(int)’:
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:152: error: ‘itoa’ was not declared in this scope

при подключении меги все работает не долго! хотя на библиотеке EtherCard все работает устойчиво, проверил на UNO 24/7. Но возникла сложность, не смог ее настроить под мегу. может кто подскажет?

Вы размер буферов изменяли. Как написано в статье ….

тоже так сделал ..сначала работает, потом вообще отваливается даже роутер не видит

не советую покупать этот шилд редкостный шлак! Устройства зависает постоянно

А можно подключит шилд к другим pin (не к 50-53, а, например 38-41)? Просто к этим pin уже подключен другой модуль (rfid-rc522). Пробовал задавть в библиотеке вместо 50-53 pin свои, не заработало :/.

Изменил размер буфера, но тем не менее после превышения веса страницы 1500кб все просто зависает. Кто что может сказать?

Всем привет.
Как многие слышат, что нужно создать WEB сервер – сразу становится не по себе, всячески пытаются отойти от этой темы применив другие варианты управления и мониторинга своих устройств. Но ведь интернет и сеть есть уже почти в каждом устройстве. Так чем Ваш творение хуже?
Так что Если Вам интересно – идем дальше.

Не так страшен Волк, как его рисуют. Среди Нас много специалистов, но и много новичков. Учится никогда не поздно, я сам многому учусь, и многое познаю в практике. Надеюсь, эта статья поможет начинающим или освежит память начавшим.
За основу взят популярный модуль с контроллером ENC28j60.

А также я взял Arduino UNO(также можно Nano или Pro Mini). Все они работают на ATmega328.
В этой статье я покажу основы создания WEB сервера на самых простых библиотеках.
В данном случае:
#include «etherShield.h»
#include «ETHER_28J60.h»
Они просты для понимания – но и возможностей тоже меньше. Для обычного мониторинга и управления нагрузками – более чем достаточно.
Давайте рассмотрим, что нам нужно для этого.

Для начала идет инициализация библиотек.
Далее я указал пины для подключения модуля с контроллером ENC28j60. Так же Нам необходимо указать параметры нашего сетевого устройства. Для этого указываем MAC адрес –помните он не должен совпасть с MAC адресом Ваших сетевых устройств. Так же и IP Адрес – должен быть индивидуальным – но находиться в Вашей подсети.
К примеру, у Вас роутер(192,168,0,1), Ваш ПК(192,168,0,5) то Ваше устройство может быть(192,168,0,100).
К примеру, у Вас роутер(192,168,4,1), Ваш ПК(192,168,4,10) то Ваше устройство может быть(192,168,4,100).
Далее нужно указать порт. По умолчанию 80 – так как Веб браузеры по умолчанию опрашивают именно его(смотрите тест изменения порта в видео ниже).
Далее ETHER_28J60 ethernet; — указываем на имя объекта для обращения(ethernet), ниже в программе мы будем обращаться по этому имени.
Далее Нам необходима инициализация сетевого контроллера – применяем все установки адресов и портов.

Ну тут думаю самое сложное и не интересное закончилось …

Далее в основном цикле программы мы должны поставить условие которое будет проверять, есть ли запрос по нашему IP адресу. Если есть то отправить строчки нашей странички, а браузер уже придаст ей привычный нам вид. Давайте посмотрим пример:

Выделенная строка создает крупный тест на страничке, его легко редактировать и таких строчек можно добавлять по необходимости(но все упирается в количество Flash памяти контроллера).
Команда ethernet.respond(); отправляет все наши строчки сайта на браузер с которого сделали запрос на сайт(в данном случае 192.168.0.100).
Но если Вы заметили то названия у этого сайта нет(просто IP адрес).Не волнуйтесь, это поправимо, если добавить одну строчку:

Читайте также:  Восточный административный округ районы

Вот… теперь уже лучше.
Далее добавляя, строчки мы будем добавлять объекты на страничке которые помогут нам отображать информацию или управлять нею.
Начнем с ссылки, при нажатии на которую, мы отправим на контроллер запрос с тестом (который нужен будет нам позже для обработки).

Красной стрелкой название кнопки, а синей мы указываем на текст в запросе при нажатии на ссылку. Значит, если Мы нажмем на ссылку «Стоп» то отправим запрос на наш сервер: «192.168.0.100/stop» — где «stop» будет текст запроса.
Далее рассмотрим такой же вариант только с кнопкой:

Добавились атрибуты необходимые для отображения браузером кнопки. При нажатии, на которую, уже отправится запрос с тестом «start». Думаю здесь все понятно.
Для любителей красоты можно добавить параметры и создать интересную кнопку:

Для следующего варианта нам понадобятся переменные, добавим их в начале скетча:

Сейчас отобразим на Нашей страничке таблицу:

Для обозначения объекта таблица используется атрибут table. Далее я красным подчеркнул ( tr ) внешние границы таблицы и синим — внутренние рамочки. Обратите внимание что они попарно, а в центре пары Ваше значение или переменная(к примеру ves1 или ves2). Так же вы можете заметить что пара создает жирный текст а обычный текст. В конце объект таблица завершается /table.
Думаю с отображением объектов на странице достаточно для создания не сложных WEB страниц(более подробно и наглядно вы можете увидеть ниже в видео уроках для начинающих).
Но как же обработать запрос – для этого немного модифицируем наше условие с самого начала, добавив при этом переменную для строки. Так же создадим для примера два условия обработки запросов: 1-е это пустой запрос (192.168.0.100); 2-е это запрос с текстом «start»(192.168.0.100/start)

В зависимости от поданного запроса на сервер, на браузере сайт будет отображаться согласно указанным строкам:

Вот так можно делать динамические станицы, которые будут меняться, и отображать различную информацию в зависимости от параметров переменных или запросов от ссылок и кнопок.

Более детально и наглядно можно увидеть все, выше упомянутое, в Видео уроках для начинающих:

Старался изложить материал доступными словами не используя сложные термины.
Надеюсь, эта статья поможет многим начинающим создать свой web сервер. Для более продвинутых будут видео по другим библиотекам … более сложным.

В интернете много статей по подключению сетевого модуля ENC28J60 к различным платам arduino, но нет информации по подключению к плате arduino mega 2560 и сегодня мы более подробно рассмотрим это подключение. Для демонстрации работы модуля с ардуино мега 2560 смотрите видео.

Теперь немного познакомимся с самим сетевым модулем и его характеристиками

Блок схема ethernet модуля ENC28J60 :

Блок схема сетевого модуля ENC28J60

Основные характеристики ethernet модуля ENC28J60:

  • чип ENC28J60 Ethernet, корпус SOP28
  • SPI интерфейс
  • 1×10 разъем подключения к ардуино
  • встроенный разъем RJ45
  • светодиод на питании
  • питание: +3.3В
  • рабочая частота 25МГц

Сетевой модуль ENC28J60

Контакты модуля ENC28J60 :

Где купить ENC28J60 (ссылки на продавцов) :

Настройка библиотеки для работы с модулем ENC28J60 :

Для начала работы с модулем ENC28J60 скачаем две библиотеки

Для подключения плат arduino uno, arduino nano, arduino pro mini и других , в библиотеках ничего менять не надо…

Для подключения сетевого модуля к arduino mega 2560, нам потребуется в папке библиотеки etherShield

открыть с помощью графического редактора файл enc28j60.c и в нем отредактировать строки выделенные красным цветом ( прописать пины для подключения к arduino mega)

файл библиотеки enc28j60.с

у нас должно получится так

отредактированный файл enc28j60.с

Старые значения пинов для обычных плат ардуино я не удалял а просто закомментировал .

Теперь в папке библиотеки ETHER_28J60

откроем файл ETHER_28J60.cpp и отредактируем строки выделенные красным цветом

а точнее изменим размер двоих буферов ( смотрите на фото ниже)

Отредактированный файл ETHER_28J60

Теперь сохраняем файлы и устанавливаем наши библиотеки в arduino IDE 1.0.5 ( с версией 1.6.2 библиотеки не работают)

Читайте также:  Винт с двумя направляющими

Схема подключения модуля ENC28J60 к Arduino mega 2560 :

Подключение arduino mega 2560 к enc28j60

Подключаем по схеме:

  • Arduino mega GND – enc28j60 pin GND
  • Arduino mega +3.3v – enc28j60 pin VCC
  • Arduino mega pin 50 – enc28j60 pin SO (MISO)
  • Arduino mega pin 51 – enc28j60 pin SI (MOSI)
  • Arduino mega pin 52 – enc28j60 pin SCK
  • Arduino mega pin 53 – enc28j60 pin CS

После подключения платы, открываем тестовый скетч из примеров

и в открытом скетче

пропишем IP адрес нашего модуля в диапазоне адресов нашей подсети ( у меня диапазон IP адресов от 192.168.0.1 до 192.168.0.255 ) и я в строке указал IP адрес 192.168.0.9

Загружаем наш скетч в плату и отроем страничку браузера по адресу http://192.168.0.9

Отображение в браузере

Теперь немного изменим наш скетч и добавим отображение текста на русском языке “Привет мир” и добавим картинку.

Для правильного отображения текста на русском языке добавим в начале строку

а для отображения картинки добавим строку

Загрузим наш скетч и снова откроем браузер

Отображение в браузере

Как видим надпись на русском языке и картинка отображаются правильно.

Теперь подключим три скетодиода к пинам 11, 12, 13 на плате ардуино мега и загрузим мой. немного переработанный скетч, который позволит нам управлять светодиодами через веб браузер.

откроем браузер и поморгаем светодиодами как на видео в начале статьи

На этом все, удачных Вам проектов.

17 responses on “ Подключение ENC28J60 к arduino mega 2560 ”

У вас ошибка в описании подключения модуля…
На картинке все верно, а в тексте надо заменить RST на CS – у меня не работало, пока не присмотрелся внимательно к картинке 😉
Переподключил, все побежало 😉

Исправил, спасибо большое за подсказку!

А нет случайно под рукой ссылки на статью, где описывается как повесить на один SPI на меге два модуля, и настроить их стабильную работу??
Один – как раз этот ENC28J60, другой – радио модуль nRF24L01+.
Надо их вдвоем подключить, а SPI один )))

все дело в прописи СS пина, айпи один будет с мак адресом, это в теории а вот на практике как не знаю!

Говорят не в одном этом дело. Говорят что множество устройств на одной SPI шине проваливают по напряжению MISO и типа после отключения по CS пину, устройство все равно продолжает мешать общению по MISO/MOSI другому устройству… Так что надо искать хардварный метод решения проблемы…

А раскидывать CS пины на разные ноги пробовал. Даже в библиотеке менял номера выводов, к которым привязывается ENC, сервер работает, но жутко висит и быстро отваливается… так что вот так ))) Подтверждение того, что вместе они на одной шине не дружат.

что не так…версия правильная 1,0,5 буду признателен за помощь …

C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:26:22: error: WProgram.h: No such file or directory
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp: In member function ‘void ETHER_28J60::setup(uint8_t*, uint8_t*, uint16_t)’:
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:52: error: ‘delay’ was not declared in this scope
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp: In member function ‘char* ETHER_28J60::serviceRequest()’:
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:112: error: ‘strncmp’ was not declared in this scope
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:120: error: ‘strncmp’ was not declared in this scope
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp: In member function ‘void ETHER_28J60::print(int)’:
C:UsersUserDocumentsArduinolibrariesETHER_28J60ETHER_28J60.cpp:152: error: ‘itoa’ was not declared in this scope

при подключении меги все работает не долго! хотя на библиотеке EtherCard все работает устойчиво, проверил на UNO 24/7. Но возникла сложность, не смог ее настроить под мегу. может кто подскажет?

Вы размер буферов изменяли. Как написано в статье ….

тоже так сделал ..сначала работает, потом вообще отваливается даже роутер не видит

не советую покупать этот шилд редкостный шлак! Устройства зависает постоянно

А можно подключит шилд к другим pin (не к 50-53, а, например 38-41)? Просто к этим pin уже подключен другой модуль (rfid-rc522). Пробовал задавть в библиотеке вместо 50-53 pin свои, не заработало :/.

Изменил размер буфера, но тем не менее после превышения веса страницы 1500кб все просто зависает. Кто что может сказать?

Комментировать
393 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector