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

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

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

  • для обучения идеален 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 или аналогичных плат с большой памятью.

Arduino Library: UIPEthernet

After testing the previous two libraries, I ran into UIPEthernet, at this moment my absolute favorite.

You might see the example code below as more complicated, but that is mainly me to blame. I modified and existing example to make a quick “Hello World” for you.

Pros:

This library is a fully compatible drop-in replacement for the standard Ethernet Library found in your Arduino IDE, which makes it easy to adapt existing examples for use with either the Arduino Ethernet shield for use with the ENC28J60 Ethernet shield. One simply changes the two include lines (“ ” and “ “) in standard Ethernet examples to just one include line ““.

This library also has a complete implementation of the “print” function that works the same as the “print” function for “Serial”, keeping code simple and very easy to use.

Advanced features are available if needed, so “pro” Arduino users might enjoy this library as well.

Download:

UIPEthernet can be found on GitHub, is mentioned on the Arduino website, and optionally you can be downloaded from Tweaking4All.
I recommend getting the latest version from Github.

DOWNLOAD — UIPEthernet

Filename:  arduino-uip.zip
Platform:  Undefined
Version:  1.01
Size:  102 kB
Date:  2014-03-23
Direct reference link:  https://www.tweaking4all.com/downloads/arduino-uip.zip
 Download Now 
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 #include <UIPEthernet.h> // Used for Ethernet// **** ETHERNET SETTING ****
byte mac = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };                                      
IPAddress ip(192, 168, 1, 179);                        
EthernetServer server(80);void setup() {
  Serial.begin(9600);
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print(«IP Address: «);
  Serial.println(Ethernet.localIP());}void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client)
  {  
    Serial.println(«-> New Connection»);
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();
        // if you’ve gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == ‘\n’ && currentLineIsBlank)
        {
          client.println(«<html><title>Hello World!</title><body><h3>Hello World!</h3></body>»);
          break;
        }
        if (c == ‘\n’) {
          // you’re starting a new line
          currentLineIsBlank = true;
        }
        else if (c != ‘\r’)
        {
          // you’ve gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(10);
    // close the connection:
    client.stop();
    Serial.println(»   Disconnected\n»);
  }}

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

Миниатюрные системы для сетевого доступа и беспроводной доступ по GSM

Шилд W5100 довольно громоздкий, и в связке с миниатюрными pro mini и nano выглядит нелепо, да и далеко не всегда нужна на шилде карта памяти.

Вы можете обратить свое внимание на модель arduino Ethernet модуля W5500, тоже на базе чипа WIZnet, как и предыдущий вариант

Связь с микроконтроллером осуществляется по тому же SPI интерфейсу, а сам чип построен на Cortex M0. Чип W5500 меньше греется и имеет большую мощность, нежели у W5100 (значительно сильнее грелся).

В отличие от младших чипов, добавлен режим параллельной 8 битной шины. Но и ток потребления 160 мА при работе на полной скорости – 100 м/бит.

Другой вариант миниатюрного шилда – это arduino enc28j60. Главное его преимущество – это то, что он дешевле в 2-3 раза, чем W5500, например.

Я сделал акцент на том, что это главное преимущество, потому что в целом, если есть возможность, лучше использовать W5500, т. к. на них в сети больше информации по работе и настройке, а также есть различные проекты.

28J60 отлично подойдёт для интернета, для простейших мелких задач, типа Ethernet термометра. Микросхема произведена компанией Microchip, работает по тому же SPI интерфейсу, что и предыдущие. Библиотеки для работы с ней отлично подходят для Ардуино на 168/328 ATmega, в их числе Uno, Nano, Pro Mini. Для Mega нужно правильно назначить пины.

Но еще более интересный вопрос – это беспроводная связь с Ардуино. Это стало возможно благодаря GSM модулям, а с помощью w5500 вы можете осуществлять связь только по сети. В шилд или модуль для Ардуино вставляешь sim-карту, и вы можете управлять своей автоматизацией с помощью SMS или вызова.

