Сетевой модуль для arduino nano enc28j60

Using the library

Several example sketches are provided with the library which demonstrate various features.
Below are descriptions on how to use the library.

Note: is a globally defined instance of the class and may be used to access the library.

Initialising the library

Initiate To initiate the library call .

uint8_t Ethernet::buffer; // configure buffer size to 700 octets
static uint8_t mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 }; // define (unique on LAN) hardware (MAC) address

uint8_type vers = ether.begin(sizeof Ethernet::buffer, mymac);
if(vers == )
{
    // handle failure to initiate network interface
}

Configure using DHCP

To configure IP address via DHCP use .

if(!ether.dhcpSetup())
{
    // handle failure to obtain IP address via DHCP
}
ether.printIp("IP:   ", ether.myip); // output IP address to Serial
ether.printIp("GW:   ", ether.gwip); // output gateway address to Serial
ether.printIp("Mask: ", ether.netmask); // output netmask to Serial
ether.printIp("DHCP server: ", ether.dhcpip); // output IP address of the DHCP server

Static IP Address

To configure a static IP address use .

const static uint8_t ip[] = {192,168,,100};
const static uint8_t gw[] = {192,168,,254};
const static uint8_t dns[] = {192,168,,1};

if(!ether.staticSetup(ip, gw, dns);
{
    // handle failure to configure static IP address (current implementation always returns true!)
}

Send UDP packet

To send a UDP packet use .

char payload[] = "My UDP message";
uint8_t nSourcePort = 1234;
uint8_t nDestinationPort = 5678;
uint8_t ipDestinationAddress;
ether.parseIp(ipDestinationAddress, "192.168.0.200");

ether.sendUdp(payload, sizeof(payload), nSourcePort, ipDestinationAddress, nDestinationPort);

Модули Ethernet для Arduino

Подключить плату arduino к интернету можно несколькими способами. Беспроводное подключение прекрасно организуется с использованием платформ ESP8266 или ESP32. Можно использовать Lora модули с соответствующими WiFi-шлюзами. Но самым помехоустойчивым и “традиционным” является старый добрый Ethernet. Используя обычный RJ45 разъем и витую пару вы сможете объединить вашу плату с другим сетевым оборудованием, будь то роутер, маршрутизатор или тот же WiFi модем. Преимущества Ethernet-подключения – скорость, стабильность, бОльшая защищенность от помех. Недостатки очевидны – оборудование привязывается проводом, причем в условиях реальной эксплуатации качество этого провода должно быть высоким.

Плата расширения Arduino Ethrnet Shield

Наиболее популярные Ethernet модули для ардуино сегодня выпускаются на основе микросхемы wiznet w5100, которая способна поддерживать обмен данными с постоянной скоростью в 100 Мбит/сек. Для устройств на базе w5100 написаны готовые библиотеки, данная архитектура является простой и идеально подойдет начинающим любителям электроники, которые могут использовать как стартовую площадку для последующих проектов.

Ключевые характеристики модулей на базе W5100:

  • Рабочее напряжение – 5 Вольт, подходит питание с платы Arduino.
  • Внутренний буфер  16 Кб.
  • Скорость соединения достигает значения в 10/100 Мбит/сек.
  • Связь с платой ардуино осуществляется посредством порта SPI.
  • W5100 поддерживает TCP и UDP.

Варианты модулей на базе других микросхем:

  • Модуль на базе Wiznet W5500. Имеет меньшие размеры, меньше греется, имеет большую мощность.
  • Модуль на базе enc28j60. Это гораздо более бюджетный вариант, дешевле W5100, но и потенциальных проблем с ним может возникнуть больше.

Подключение модуля HR911105A к Arduino Uno


Необходимые детали для подключения модуля HR911105A к Arduino

Для занятия нам понадобятся следующие детали

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • Ethernet порт HanRun HR911105A 15/10;
  • макетная плата;
  • провода «папа-папа» и «папа-мама»;
  • 3 светодиода;
  • 3 резистора на 10 кОм;
  • роутер и LAN-кабель.

Соедините плату Arduino Uno и HR911105A, как на фото ниже

Обратите внимание, что 10 контактный модуль Ethernet ENC28J60 Enternet HR911105A питается от разъема 3,3 V, а 12 контактный модуль от 5V. Кроме того, обозначения разъемов на HanRun HR911105A могут быть изменены производителем, например, ST — вместо SO

Соединение проводов с контактами должно быть качественным.


Схема подключения HR911105A к Ардуино Уно

Далее собираем на макетной плате схему из трех светодиодов и резисторов. Светодиоды соединяются с разъемами 3, 4, 5 на плате Ардуино. При желании вы можете подключить RGB-светодиод к Ардуино или увеличить количество светодиодов, сделав при этом необходимые изменения в скетче для управления Ардуино через wifi.


Не забывайте про полярность (длинная ножка светодиода — плюс)

После сборки электрической схемы необходимо загрузить библиотеку для работы с HanRun HR911105A. Библиотеки служат для облегчения кода. Это могут быть драйвера к дополнительному оборудованию или часто используемые функции. В программе Arduino IDE уже есть набор стандартных библиотек, которые часто используются. Но в нашем случае требуется загрузить новые библиотеки (скачать архив) с Google Диск.


Распакуйте архив с библиотекой в папку C:\Program Files\Arduino\libraries

Откройте программу Arduino IDE и проверьте установку библиотеки. Заходите в меню «Файл — Образцы», после стандартных библиотек должна появиться библиотека «ethercard». Очень часто библиотеки содержат в себе несколько готовых скетчей.


Проверьте установку библиотеки после открытия программы Arduino IDE

Из-за большого объема кода приведем лишь небольшой отрывок скетча. Для оформления интернет страницы в программе используются HTML тэги. Скачайте готовый скетч здесь и загрузите программу в микроконтроллер.

Счетч для Arduino и модуля HR911105A

...

// Оформление Web страницы

void homePage()
{
  bfill.emit_p(PSTR("$F"
    "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"
    "<meta name='viewport' content='width=device-width, initial-scale=1.0'>"
    "<title>Управление Ардуино УНО</title>"
    "<h1 style='color:#0ea6f2'>Управление Ардуино</h1>"
    "<font size='3em'>"
    "Светодиод 1: <a href='?ArduinoPIN2=$F'>$F</a><br /><br />"  
    "Светодиод 2: <a href='?ArduinoPIN3=$F'>$F</a><br /><br />"
    "Светодиод 3: <a href='?ArduinoPIN4=$F'>$F</a><br /><br />"
    "</font>"
    "<h4>Управление Arduino через Ethernet порт HanRun HR911105A</h4>"),   

...

Пояснения к коду:

  1. Этой строчкой мы освободили память в микроконтроллере для буфера обмена. При увеличении данных на Web странице необходимо увеличить буфер, чтобы не происходило «зависания»;
  2. Включение/выключение светодиодов происходит в зависимости от количества символов в строке «Светодиод 1: OFF» или ;
  3. Стиль и оформление web-страницы выполнено с помощью HTML тэгов.


Зайдите через любой браузер на компьютере по IP адресу 192.168.1.55

Используемые библиотеки и проблемы при сборке

Есть три варианта библиотек для работы с этим модулем. По результатам:

  • для обучения идеален ether_28j60.zip;
  • для серьезного кодинга — ethercard;
  • для серьезного использования на системах с большой памятью — uip-ethernet.

ether_28j60 и EtherShield

  • Иногда при первом использовании библиотек ether_28j60 и EtherShield может возникнуть ошибка:

      error: ‘prog_char’ does not name a type
    

    Для ее исправления необходимо во всех файлах библиотек ether_28j60 и EtherShield заменить все строки prog_char и char PROGMEM на char.

  • Также заметил, что при работе с этой библиотекой более часа-двух модуль может зависнуть. Дополнено: виснет как миленькая. Не используем.

  • + самая компактная библиотека

  • + самый простой в написании код

  • — Годится только для вывода простой веб-страницы.

  • — Довольно тормозная

  • — Неоднократно было замечено зависание после 1-2 часов работы

EtherCard

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

ether.begin(sizeof Ethernet::buffer, mymac)

Эту строку надо поменять следующим образом:

ether.begin(sizeof Ethernet::buffer, mymac,10)

, где 10 — это пин Arduino, покдлючаемый к CS модуля. По-умолчанию, если он не указан, пин подклчается к 8 пину Adruino. В нашем случае, при использовании Nano пин должен быть 10-м.

По стабильности — зависаний не наблюдал, вроде библиотека годная.

Недостаток —

  • + Стабильность работы

  • + Высокая скорость обработки данных

  • + Большое количество возможностей

  • + Компактный код, но больше чем у ether_28j60.zip

  • — Нет явной функции аналогичной print для вывода на веб-страницу. Страница формируется в буфере и выводится целиком.

UIPEthernet

С этой библиотекой вроде бы проблем не наблюдается. Более того, с ней работают стандартные примеры из комплекта Arduino IDE. В них достаточно просто заменить строку

#include <Ethernet.h>

на

#include <UIPEthernet.h>
  • + Самый большой набор функций из всех рассмотренных выше

  • + Самое удобное использование, подходят стандартные примеры, достаточно просто заменить подключаемую библиотеку

  • + Быстрое выполнение

  • — Очень громоздкий код после сборки. В связи с этим для серьезного использования годится только для Arduino Mega или аналогичных плат с большой памятью.

Шилды Ethernet Shield для Arduino Uno или Nano

Наиболее удобным способом работы с W5100 является использование готовых шилдов Ethernet Shield для Arduino Uno или Nano. На таких модулях уже выполнены все необходимые обвязки, шилд просто вставляется в соответствующие разъемы платы и вам остается только загрузить скетч. Естественно, что при желании к плате могут быть подключены и другие устройства.

Arduino Ethernet Shield

Подключение платы расширения происходит через соединение RJ-45. Плата обладает встроенным слотом SD/MicroSD , который используется для хранения файлов, используемых для подключения и передачи по локальной сети. Такой слот совместим со всеми платами Arduino/Genuino, т.е. работать с данными на карте можно с помощью стандартной библиотеки SD Library. На плате расширения также можно найти кнопку перезагрузки . питания. Ранние версии платы расширения не дружили с ардуино мега, там требовался ручной сброс после поступления питания.

Если плата оснащена POE модулем (питание подается по витой паре), то шилд будет соответствовать следующим спецификациям:

  • Совместим со стандартом IEEE3af.
  • Имеет низкие пульсации на выходе.
  • Защищает от явлений перегрузки и короткого замыкания.
  • Эффективно преобразует напряжение.
  • Имеет изоляцию 1500 вольт на точке между «вход-выход»

По умолчанию плата не комплектуется данным модулем, нужно находить соответствующую модель.

Назначение светодиодов Ethernet Shield:

  • PWR показывает наличие питания на плате.
  • LINK светится при наличии сети и мигает при передаче/приеме данных.
  • FULLD обозначает сетевое полнодуплексное соединение.
  • 100M обозначает сетевое соединение со скоростью 10мбит/сек.
  • RX мигает при приеме экраном данных.
  • TX мигает при отправке данных экраном.
  • COLL мигает при обнаружении сетевых конфликтов.

Кроме этих имеются еще пара светодиодов на гнезде rj 45, один из которых при подключенном шнуре светится, а другой мерцает при поступлении данных.

Ehternet для Arduino Nano

Отдельного упоминания заслуживает модуль Arduino Nano Ethernet. Он выполнен в формфакторе, облегчающим подключение к плате Nano v 3.0, но обладает практически такими же возможностями, что и “обычный” вариант для Uno. В основе шилда лежит микросхема ENC28J60.

Шилд Ethernet Arduino Nano Shield

Модуль точно так же имеет разъем RJ-45, слот для SD и в некоторых модификациях тоже оснащен PoE контроллером.

NETAlarm

NETAlarmNETAlarmNETAlarm

Характеристики Устройства:
— 3 цифровых датчика DS18B20
— 2 аналоговых входа (0…3,3В)
— 4 дискретных входа
— два дискретных выхода (управляются программно (настраивается через Web-интерфейс) или вручную)
— web-интерфейс, позволяющий настроить все параметры устройства, в том числе сетевые, и алгоритм срабатывания на разные состояния датчиков.
— отправка данных демону Syslog на указанный сервер через указанный промежуток времени
— отправка сообщений по UDP протоколу на указанный сервер в случае превышения критических показаний датчиков (настраивается через Web-интерфейс).

Схема NETAlarm

Внимание! В схеме используется микросхема Atmega32A или Atmega32L.  Atmega32 не подойдет по напряжению питания. Печатная плата двусторонняя сторона 1:

Печатная плата двусторонняя сторона 1:

сторона 2:

Фьюзами нужно установить тактирование от внешнего источника и отключить JTAG. Все остальные по умолчанию.

Requirements

  • Hardware: This library only supports the ENC28J60 chip.
  • Hardware: Only AVR-based microcontrollers are supported, such as:
    • Arduino Uno
    • Arduino Mega
    • Arduino Leonardo
    • Arduino Nano/Pro/Fio/Pro-mini/LiliPad/Duemilanove
    • Any other Arduino clone using an AVR microcontroller should work
  • Hardware: Non-AVR boards are NOT currently supported (101/Zero/Due)

  • Hardware: Depending on the size of the buffer for packets, this library
    uses about 1k of Arduino RAM. Large strings and other global variables
    can easily push the limits of smaller microcontrollers.
  • Hardware: This library uses the SPI interface of the microcontroller,
    and will require at least one dedicated pin for CS, plus the SO, SI, and
    SCK pins of the SPI interface. An interrupt pin is not required.
  • Software: Any Arduino IDE >= 1.0.0 should be fine
Оцените статью:
Оставить комментарий