Рассмотрим модуль Neoway M590E, рассчитанный на два диапазона (900/1800 мГц) – голосовую связь он не поддерживает. Работает в сети GPRS с максимальной скоростью в 48 кбит/с, способен принимать и передавать SMS сообщения. Модуль стоит около 1-2х долларов. Для своей цены он более чем универсален.

Этого набора функций достаточно как для мониторинга чего-либо, так и для управления умным домом на расстоянии, но о сферах применения будет расписано позже.

Питание M590E может осуществляться от li-ion аккумулятора или любого другого источника на 3,3 — 4,8 В с током порядка 1 ампера (номинальным 0.6 А).

Как работает Ethernet

Подразумевается, что для проектов, связанных с подключением Arduino к сети вы должны обладать хотя бы общими знаниями в области сетевых  технологий. Сегодня можно без труда найти соответствующие материалы в интернете. Хотя мы не ставим себе целью написать учебник по Ethernet, но общие сведения могут оказаться полезными.

Сегодня Ethernet – ключевая и наиболее распространенная наряду с WiFi технология организации локальных сетей. В стандартной модели OSI она находится на канальном и физическом уровне, определяя подуровни управления доступом к среде и управления логическим каналом. Создателем Ethernet стала компания Xerox, ее инженер Роберт Метклаф создал технологию как инструмент подключения многих компьютеров к общим ресурсам в локальной сети. Официальным стандартом технология стала в 1982 году после появления спецификации IEEE802.3.

Сегодня существует несколько вариантов и модификаций Ethernet, отличающихся скоростными характеристиками и способом организации физического канала:

  • Ethernet. Скорость до 10Mb/s. Любые типы проводов (коаксиал, витая пара, оптоволокно).
  • Fast Ethernet. Скорость до 100Mb/s. Только витая пара или оптика.
  • Gigabit Ethernet. Скорость до 1Gb/s. . Только витая пара и оптика.
  • 10G Ethernet. Скорость до 10Gb/s. Естественно, тоже без коаксиала.

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

Возможная схема Ethernet-сети

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

Если вы начинаете проект с Ethernet, то вам нужно будет понимать следующие базовые понятия, имеющие отношение к этой технологии:

  • Кабель. Как правило, это витая пара, реже – оптоволокно (ее подключить к арудино простым способом не получится).
  • Разъемом для подключения кабеля – RJ-45. На самом деле, стандарт для штекеров носит совсем другое название (8P8C), но “в народе” принято называть стандартный Ethernet разъем именно как RJ45. Следует отметить, что есть и другие стандарты – RJ-25, RJ-14 и т.п. Для подключения к ардуино через стандартные модули они не подойдут.
  • Сетевой Ethernet MAC-адрес. Это уникальный шестибайтовый идентификатор устройства в сети, который обычно прошивается в само устройство, но в некоторых случаях может быть изменен программно. Всего может быть задано 2 в 48 степени адресов, это триллионы разных вариантов (точнее, 281 474 976 710 656), так что пока их с головой хватает для создания действительно уникальных идентификаторов.

В подавляющем большинстве задач проект с Ардуино будет подключен к уже существующей Ethernet сети через стандартное оборудование. Т.е. вы просто берете модуль Ethernet, подключаете его к Ардуино, а затем вставляете сетевой кабель в этот самый модуль.  Все, что вам понадобится – правильно настроить в своем скетче ваш MAC адрес (его можно менять!) и прописать IP адрес устройств, к которым вы будете подключаться. Мы рассмотрим пример в разделе, посвященным программированию.

Сфера применения и проекты с сетевыми шилдами

Ардуино – одна из самых дешевых основ для проекта умного дома. Кроме домашнего облака и доступа к файлам можно реализовать удаленное управление исполнительными механизмами любых типов.

К таким проектам можно отнести и другую автоматизацию, например, управление поливом, освещением и проветриванием в теплице.

Одно дело, когда вы находитесь в непосредственной близости к управляемой системе, но что делать, если ваша теплица находится на участке загородного дома?

Если есть интернет связь за городом – Ethernet технологии придут на помощь, на фото ниже вы видите окно HTML страницы, находящейся на сервере на базе W5500.

В таком виде представлено управление группой из 4-х реле с отслеживанием их активности, по нажатию кнопки refresh.

А подключается всё по такой схеме:

Это на примере модуля w5500. Схема не сложная, но функциональная – вы можете сделать вот такую мульти задачную реле-станцию.

Только использовать вместо MEGA младшие платы Ардуино.

Что касается мобильной передачи данных, то M590E предназначен для так называемых M2M приложений.

С Ардуино он может взаимодействовать и передавать как сообщения от неё в виде SMS, так и команды к микроконтроллеру после принятия сообщения от вас. Команды очень просты, например:

AT+CMGS=»+79123456789″;

Команда выше отправит СМС на указанный номер, точка с запятой обязательны.

Это незаменимо в проектировании охранных комплексов и устройств.

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

Веб-сервер на Ардуино

Как уже понятно, для связи Ардуино по LAN сети нужна специальная плата расширения.

Так выглядит шилд Ethernet Shield w5100:

Работа с этим сетевым шилдом проще всего осуществляется с платы Arduino UNO R3. Безусловно, вы можете использовать её и с другими платами, на фото изображено подключение на примере самой распространённой версии. При использовании с другими вариантами, например, Nano нужно соединить соответствующие выводы на плате и шилде с помощью перемычек.

Ардуино выступает в роли сервера, поэтому нужно обеспечить подключение к сети, для этого используется Ethernet кабель. Сразу стоит отметить, что при подключении витой пары, кабеля RJ-45, непосредственно к плате, а не через роутер, вы должны использовать вариант обжимки «Crossover».

Работает плата расширения на скоростях 10 или 100 мбит/с, при работе на высшей скорости вы можете видеть уведомление – об этом сигнализирует светодиод «100M». Он расположен ниже сетевого разъёма.

На шилде расположен слот для SD-карты – вы можете получить доступ к данным через сеть. Таким образом, вы получите домашнее облако на Arduino.

С картой памяти микроконтроллер работает по той же SPI шине, что и с шилдом. Определите, какие выводы на вашей плате работают с этим интерфейсом, и не забудьте о том, что их нельзя задействовать при разработке вашей умной системы. Например, для платы Arduino Mega выводы: 50, 51, 52, а для Duemilanove: 12, 12, 13.

Модуль может вызывать прерывания в Ардуино. Это нужно для уведомления микроконтроллера о разного рода событиях, что очень полезно.

Getting the Right Library

Since I randomly picked this particular model, I had to find out the hard way that things do not seem all that easy, since it’s not compatible with the Arduino “Ethernet” library that comes with your Arduino IDE. And then I’m not even mentioning the lack of good info to determine what pins are to be used, so I had to figure that out by myself.

In the next paragraphs you’ll find my experiences with three Arduino libraries. They all work great!

is great for projects that require “print” to be fully implemented and need to be a drop-in replacement for the standard “Ethernet” library. is great for it’s simplicity and small size, but comes with limitations. seems best for very advanced users, but I’m sure UIPEthernet can match it’s capabilities.

I’ve included a “Hello World!” example for all three, which could use some optimizing, where the “Hello World!” message can be viewed in your webbrowser.

Before we begin: Libraries and Pins

 We will aways need power so we will always need GND and +3.3V or  +5V pin. For my eBay module I had to use the +5V (it has a voltage regulator onboard to handle that), as the 3.3V pin didn’t seem to work.

Below a table, based on a Arduino Uno, Arduino Nano and my eBay Ethernet module, with the needed pins for the three libraries I tested.
As you can see, all of them use the standard SPI pins 10, 11, 12 and 13. Except Ethercard, that seems to use pin 8 for SS, instead of the “standard” pin 10.

ENC28J60 Pins and Libraries
Pin name ETHER_28J60 Ethercard UIPEthernet My eBay Module
 SS  10  8 (!)  10  10
 MOSI (SI)  11  11  11  11
 MISO (SO)  12  12  12  12
 SCK  13  13  13  13

The Ethernet Controller (ENC28J60) is a so called SPI device and uses the SPI pins (10, 11, 12, 13) of your Arduino.

SS stands for Slave Select, used to enable or disable the slave device (the Ethernet module in this case).MOSI stands for Master Output Slave Input, or in other words: Arduino OUTPUT (data from Arduino to Ethernet Controller).MISO stands for the opposite, Master Input Slave Output, or: Arduino INPUT (data from Ethernet Controller to Arduino).SCK is the clock used for SPI timing.

The pins described here will have the “Pin name” usually printed on your Ethernet Module. My eBay module however is fully geared towards the Arduino Nano that came with it and has NO SUCH PIN NAMES for the Ethernet controller, just the pin names of the Arduino pins. Hence the extra column for those who buy the same Ethernet Module, showing the pin number.

To illustrate this, below an illustration of the “Nano Ethernet Shield” by “Deek-Robot” that I purchased from eBay.

My eBay Ethernet module (Deek Robot Nano Ethershield)

My Arduino with ENC28J60 – A wiring example

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);

NETAlarm

NETAlarmNETAlarmNETAlarm

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

Схема NETAlarm

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

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

сторона 2:

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

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

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

EtherShieldETHER 28J60

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

Папка etherShield

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

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

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

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

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

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

Файл ETHER_28J60.срр

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

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

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

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

Arduino Library: EtherCard

This library seems a very well respected in the Arduino community and with good reason. It seems one of the most complete implementations out there.

The code below might look a little bit more complicated, but that’s mainly because of the added HTML.

CAUTION: Ethercard seems to use pin 8 instead of pin 10!

Pros:

Definitely a big plus for this library is that complex tasks like DHCP and such are easy to use, and offers easy accessible advanced features. Definitely excellent for the pro Arduino users.

Cons:

A big downside (again) is the lack of a simple to use “print” function to sent data, and I’m fully aware that me bitching about it is based on my own limited experience with working with strings and char arrays etc., but I can imagine that I’m not the only one.

Ethercard is, like UIPEthernet, not the smallest library.

Download:

EtherCard can be found at GitHub and on their project page or you can download it from Tweaking4All.
Again: I recommend getting the latest and greatest version from Github.

DOWNLOAD — Ethercard

Filename:  ethercard.zip
Platform:  Undefined
Version: 
Size:  116.3 kB
Date:  2017-02-25
Direct reference link:  https://www.tweaking4all.com/downloads/ethercard.zip
 Download Now 

Note: Source has been updated to accommodate the newer Arduine IDE version (line 10, added “const”).

12345678910111213141516171819202122232425262728293031323334353637383940414243 #include <EtherCard.h>// Ethernet IP, default gateway and MAC addressesstatic byte myip = { 192,168,1,200 };static byte gwip = { 192,168,1,1 };static byte mymac = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
byte Ethernet::buffer500; // tcp/ip send and receive bufferconst char page PROGMEM =»HTTP/1.0 503 Service Unavailable\r\n»»Content-Type: text/html\r\n»»Retry-After: 600\r\n»»\r\n»»<html>»
  «<head><title>»
    «Hello World!»
  «</title></head>»
  «<body>»
    «<h3>Hello World! This is your Arduino speaking!</h3>»
  «</body>»»</html>»;void setup(){
  Serial.begin(57600);
  Serial.println(«\n»);
  if (ether.begin(sizeof Ethernet::buffer, mymac) == )
    Serial.println( «Failed to access Ethernet controller»);
  ether.staticSetup(myip, gwip);
  ether.printIp(«IP:  «, ether.myip);
  ether.printIp(«GW:  «, ether.gwip);  
  ether.printIp(«DNS: «, ether.dnsip);  }void loop(){
  // wait for an incoming TCP packet, but ignore its contents
  if (ether.packetLoop(ether.packetReceive())) {
    memcpy_P(ether.tcpOffset(), page, sizeof page);
    ether.httpServerReply(sizeof page — 1);
  }}

Подключение модуля 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector